[英]How do you add 2 subclassof's in an OWL class?
我正在尝试为佳能相机做课堂陈述。 但是我不知道佳能相机类中是否允许2个subclassOf语句同时指向“相机”和“佳能产品”。
这是我到目前为止的内容:
<owl:Class rdf:ID=”product”>
<rdfs:comment>Products form a class. </rdfs:comment>
</owl:Class>
<owl:Class rdf:ID=”Camera”>
<rdfs:comment>Photography device</rdfs:comment>
<rdfs:label>Device</rdfs:label>
<rdfs:subClassOf rdf:resource=”#product”/>
</owl:Class>
<owl:Class rdf:ID=”Canon Product”>
<rdfs:comment>A canon device</rdfs:comment>
<rdfs:label>Device</rdfs:label>
<rdfs:subClassOf rdf:resource=”#product”/>
</owl:Class>
我需要知道这是否可行并且正确:
<owl:Class rdf:ID="Canon Camera">
<rdfs:comment>A canon camera</rdfs:comment>
<rdfs:subClassOf rdf:resource="#Canon Product"/>
<rdfs:subClassOf rdf:resource="#Camera"/>
</owl:Class>
谢谢 :)
除了在IRI中空格不是合法字符(因此#Canon Product
和Canon Camera
在语法上不是合法标识符)这一事实之外,您的示例很好。 您已经表达了一个本体,在该本体中, Canon Camera
每个实例都被推断为Canon Product
和Camera
的实例。
但是请注意, 尚未捕获的是相反的推论:您的模型并不表示“相机”和“佳能产品”两者始终都是“佳能相机”。
如果还想捕获这种逆关系,则需要使用特定于OWL的构造,而不仅仅是添加rdfs:subClassOf
关系。 一种简单的表达方式是使用owl:intersectionOf
,如下所示:
<owl:Class rdf:ID="CanonCamera">
<rdfs:comment>A canon camera</rdfs:comment>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#CanonProduct"/>
<owl:Class rdf:about="#Camera"/>
</owl:intersectionOf>
</owl:Class>
或使用Turtle语法(比RDF / XML更容易阅读):
:CanonCamera a owl:Class ;
owl:intersectionOf ( :CanonProduct :Camera ) .
这是说的类扩展:CanonCamera
正好等于的类外延的交集:CanonProduct
和:Camera
。 换一种说法:
:CanonProduct
和:Camera
被推断为一个:CanonCamera
:CanonCamera
所有事物都推断为:CanonProduct
和:Camera
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.