如何通过 owlapi 中的域 class 获取 objectProperty 的范围 class?
how to get range class of objectProperty by its domain class in owlapi?
在我的项目中,我想通过受限(somevaluefrom 或 allvalues from)对象属性获取与给定 class 相关的所有范围 class。我可以获得包含给定 class 的受限制的 subclassofAxioms 表达式,但是如何在这些表达式中获取范围 class?换句话说,我怎样才能得到给定 class 的所有相关 classes,不包括继承的 subclass.
例如:
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>))
我怎样才能得到范围 classes #Country 和 #Mild
感谢您的关注!
编写一个 OWLObjectVisitor 并为您感兴趣的限制覆盖访问(OWL...类型)。在这一点上,
type.getFiller()
将产生您想要的 class。
示例在文档中: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
}
}
在我的项目中,我想通过受限(somevaluefrom 或 allvalues from)对象属性获取与给定 class 相关的所有范围 class。我可以获得包含给定 class 的受限制的 subclassofAxioms 表达式,但是如何在这些表达式中获取范围 class?换句话说,我怎样才能得到给定 class 的所有相关 classes,不包括继承的 subclass.
例如:
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>))
我怎样才能得到范围 classes #Country 和 #Mild
感谢您的关注!
编写一个 OWLObjectVisitor 并为您感兴趣的限制覆盖访问(OWL...类型)。在这一点上,
type.getFiller()
将产生您想要的 class。
示例在文档中: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
}
}