我越过books ontology,在owl文档的底部,我们有:
<!-- Object Properties -->
<owl:ObjectProperty rdf:about="#contains"/>
<owl:ObjectProperty rdf:about="#datePublished"/>
<owl:ObjectProperty rdf:about="#hasGenre"/>
<owl:ObjectProperty rdf:about="#hasGrade"/>
<owl:ObjectProperty rdf:about="#hasName"/>
<owl:ObjectProperty rdf:about="#hasSize"/>
<owl:ObjectProperty rdf:about="#hasType"/>
<owl:ObjectProperty rdf:about="#isTitled"/>
<owl:ObjectProperty rdf:about="#publishedBy"/>
<owl:ObjectProperty rdf:about="#timePublished"/>
<owl:ObjectProperty rdf:about="#writtenBy"/>
<owl:ObjectProperty rdf:ID="isReserved">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>A reservation has been made by a person for a book.</rdfs:comment>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="isNotReserved">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>The given book is available in the library.</rdfs:comment>
</owl:ObjectProperty>
</rdf:RDF>
我无法理解为什么这个本体的作者选择在最后两个rdf:ID
(owl:ObjectProperty
和isReserved
)中使用isNotReserved
而不是只是像其他人一样使用rdf:about
?
ps :我完整阅读了RDF/XML part,其中指定了xml:base
和rdf:ID
的使用并检查了答案here,我只需要在上述要点中定义的本体语境中进一步澄清。
节点元素上的rdf:ID属性(不是属性元素,具有 另一种含义)可以用来代替rdf:about并给出一个亲戚 IRI相当于#与rdf:ID属性值连接。所以 例如,如果rdf:ID =&#34; name&#34;,那就相当于 的rdf:about =&#34;#名称&#34 ;. rdf:ID提供了额外的检查,因为相同 name只能在xml:base值的范围内出现一次(或 文档,如果没有给出,那么对定义一组是有用的 相对于同一IRI的不同的相关术语。
答案 0 :(得分:3)
我无法理解为什么这个本体的作者选择在最后两个owl中使用rdf:ID in:ObjectProperty(isReserved和isNotReserved)而不是仅使用rdf:about就像其余的一样?
这不重要。理想情况下,作者无论如何都不是手工操作RDF / XML,而是使用库来编写序列化。 rdf:ID和rdf:about属性实际上并不是RDF图的一部分;它们仅用于RDF的XML序列化,称为RDF / XML。工具不应该依赖于RDF / XML序列化的特定结构,因为可以以各种方式在RDF / XML中编写相同的RDF图。有关示例,请参阅this answer至How to access OWL documents using XPath in Java?。
例如,我下载了books.owl文件并使用Jena将其读入并以XML格式将其写回。我的新books.owl显示了结果。根本没有rdf:ID,但它完全相同的RDF图。 RDF处理工具看到完全相同的图形,即三元组的相同集合。使用rdf:ID的其中一个属性现在被序列化为
<owl:ObjectProperty rdf:about="http://127.0.0.1:3001/ontology/books.owl#isNotReserved">
<rdfs:domain rdf:resource="http://127.0.0.1:3001/ontology/books.owl#Book"/>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>The given book is available in the library.</rdfs:comment>
</owl:ObjectProperty>
虽然在实践中,您可能更喜欢使用rdf:about而不是rdf:ID,但它并未正式弃用或其他任何内容。例如,它仍然在RDF / XML 1.1规范中使用,如§2.14 Abbreviating URIs: rdf:ID and xml:base中所述。
在实践中,使用更易于阅读和人类可写的语法(如Turtle)可能更好。同一个Gist显示了在Turtle中重写本体的结果,books.ttl。使用Turtle,您可以直接编写三元组,而不必担心rdf:ID或rdf:about。在Turtle中,该属性声明变为:
:isNotReserved a owl:ObjectProperty ;
rdfs:comment "The given book is available in the library."^^<http://www.w3.org/2001/XMLSchema#string> ;
rdfs:domain :Book .