我很难理解来自w3.org的段落。令人困惑的段落可能是一个错误,或者我可能只是感到困惑。
以下是Section 6.6 of the RDF Concepts Specification,
6.6空白节点
RDF图中的空白节点是从无限集中绘制的。这组空白节点,所有RDF URI引用的集合和所有文字的集合是成对不相交的。
否则,这组空白节点是任意的。
RDF不引用任何空白节点的内部结构。给定两个空白节点,可以确定它们是否相同。
所以,我感到困惑的是:如果没有办法知道“空白笔记的内部结构”,怎么能分辨出来呢?这是一个错字吗?
答案 0 :(得分:3)
这不是一个错字,我同意,这不是直截了当的理解。这也是一个经常出现的问题。存在空白节点,因为有时无法创建表示节点的URI。例如,在构造约束时,这种情况一直发生在OWL中。
通常在解析RDF文件时创建空白节点ID,并且它必须是唯一的。因此,根据定义,您不应找到具有相同标识符的两个空白节点。区分两个空白节点的一种方法是查看所有传入/传出的谓词及其对象/主题,以查看连接的子图是否相同。这很难实现,计算大型图表可能非常昂贵。
这个问题已经被广泛讨论,结合发现RDF图之间的差异。一篇非常有趣的文章是TimBL的设计问题之一Delta: an ontology for the distribution of differences between RDF graphs。另请查看How to diff RDF graphs wiki from the w3c。
如果您是数据发布者,那么尽量避免使用空白节点。如果您需要空白节点,那么尝试使用哈希函数为您提供不同空白节点构造的唯一ID,使得具有相同图形结构的两个不同空白节点具有相同的ID,因此您可以将它们放入APPART。
答案 1 :(得分:1)
请注意,2014年2月标准化的RDF 1.1会略微编辑此文:
空白节点与IRI和文字不相交。否则,可能的空白节点集是任意的。 RDF不引用任何空白节点的内部结构。
并添加有关空白节点标识符的说明:
注意: 空节点标识符是在一些具体RDF语法或RDF存储实现中使用的本地标识符。它们始终本地作用于文件或RDF存储,并且不是空节点的持久性或可移植标识符。空节点标识符不是RDF抽象语法的一部分,但完全取决于具体的语法或实现。因此,对空白节点标识符的语法限制(如果有的话)也取决于具体的RDF语法或实现。在具体语法中处理空白节点标识符的实现需要注意不要从同一空白节点标识符的多次出现创建相同的空白节点,除非语法支持这种情况。
还有一个新的规范推荐a skolemisation scheme for blank node management。
无论如何,你说:
无法知道“空白节点的内部结构”
但这不是规范所说的。规范只是说它没有定义这种方式,这意味着实施者有责任决定他们想要如何在内部表示和识别空白节点。但我同意2004年规范的措辞令人困惑。