2016-10-17 14 views
0

필자는 온톨로지를 만들기 위해 Protege를 사용했습니다. 그것은 두 개의 기본 클래스로 구성됩니다. 그들 각각에는 3 개의 아가씨가 있습니다. 서브 클래스는 특정 객체 및 데이터 속성이있는 클래스입니다. 인스턴스를 만들 때 클래스 개별이지만 해당 데이터 속성을 사용하여 인스턴스를 일부 하위 클래스에 속하게합니다. Protege에서 Hermit을 실행하면 잘 수행됩니다. 내 인스턴스가 클래스 및 하위 클래스에 속한다고합니다. 하지만 Java 및 Owlapi의 Jfact에서 하위 클래스에서 모든 인스턴스를 인쇄하려고하면 인스턴스가 하위 클래스에만 속하지 만 하위 클래스에는 속하지 않습니다. JFact 또는 다른 것입니까?owl api 3.4.10 및 jfact 1.2.1을 사용하여 모든 유형을 얻습니다.

for (OWLClass c : ont.getClassesInSignature()) { 
      if (c.getIRI().getFragment().equals("Baby")) { 
       NodeSet<OWLClass> subClasses = reasoner.getSubClasses(c, false); 

       for (OWLClass subClass : subClasses.getFlattened()) { 
        System.out.println(subClass.getIRI().getFragment()); 


        NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(subClass, false); 

        for (OWLNamedIndividual i : instances.getFlattened()) { 
         System.out.println(i.getIRI().getFragment()); 

         s += i.getIRI().getFragment() + " "; 
        } 
       } 
       } 
      } 
+0

문제가있는 코드를 공유하십시오. –

+0

코드를 공유했습니다. 그것은 작동하지만 출력 (예상대로 Protege에 은둔자). 이 Baby 클래스에는 세 개의 하위 클래스가 있습니다. Baby 인스턴스를 만들었지 만 추론자가 하위 클래스 중 하나의 인스턴스로 인식해야하지만이 코드에서는 하위 클래스에 인스턴스가 없다고 말합니다. – melnej

답변

0

JFact의 버그처럼 보입니다. 추적기에 버전 및 온톨로지를 추가 할 수 있습니까?

편집 : JFact 1.2.1은 고대이며 버그를 알고 있습니다. 최소 1.2.4로 업데이트하십시오 (3.x 버전의 최신 릴리스 인 OWLAPI 3.5.5).

가능한 경우 OWLAPI 4 (Java 7) 또는 5 (Java 8) 및 JFact의 기본 버전으로 업데이트하는 것이 좋습니다.

+0

나는 sourceforge에 메시지를 보냈습니다. – melnej

+0

시도했지만 Android 프로젝트에서 OWLAPI를 가져 오는 데 문제가 있습니다. JFact 1.2.4와 같은 오래된 OWL은 주어진 인스턴스에 대한 하위 클래스를 추론하는 문제를 해결하지 못했습니다. 또한, 나는 새로운 안드로이드 프로젝트를 만들고, Pellet을 사용하려하지만 가져 오기에는 성공하지 못했습니다. – melnej

+0

오류를 설명 할 수 있습니까? 원한다면 가져 오기 문제를 해결할 수 있도록 GitHub에서 문제를 제기하십시오. – Ignazio