在我的项目中,我想通过一个受限制的(somevaluefrom或allvalues)objectproperties来获取与给定类相关的所有范围类。我可以获得包含给定类的受限子类的Axioms表达式,但是如何在这些表达式中获取范围类?换句话说,我怎样才能将所有相关的类都放到给定的类中,不包括继承的子类。
例如:
public static void printSubClassOfAxioms(OWLOntology ontology,OWLReasoner reasoner,OWLClass owlClass){
for(OWLSubClassOfAxiom ax:ontology.getSubClassAxiomsForSubClass(owlClass)){
OWLClassExpression expression=ax.getSuperClass();
System.out.println(ax);
System.out.println(expression);
}
}
结果是:
SubClassOf(<#FourCheesesTopping> <#CheeseTopping>)
SubClassOf(<#FourCheesesTopping> ObjectSomeValuesFrom(<#hasSpiciness> <#Mild>))
SubClassOf(<#FourCheesesTopping> ObjectAllValuesFrom(<#hasCountryOfOrigin> #Country>))
我怎样才能获得范围类#Country和#Mild
感谢您的关注!
答案 0 :(得分:0)
编写一个OWLObjectVisitor并覆盖您感兴趣的限制的访问(OWL ...类型)。此时,
type.getFiller()
将产生你所追求的课程。
示例在文档中:https://github.com/owlcs/owlapi/wiki/Documentation
public class RestrictionVisitor extends OWLClassExpressionVisitor {
@Override
public void visit(@Nonnull OWLObjectSomeValuesFrom ce) {
// This method gets called when a class expression is an existential
// (someValuesFrom) restriction and it asks us to visit it
}
}