[英]How to retrieve properties that were instantiated by owl class instance in OWL API?
使用OWL API,我試圖檢查子類是否實際上實例化了將其屬性與從父類繼承的對象屬性區分開的對象屬性。
有沒有辦法獲取實例定義的屬性? 我當前的方法是嘗試獲取OWLClass的實例,如下所示:
// OWLClass o_class <---valid OWLClass object (e.g. City, Capital, etc)
Set<OWLNamedIndividual> o_instances = reasoner.getInstances(o_class, true).getFlattened();
for (OWLNamedIndividual> inst : o_instances) {
//get set of properties defined by each instance
}
我嘗試了幾種不同的方法,但沒有成功。 inst.getObjectPropertiesInSignature()
返回任何內容。 下面顯示了我正在使用的OWL文件之一的示例:
<owl:Class rdf:ID="City">
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="#hasAccommodation"/>
</owl:onProperty>
<owl:someValuesFrom rdf:resource="#LuxuryHotel"/>
</owl:Restriction>
</owl:Class>
<owl:Class rdf:ID="Capital">
<rdfs:subClassOf>
<owl:Restriction>
<owl:someValuesFrom rdf:resource="#Museums"/>
<owl:onProperty>
<owl:ObjectProperty rdf:about="#hasActivity"/>
</owl:onProperty>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf rdf:resource="#City"/>
</owl:Class>
<Capital rdf:ID="Canberra">
<hasAccommodation rdf:resource="#FourSeasons"/>
</Capital>
<Capital rdf:ID="Sydney">
<hasAccommodation rdf:resource="#FourSeasons"/>
<hasActivity rdf:resource="#CoolMuseum"/>
</Capital>
在上面的示例中,我希望能夠檢測到Canberra
沒有使用hasActivity
屬性,而Sydney
卻使用了。 我不確定如何正確獲取這些屬性並進行比較。 為簡潔起見,我排除了FourSeasons和Museum的內容。 我希望我已經足夠恰當地解釋了這一點。
使用OWLIndividual接口提供的getObjectPropertyValues(OWLOntology ontology)
方法。 它將返回一個Map,其ObjectPropertyExpression
作為鍵,而一組OWLIndivdual
作為值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.