我如何可以推断与推理给定的数据/对象属性的OWL域/范围?推断域/范围
例如,我有两个类Rat
,Bird
和数据属性hasName
。我想这些类是hasName
的单独的域:
<Declaration><Class IRI="#Rat"/></Declaration>
<Declaration><Class IRI="#Bird"/></Declaration>
<Declaration><DataProperty IRI="#hasName"/></Declaration>
<DataPropertyDomain>
<DataProperty IRI="#hasName"/>
<ObjectUnionOf>
<Class IRI="#Rat"/>
<Class IRI="#Bird"/>
</ObjectUnionOf>
</DataPropertyDomain>
当我用隐士推理推断域,我得到了owl:Thing
类,而不是Rat
或Bird
:
Set<OWLClass> inferedDomains = hermitReasoner
.getDataPropertyDomains(hasNameProperty, false)
.getFlattened();
我可以手动通过使用OWL-API来读取的hasName
DataPropertyDomainAxioms
提取域,让Rat
,Bird
类。但后来我就无法得到其他可推断类(例如Rat
有一个等价类Mouse
)。
所以我想使用推理引擎来推断的结果,如:
- 推理:隐士,其实++,...
- SQWRL规则引擎:Drools的,...
有什么方法来达到这样的效果?
您的意思是首先我得到本体属性的所有属性域公理:OWLOntology :: getDataPropertyDomainAxioms,之后对于每个公理我得到公理签名中的所有类:OWLDataPropertyDomainAxiom :: getClassesInSignature,然后为每个类我都得到这个类的所有子类:'OWLReasoner :: getSubClasses'? – MiP
不,只有域类 - 这是一个匿名类,不会出现在签名中。 OWLDataPropertyDomainAxiom有一个专门的方法。 – Ignazio
我不知道为什么,但当我使用'getClassesInSignature'时,它列出了这个匿名类的所有子类。你在谈论哪种方法? – MiP