Sparql RDFS蕴涵机制中的不一致性

Sparql RDFS蕴涵机制中的不一致性,sparql,rdf,semantic-web,rdfs,Sparql,Rdf,Semantic Web,Rdfs,for的文档断言有可能生成不一致的图形,而且不一致的原因只有一个:rdf:XMLLiteral: ex:a ex:b”SPARQL 1.1蕴涵制度于2013年3月标准化,基于2004年标准(我将其称为RDF 1.0)。在RDF 1.0中,RDFS蕴涵不强制将数据类型URI解释为数据类型,但它为RDF:XMLLiteral和具有此数据类型URI的文本分配特殊语义。其他文本不以任何方式受其数据类型URI的约束,因此,例如xsd:boolean,不会影响RDFS蕴涵中的一致性。事实上,这种一致性延续到

for的文档断言有可能生成不一致的图形,而且不一致的原因只有一个:
rdf:XMLLiteral


ex:a ex:b”SPARQL 1.1蕴涵制度于2013年3月标准化,基于2004年标准(我将其称为RDF 1.0)。在RDF 1.0中,RDFS蕴涵不强制将数据类型URI解释为数据类型,但它为
RDF:XMLLiteral
和具有此数据类型URI的文本分配特殊语义。其他文本不以任何方式受其数据类型URI的约束,因此,例如
xsd:boolean
,不会影响RDFS蕴涵中的一致性。事实上,这种一致性延续到RDFS蕴涵

<> P>为了查找由于数据类型而导致的其他不一致性,您必须考虑另一种蕴涵机制,如D蕴涵或OWL。在RDF 1中,定义为RDFS的扩展,因此在RDFS中没有“验证公共数据类型”。这应该回答您的第二个问题。
此外,
“由于RDF 1.1,我理解RDF:XMLLiteral是非规范性的。”请注意,RDF 1.1晚于SPARQL 1.1。@是的,这就是为什么我认为它不再(或不应该)是一个问题。有趣。因此,如果我理解正确的话,RDF1.0蕴涵的图形永远不会不一致(因为类型错误的文字可能意味着什么),而RDF1.1蕴涵的图形只会因为类型错误的
xsd:string
而不一致,因为它不能意味着什么?我的印象是RDF1.1变得更加自由,而不是更少。此外,字符串似乎是无效的,只是因为它们不能用XML编码,但我认为
rdf:langString
或任何其他数据类型也可以属于这一类别。
“\u0000”@en
有效吗?RDF1.1说,
RDF:langString
没有类型错误的文本。啊,我现在得到了一个明显的原因:
xsd:string
取自XML模式,它引用XML 1.0
Char
产品。我想知道控制字符现在;这些在XML1.0中是不允许的,但在XML1.1中允许作为实体。但是,XMLSchema1.1选择了定义的XML版本实现。我想接下来的问题是
“\u0001”^^xsd:string
是否键入错误。RDF1.1语义在该节中显然是错误的,因为“这样的字符串不能用XML兼容的表面语法编写。”只有当XML引用XML 1.0时才是正确的。它是在XSD1.1之后2年编写的!我发现这对于与通用编程语言的互操作性来说是一个很大的问题,因为RDF1.1要求每个文本都必须有一个数据类型,
xsd:string
是默认的。我曾希望这会“拯救”我,但它的价值空间也受到XML1.0
Char
的限制。看起来,
“\u0000”@und
是用这样的文字走私的唯一方式(尽管它反过来会屠杀BCP 47)。希望任何Unicode字符串都是有效的。IS4,你在评论中的问题在评论中回答起来有点复杂。我不会说RDF1.1比RDF1.0更自由。有些蕴涵在RDF1.0中是正确的,但在RDF1.1中无效,反之亦然。此外,您可以看到的问题是与大多数用例无关的角落案例,或者可以通过以合理的方式稍微偏离标准来解决而不会引起问题。有些标准没有得到严格遵守,因为在具体实现中,角落案例太少,不会成为问题,而且大多数情况下,这是可以的。
ex:a ex:b "<"^^rdf:XMLLiteral .
ex:b rdfs:range rdf:XMLLiteral .
<s>  <p>  "\u0000"^^xsd:string .