在W3C RDF 1.1 N-Triples文档中,用于非文字主题/对象/谓词的IRIREF生成几乎被定义为尖括号(<>)[1]内的字符串,即使它& #39; s称为IRI。
这就是为什么一些示例文件[2]具有简单标识符,而其他解析器(如RDFLib)如果标识符不是带有scheme:section的有效IRI则会抛出异常?尽管RDF规范中使用了术语,但是具有非文字的非文字的RDF文件仍然是有效的IRI吗?
[1] https://www.w3.org/TR/n-triples/#grammar-production-IRIREF
[2] https://github.com/cayleygraph/cayley/blob/master/data/testdata.nq
答案 0 :(得分:2)
这就是为什么一些示例文件具有简单标识符,而其他解析器(如RDFLib)如果标识符不是带有scheme的部分的有效IRI,则抛出异常?
没有。您指向的示例文件严格来说不是语法正确的N-Triples。实际上它根本不是N-Triples,而是N-Quads - 一种不同的语法格式。但即使它是N-Triples,以这种形式出现IRI也是不正确的。
N-Triples建议说" IRI可能只能写成绝对IRI" (参见section 2.2) - 在RFC 3987中语法定义的绝对IRI。这是规范性的,即使语法生成本身不强制执行它。
但是,您在该示例文件中看到的IRI可以被解释为相对IRI引用,并且一些N-Triples解析器已经稍微扩展以允许使用基本IRI 解除对相对IRI的引用。这可能就是为什么你有时会在野外看到这些语法上不正确的N-Triples文件的原因。它是格式的非标准扩展。
尽管RDF规范中使用了术语,但具有非文字的非文字的RDF文件仍然是有效的IRI吗?
这取决于您使用的语法格式。格式良好是特定具体语法中文档的属性,N-Triples的规则与Turtle或RDF / XML的规则不同。
RDF本身在其抽象语法中强制IRI符合RFC3987和绝对,因此任何RDF文档在处理时会产生未解析的相对IRI,或者不符合RFC的IRI,如果可能不是非正常的,当然无效。
一些具体的语法格式(如RDF / XML,TriG,Turtle等)为IRI提供了不同的简写机制(前缀名称,相对IRI +基本IRI等)。但是,正如我们上面所看到的,N-Triples没有内置的这种速记机制,因此任何非绝对的IRI都会使文档不正确。