« | October 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | |
|
|
[本体研究]RDF:ID, RDF:About和RDF:Resource |
<?xml version="1.0"?>
<rdf:RDF
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://www.owl-ontologies.com/unnamed.owl#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xml:base="' target=_blank>http://www.owl-ontologies.com/unnamed.owl">
<owl:Ontology rdf:about=""/>
<owl:Class rdf:ID="PizzaBase">
<owl:disjointWith>
<owl:Class rdf:ID="Pizza"/>
</owl:disjointWith>
<owl:disjointWith>
<owl:Class rdf:ID="PizzaTopping"/>
</owl:disjointWith>
</owl:Class>
<owl:Class rdf:about="#Pizza">
<owl:disjointWith rdf:resource="#PizzaBase"/>
<owl:disjointWith>
<owl:Class rdf:about="#PizzaTopping"/>
</owl:disjointWith>
</owl:Class>
<owl:Class rdf:about="#PizzaTopping">
<owl:disjointWith rdf:resource="#PizzaBase"/>
<owl:disjointWith rdf:resource="#Pizza"/>
</owl:Class>
</rdf:RDF>
我的疑问是同样的结构,为什么有些要用rdf:resource有些又用rdf:about,还有些用rdf:ID?这几个有什么区别呢?
OrangeBench的回答:
1)rdf:ID和rdf:about的区别: rdf:about的值是一个完整URIref,注意也可以是相对URI,(相对于xml:base);rdf:ID是对rdf:about的值的缩写,其值是一个“ XML Name”,所以,不能是数字开头,不能有“/”符号等。
例如:rdf:ID="PizzaBase" 等价于rdf:about="(xml:base)+‘#’+‘PizzaBase’ "这个xml:base的值可以在XML文件头声明,如你例子中的,xml:base="http://www.owl-ontologies.com/unnamed.owl", 如果没有声明,则其值是RDF文件所放在的位置uri。
2)rdf:resource 和rdf:about
<owl:disjointWith rdf:resource="#PizzaBase"/> 是
<owl:disjointWith ><rdf:Description rdf:about="#PizzaBase" /></owl:disjointWith >的缩写。这里必须没有对资源="#PizzaBase" 做进一步的说明。所以,rdf:resource只能出现在表示属性的节点中,如这里的owl:disjointWith节点。
而 <owl:disjointWith><owl:Class rdf:about="#PizzaTopping"/></owl:disjointWith>是等价于:<owl:disjointWith ><rdf:Description rdf:about="#PizzaTopping" ><rdf:type rdf:resource="&rdfs;Class" /></rdf:Description></owl:disjointWith >
这里不能用rdf:resource了,因为声明了#PizzaTopping是一个类。
所以,我们可以看出:说明了: <owl:Class rdf:ID="PizzaBase">以后,后面的都是用:<owl:disjointWith rdf:resource="#PizzaBase"/>了。
我的最后理解:
其实我们可以把rdf:ID看作和rdf:about一样的东西,rdf:ID只是一个缩写而已。所以 <owl:Class rdf:ID="PizzaBase">
<owl:disjointWith>
<owl:Class rdf:ID="Pizza"/>
</owl:disjointWith>
<owl:disjointWith>
<owl:Class rdf:ID="PizzaTopping"/>
</owl:disjointWith>
</owl:Class>中,把所有的rdf:ID="xxx"替换成rdf:about="#xxx"也是可以的,这是我的第一个理解。
第二,为什么这里不能用rdf:resource呢,是因为到目前为止,Pizza类和PizzaTopping类还没有被定义,需要在这里申明它是一个类。如果Pizza类在之前就已经定义了,那么这里也可以用rdf:resource来简写。
参与讨论本主题 | |
|
|
|
统计 |
blog名称:ChouBIll 日志总数:10 评论数量:18 留言数量:0 访问次数:107266 建立时间:2004年11月3日 | |