我需要按照与.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