繁体   English   中英

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

[英]How to retrieve subclasses of an OWL class using owlapi 5.1?

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

使用 OWLSubClassOfAxiom 我可以检索我需要的子类,但我仍然需要过滤结果以仅获取子类

    final OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    OWLOntology ontology = load(manager);

    //--create a reasoner to check that the ontology is consistent
    OWLReasonerFactory reasonerFactory = new 
    StructuralReasonerFactory();
    OWLReasoner reasoner = reasonerFactory.createReasoner(ontology);
    reasoner.precomputeInferences();
    boolean consistent = reasoner.isConsistent();


    if (consistent) {
      //--get all classes in the ontology
      for (OWLClass oc : ontology.classesInSignature().collect(Collectors.toSet())) {
          System.out.println( "Class: " + oc.toString() );
          //--get all the SubClassOfAxiom of each class
          for (OWLSubClassOfAxiom sca: ontology.subClassAxiomsForSuperClass(oc).collect(Collectors.toSet())) {
            System.out.println( "    Subclass: " + sca.toString() );
          }
        }
    }

output样品如下:

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,我如何检索PoseLocationIn ,它是PoseLocation的子类?

使用Searcher class,它可以方便地替代从 OWLAPI 3 到 5 中删除的方法。 Searcher::getSubClasses做同样的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM