在 OWL 中设置数据/对象属性的域/范围的正确方法是什么?
如果我有两节课A
, B
和数据属性hasName
:
<Declaration><Class IRI="#A"/></Declaration>
<Declaration><Class IRI="#B"/></Declaration>
<Declaration><DataProperty IRI="#hasName"/></Declaration>
<FunctionalDataProperty>
<DataProperty IRI="#hasName"/>
</FunctionalDataProperty>
<DataPropertyRange>
<DataProperty IRI="#hasName"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>
我要设置班级A
和班级B
作为单独的域名hasName
。我尝试了三种方法,以下哪种方法是正确的?
-
选项 1 - 推断域结果:A
, B
and owl:Thing
<DataPropertyDomain>
<DataProperty IRI="#hasName"/>
<Class IRI="#A"/>
</DataPropertyDomain>
<DataPropertyDomain>
<DataProperty IRI="#hasName"/>
<Class IRI="#B"/>
</DataPropertyDomain>
-
选项 2 - 推断域结果:owl:Thing
<DataPropertyDomain>
<DataProperty IRI="#hasName"/>
<ObjectUnionOf>
<Class IRI="#A"/>
<Class IRI="#B"/>
</ObjectUnionOf>
</DataPropertyDomain>
-
选项 3 - 推断域结果:owl:Thing
<EquivalentClasses>
<Class IRI="#A"/>
<DataExactCardinality cardinality="1">
<DataProperty IRI="#hasName"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataExactCardinality>
</EquivalentClasses>
<EquivalentClasses>
<Class IRI="#B"/>
<DataExactCardinality cardinality="1">
<DataProperty IRI="#hasName"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataExactCardinality>
</EquivalentClasses>
从选项 1 中,我从 HermiT Reasoner 得到了 3 个结果:A
, B
, and owl:Thing
,但是当我读到这个帖子 https://stackoverflow.com/questions/23724182/rdfs-same-property-for-multiple-domains他说我写了错误的语义,应该使用owl:unionOf
.
然后我尝试像选项2那样表达类,但是当我再次推断时,我只得到了类owl:Thing
, not A
or B
.
使用选项 3,我将类设置为等效类公理中的域。它可以工作,但我无法使用强大的推理工具来推断:
Set<OWLClass> classes = reasoner.getDataPropertyDomains(hasNameProperty, false).getFlattened();
第一点也是最重要的一点:属性的域和范围hasName
OWL 语义是not限制hasName
!相反,这些公理用于推断通过属性相关的个体类型hasName
.
Option 1
关于您的示例,它为该属性声明了多个域hasName
,这意味着这些类的交集,即A and B
.
Option 2
这确实是最常见的方式。
Option 3
我不明白你在这里做什么。但在 OWL 中,开放世界假设 (OWA) 成立,这意味着未知信息不被认为是错误的。这只是未知的。因此,如果您有个人a
只与个人有关x
通过财产hasName
标准的 OWL 推理机不能(也不能)得出这样的结论:a
属于班级A
.
注意,OWL 中域公理的语义等价 subClassOf 公理是(伪曼彻斯特语法)
hasName Domain: A
(hasName some owl:Thing) SubClassOf: A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)