OWLAPI найти все DataSomeValuesFrom определенного класса - PullRequest
0 голосов
/ 12 ноября 2018

Это часть моего 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 голосов
/ 17 ноября 2018

Используйте посетителя для лучшего эффекта (не нужно проверять строки на типы):

      // 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));
      }
...