我需要按照與.owl文件相同的順序獲得OWL類的等價類。按順序獲取等價類
我使用此代碼
for(OWLClassExpression cls: clazz.getEquivalentClasses(ontology)) {
Set <OWLClass> classes_of_the_Expression =cls.getClassesInSignature();
}
但這個代碼讓他們隨機。
請看下面的例子,我對待。在這裏,dog_owner類是人類和狗類的等效類和交集。通過執行我的java代碼,我得到第一個狗課,然後是人類;並且我需要得到反面這意味着人類然後狗類。因爲我需要精確的等同類的第一類。
<owl:Class rdf:about="http://owl.man.ac.uk/2005/07/sssw/peopleeemodifiée#dog_owner">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="http://owl.man.ac.uk/2005/07/sssw/peopleeemodifiée#person"/>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="http://owl.man.ac.uk/2005/07/sssw/peopleeemodifiée#has_pet"/>
</owl:onProperty>
<owl:someValuesFrom rdf:resource="http://owl.man.ac.uk/2005/07/sssw/peopleeemodifiée#dog"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>dog owner</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
></rdfs:comment>
我猜你正在使用的OWLAPI版本是3.5。 OWLClass對象具有可比性,因此您可以將它們添加到列表並可靠地對列表進行排序,但是不支持尊重輸入OWL文件的順序。 OWL沒有爲等價類指定強制性訂單。 爲什麼你需要提到第一個元素? – Ignazio
我需要它,因爲我必須添加一個連接常規類的子類公理(在下面的示例中:dog_owner與第一個交叉點是person:因此,我需要自動添加(使用腳本)公理: 但這不是: 這是我的目標 –
Nina
我首先將它們添加到列表中,我認爲通過這樣做,我會保持順序,但不幸的是,函數clazz.getClassesInSignature();讓它們紊亂 – Nina