RDFS 蕴含制度不一致

Inconsistency in RDFS entailment regime

SPARQL 1.1 Entailment Regimes 的文档声称可以生成不一致的图形,此外还有一个 单一 不一致来源:rdf:XMLLiteral

ex:a ex:b "<"^^rdf:XMLLiteral .
ex:b rdfs:range rdf:XMLLiteral .

原因是 < 不是有效的 XML 片段,因此 "<"^^rdf:XMLLiteral 必须被解释为不在 rdfs:Literal 中的东西(显然)。这似乎有些武断和复杂,所以我有以下问题:

SPARQL 1.1 蕴含制度于 2013 年 3 月标准化,基于 RDF Semantics from the 2004 standard (which I will refer to as RDF 1.0). In RDF 1.0, RDFS entailment does not impose that datatype URIs are interpreted as datatypes, but it assigns a special semantics to rdf:XMLLiteral and literals that have this datatype URI. Other literals are not constrained in any ways by their datatype URIs, therefore xsd:boolean, for instance, doesn't influence the consistency in RDFS entailment. In fact, RDF entailment imposes the special treatment of rdf:XMLLiteral,它延续到 RDFS 蕴含。

为了找到由于数据类型引起的额外不一致,您必须考虑另一种蕴含机制,例如 D-entailment 或 OWL。在 RDF 1.0 中,D-entailment 被定义为 RDFS 的扩展,因此 RDFS 中没有“validating common datatypes”。 这应该可以回答您的第二个问题。

此外,"<"^^rdf:XMLLiteral 是一个错误类型的 XML 文字,因此它不能被解释为一个 XML 值,并且由于对 RDF 蕴含的约束,它的解释不能是 rdf:XMLLiteral 类型,更正式地说,是对 (IL("<"^^rdf:XMLLiteral),IS(rdf:XMLLiteral)),由字面值 "<"^^rdf:XMLLiteral 和URI rdf:XMLLiteral 的解释不能在 属性 rdf:type 的扩展 IEXT(IS(rdf:type)) 中。此外,错误类型的 XML 文字不得等于任何文字值,这必然包括普通文字值(UNICODE 字符串和语言标记字符串),因此它不能表示字符串 "<"。原因是我们不希望错误类型的文字与某些格式正确的文字表示相同的值。 这应该可以回答您的第一个问题。

2014年RDF 1.1 was standardised with an updated semantics. D-entailment is no longer an extension of RDFS entailment. It is the other way around: RDFS entailment is defined with respect to a set D of recognized datatype IRIs。这意味着 RDFS 蕴涵不再是一个单一的蕴涵机制,而是一个蕴涵机制家族,由 D 参数化。在最简单的例子中,RDFS 蕴涵必须只识别 xsd:stringrdf:langString,这意味着有仍然可以不一致,因为并非所有 UNICODE 字符串都是有效的 XSD 字符串。此外,RDF 1.1 更改了错误类型文字的解释。在 RDF 1.1 语义中,错误类型的文字不表示任何内容。这意味着您甚至不能谈论它们。只要 RDF 图中存在错误类型的文字,该图就会不一致。因此:

<s>  <p>  "\u0000"^^xsd:string .

在 RDFS 1.1 蕴含制度中不一致。 这应该可以回答您的第三个问题。

关于你最后一个问题,我不知道。但是,我非常有信心地相信,无论是 2004 版还是 2014 版,现有工具都无法正确且完全地实现 RDFS 蕴含。