OWLAPI查找特定类的所有DataSomeValuesFrom

时间:2018-11-12 18:19:33

标签: java owl owl-api

这是我的OWL文件的一部分:

# Class: :Book (:Book)

SubClassOf(:Book ObjectSomeValuesFrom(:writtenBy owl:Thing))
SubClassOf(:Book DataSomeValuesFrom(:genre rdfs:Literal))
SubClassOf(:Book DataSomeValuesFrom(:title rdfs:Literal))

如何仅获取DataSomeValuesFrom属性? 我正在使用owlapi 5.1.0 和隐士作为推理者。

编辑:这就是我解决的方法。我不知道这是否是正确的方法,但是它可行。

感谢@AKSV为我提供非常有用的信息。...

          for (OWLClass cls : o.getClassesInSignature()){
            Set<OWLSubClassOfAxiom> set = o.getSubClassAxiomsForSubClass(cls);
            for(OWLSubClassOfAxiom subcl : set){
                OWLClassExpression nomeattribEXPR = subcl.getSuperClass();
                if(nomeattribEXPR.getClassExpressionType().toString().equals("DataSomeValuesFrom")){
                   //do something
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

使用访客获得最佳效果(无需检查字符串的类型)

      // this is OWLAPI 5; for OWLAPI 4, use OWLObjectVisitorAdapter
      OWLObjectVisitor v=new OWLObjectVisitor(){
          public void visit(OWLSubClassOfAxiom ax) {
              ax.getSuperClass().accept(this);
          }
          public void visit(OWLDataSomeValuesFrom c){
              //do something
          }
      };
      for (OWLClass cls : o.getClassesInSignature()){
        o.getSubClassAxiomsForSubClass(cls).forEach(ax->ax.accept(v));
      }