【问题标题】:Arbitrary strings considered acceptable as references in RDF N-Triples?任意字符串在 RDF N-Triples 中被认为是可接受的引用?
【发布时间】:2016-11-30 08:47:44
【问题描述】:
【问题讨论】:
标签:
rdf
n-triples
n-quads
【解决方案1】:
这就是为什么某些示例文件具有简单标识符而其他解析器(如 RDFLib)如果标识符不是具有方案的有效 IRI 时会抛出异常:部分?
没有。您指向的示例文件严格来说在语法上不正确的 N-Triples。事实上,它根本不是 N-Triples,而是 N-Quads - 一种不同的语法格式。但即使是 N-Triples,这种形式的 IRI 也是不正确的。
N-Triples 建议说“IRI 只能写为绝对 IRI”(请参阅 section 2.2) - 绝对 IRI 在 RFC 3987 中的语法定义。这是规范性的,即使语法产生本身没有强制执行它。
但是,您在该示例文件中看到的 IRI 可能会被解释为相对 IRI 引用,并且一些 N-Triples 解析器已进行了一定程度的扩展,以允许使用 基本 IRI 取消引用相对 IRI。这可能就是为什么您有时会在野外看到这些语法不正确的 N-Triples 文件的原因。这是格式的非标准扩展。
尽管 RDF 规范中使用了术语,但包含无效 IRI 的非文字的 RDF 文件是否仍然格式正确?
这取决于您使用的语法格式。格式良好是文档在特定具体语法中的属性,N-Triples 的规则与 Turtle 或 RDF/XML 的规则不同。
RDF 本身在其抽象语法中强制 IRI 符合 RFC3987 和绝对值,因此任何 RDF 文档在处理时会产生未解析的相对 IRI,或不符合 RFC 的 IRI,如果可能不是非格式良好的,肯定无效。
一些具体的语法格式(例如 RDF/XML、TriG、Turtle 等)为 IRI 提供了不同的速记机制(前缀名称、相对 IRI + 基本 IRI 等)。然而,正如我们在上面看到的,N-Triples 没有内置这样的速记机制,因此任何非绝对的 IRI 都会使文档格式不正确。