我如何可以推斷與推理給定的數據/對象屬性的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