Java 如何使用owlapi 5.1检索OWL类的子类?

Java 如何使用owlapi 5.1检索OWL类的子类?,java,owl,owl-api,Java,Owl,Owl Api,我正在重写一个java程序,它读取一个OWL文件并构建一个图形数据库。该程序使用较旧版本的OWLAPI,许多get方法现在已不推荐使用。我已经重构了我的代码以使用流。现在,我正在尝试检索OWL文件中每个类的子类 使用owlsubassofaxiom,我可以检索到我需要的子类,但是我仍然需要过滤结果,以便只获取子类 final-OWLOntologyManager=OWLManager.createOWLOntologyManager(); owl本体=加载(管理器); //--创建推理器以检查本

我正在重写一个java程序,它读取一个OWL文件并构建一个图形数据库。该程序使用较旧版本的OWLAPI,许多get方法现在已不推荐使用。我已经重构了我的代码以使用流。现在,我正在尝试检索OWL文件中每个类的子类

使用owlsubassofaxiom,我可以检索到我需要的子类,但是我仍然需要过滤结果,以便只获取子类

final-OWLOntologyManager=OWLManager.createOWLOntologyManager();
owl本体=加载(管理器);
//--创建推理器以检查本体是否一致
OWLReasonerFactory reasonerFactory=新建
StructuralReasonerFactory();
OWLReasoner=reasonerFactory.createReasoner(本体);
推理机。预计算推理();
boolean consistent=reasoner.isConsistent();
如果(一致){
//--获取本体中的所有类
for(OWLClass oc:ontology.classesInSignature().collect(Collectors.toSet())){
System.out.println(“类:+oc.toString());
//--获取每个类的所有子类
对于(owlsubassofaxiom sca:ontology.subassaximsforsuperclass(oc.collector.toSet())){
System.out.println(“子类:+sca.toString());
}
}
}
输出示例如下所示:

Class: <http://www.nist.gov/el/ontologies/kitting.owl#PoseLocation>
    Subclass: SubClassOf(<http://www.nist.gov/el/ontologies/kitting.owl#PoseLocationIn> <http://www.nist.gov/el/ontologies/kitting.owl#PoseLocation>)
类:
子类:子类()

在本例中,使用owlapi 5.1,如何检索
PoseLocation
,它是
PoseLocation
的子类?

使用
Searcher
类,它是从owlapi 3移动到5时删除的方法的方便替代品<代码>搜索器::GetSubclass执行相同的工作。

请注意,结构化推理器不进行推理。在这种情况下,它是无用的。我建议永远不要用它。这个很好用。我会接受这个答案,如果有人能完成我提供的代码使其工作,那就太好了。请注意,
EntitySearcher
是您希望与
import org.semanticweb.owlapi.search.EntitySearcher一起使用的这两个类提供了互补的功能。