是否有语法来定义Turtle RDF中匿名节点之间的循环引用?

Thi*_*and 10 syntax rdf turtle-rdf blank-nodes

我正在寻找一种用于调用匿名节点的乌龟语法,该匿名节点调用另一个匿名节点.

例如,我想重现这段代码:

:Instance0 a Class0;
    :property0 :Instance1.

:Instance1 a Class1;
    :property1 :Instance2.

:Instance2 a Class2;
    :property2 :Instance1.
Run Code Online (Sandbox Code Playgroud)

有类似的东西:

:Instance0 a Class0;
    :property0 [
        a Class1;
        :property1 [
            a Class2;
            :property2 [
                ## The syntax to call the parent, the instance of :Class1
            ];
        ];
    ].
Run Code Online (Sandbox Code Playgroud)

为此目的有没有龟语法?

Ale*_*lex 6

RDF的数据模型是基于图形的,而不是分层的,因此资源之间没有父/子关系的概念,因此在将匿名资源描述与[]构造嵌套时,没有内置语法来引用"父"节点(这实际上是只是语法糖,用于将一堆三元组分享在一起共享相同的匿名主题).

话虽这么说,Turtle的语法能够序列化每个符合标准的RDF图.要实现您描述的图形结构,必须使用_:语法而不是更紧凑的[]语法来定义匿名节点.

必须使用_:语法手动分配空白节点标签而不是使用[]便捷语法的情况包括:

  • 涉及多个匿名节点的图表中的循环.
  • 多个三元组具有与对象相同的匿名节点.

_:语法允许手动分配节点识别符,这将允许用户从任意三重的主题或对象的位置指的是空节点.您分配的节点标识符在其出现的Turtle文档的上下文之外没有任何意义,因此不必全局唯一.以这种方式识别的节点仍然是匿名的,因为它们不能被全局引用.然而,同样的空白节点标签的每次出现同一文档是指在相同的资源,那么该文件的作者负责同一文档中分配空白节点标签和跟踪它们的用法.

那么,您的文档看起来像:

:Instance0 a Class0;
    :property0 _:instance1.

_:instance1 a Class1;
    :property1 [
        a Class2;
        :property2 _:instance1;
    ].
Run Code Online (Sandbox Code Playgroud)

2.6 RDF空白节点RDF 1.1龟,简洁RDF三元语言的更多细节.

  • 是的 - "instance1"标签在Turtle文档本身之外没有任何意义,但文档的编写者负责分配空白节点标签并跟踪它们的使用情况.RDF不是分层数据模型,因此没有"父"资源的概念. (3认同)
  • 但最后我不得不手动定义一个空白节点名称`_:instance1`来引用它,即使它是"父"实例.好. (2认同)