3

在 W3C RDF 1.1 N-Triples 文档中,用于非文字主语/宾语/谓词的 IRIREF 产生式几乎被定义为尖括号 (<>) [1] 内的字符串,尽管它被称为 IRI。

这就是为什么某些示例文件 [2] 具有简单的标识符,而其他解析器(例如 RDFLib)如果标识符不是具有 scheme: 部分的有效 IRI 会抛出异常的原因吗?尽管 RDF 规范中使用了术语,但具有不是有效 IRI 的非文字的 RDF 文件是否仍然格式正确?

[1] https://www.w3.org/TR/n-triples/#grammar-production-IRIREF

[2] https://github.com/cayleygraph/cayley/blob/master/data/testdata.nq

4

1 回答 1

3

这就是为什么某些示例文件具有简单的标识符而其他解析器(例如 RDFLib)如果标识符不是具有 scheme: 部分的有效 IRI 将引发异常的原因吗?

不,您指向的示例文件严格来说在语法上不是正确的 N-Triples。事实上,它根本不是 N-Triples,而是N-Quads——一种不同的语法格式。但即使是 N-Triples,以这种形式使用 IRI 也是不正确的。

N-Triples 建议说“IRI 只能写成绝对 IRI”(参见第 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 都会使文档格式不正确。

于 2016-07-27T00:27:25.840 回答