一个RDF三元组是一个RDF语句吗?

9
作为问题的主题,这两个东西是一样的吗?它们可以互换使用吗?如果不是,请用一个例子解释它们之间的区别或提供澄清。
3个回答

9

引用自RDF概念规范(RDF 1.1草案版)

抽象语法的核心结构是三元组集合,每个三元组由主语、谓语和宾语组成。... RDF三元组的断言表明,由谓语指示的某种关系存在于由主语和宾语表示的资源之间。对应于RDF三元组的这种陈述称为RDF语句。

换句话说:由主语、谓语和宾语组成的抽象结构称为“三元组”。三元组由IRI、空白节点和/或文字组成。每个三元组表达了关于世界的某种主张或事实——它表明两件事物之间存在某种关系。这个关于世界的主张是编码在三元组中的“语句”。

因此,严格来说有区别。但这是一个非常微妙的区别,通常这些术语可以互换使用。


7
在RDF中,一个“statement”基本上与一个“triple”(或“3-tuple”)是相同的。
然而,在“statement”的表述中,还有另一个概念,需要考虑一个三元组可以由不同实体(如人/组织,而不是XML实体)陈述的事实。在这种情况下,三元组(主语,谓语,宾语)并不唯一,应该根据陈述者的不同而描述得不同。
整个主题有些令人费解。我建议阅读这篇来自RDF兴趣邮件列表的讨论summary of a thread from the RDF Interest mailing list(准备好零食)。这归结为对RDF本身的语义描述。
总之,一切都取决于您所说的“triple”的含义。无论它是一个抽象的概念还是实际的表述。如果是前者,我认为可以安全地假设“triple”和“statement”是可互换的。而且大多数情况下,在使用RDF时,确实是这种情况。

2
请注意,“stating”不是RDF规范中定义的官方术语,也不常用。处理三元组的源的最常见方法是给源分配一个IRI,将其作为第四个元素添加到三元组中(通常称为“上下文”或“图形”),从而将其变成“四元组”。 - cygri
1
@cygri:这第四个元素能否在RDF序列化中(如Turtle等)被表述? - unor
2
@unor,不是在Turtle中,但有几种支持它的替代序列化格式,例如TriG、TriX和N-Quads。 - Jeen Broekstra

3

曾经在Jena邮件列表上遇到过一个问题,当我在研究Jena Java代码中的语句与三元组区别(或类比节点与RDFNode区别)时,写了一篇博客。这里是来自邮件列表的要点摘录

我们发现Model/Statement/RDFNode(API)作为应用程序接口工作得很好,但对于存储抽象来说并不是正确的选择,Graph/Triple/Node(SPI)在规则性更有价值的情况下工作得更好。也就是说,我们将面向应用程序的设计与子系统面向的设计分开了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接