在 RDF 代码中使用 rdfs:Datatype 的必要性

Necessity of using rdfs:Datatype in RDF code

教科书中(语义网开发人员指南 by Yu, Liyang), 在第 143 页,它表明,“它总是有用的 明确声明给定的 URI 代表一种数据类型,如下所示:”。然后显示以下代码:

<rdf:Property
    rdf:about1⁄4"http://www.liyangyu.com/camera#model">
<rdfs:domain rdf:resource="#Camera"/>
<rdfs:range
    rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</rdf:Property>
<rdfs:Datatype
    rdf:about="http://www.w3.org/2001/XMLSchema#string"/>

我不明白最后两行的必要性。据我所知,XMLSchema#string 适用于任何字符串。正如所划定的 hererdfs:Datatype 是 "the class of datatypes".

如果不使用最后两行,我们会失去什么?

所有原始类型differ, though reasoners may or might think以相反的方式。

所有原始类型的超类型 (⊆) 是 rdfs:Literal,不要与 rdf:PlainLiteral 混淆,它类似于 xsd:anySimpleType.

所有原始类型的类型(∈)为rdfs:Datatype.

在上一版(2011年)里,余立阳在你引用的那段话之后写道:

The next example will show that using rdfs:Datatype is not only a good practice, but also necessary in some cases.

我相信,2014年版没有排除这个例子。

最后两行好像没什么用。这些行表示 xsd:string 是一种数据类型。要么 RDF 引擎已经知道 xsd:string 是一种数据类型并且可以处理这种类型的文字(这是大多数 RDF 引擎的情况并且无论如何都是 RDF 1.1 所要求的),要么它不知道,在这种情况下知道它是一种数据类型并没有真正帮助,因为它不足以确定哪些词法形式有效以及值 space 是什么。

无论哪种方式,这两行都没有提供对任何应用程序感兴趣的进一步处理或蕴含有用的信息,据我所知。