2016-10-06 7 views
0

here에서 다운로드 한 표준 피자 온톨로지의 수퍼 클래스를 인쇄하려고합니다. OWL API 3.4.3과 Hermit 1.3.8.1 (추론 자)를 사용하고 있습니다.OWL-API와 Hermit을 사용한 피자 온톨로지의 슈퍼 클래스 인쇄

다음 코드 단편은 "음식"클래스의 필수 수퍼 클래스을 인쇄하는 데 사용됩니다.

OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
IRI ontologyIRI =IRI.create("file:/D:/pizza.owl.xml");  
//IRI ontologyIRI =IRI.create("http://www.co-ode.org/ontologies/pizza/pizza.owl"); 

OWLOntology ontology = manager.loadOntology(ontologyIRI); 
OWLReasoner reasoner = new Reasoner.ReasonerFactory().createReasoner(ontology); 
OWLDataFactory df = manager.getOWLDataFactory();  
    try{ 
      reasoner.precomputeInferences(InferenceType.CLASS_ASSERTIONS); 
      //following Lines are to see super classes of Container 
      OWLClass clsA = df.getOWLClass(IRI.create(ontologyIRI + "#Food")); 
      Set<OWLClassExpression> superClasses = clsA.getSuperClasses(ontology); 
      System.out.println("in TRY 1"); 
      //System.out.println("Hello World\n"+superClasses.iterator().toString()); 
      for (OWLClassExpression g : superClasses) { 
       System.out.println("The superclasses are:"+g); 
      } 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 

컴파일 오류가 발생하지 않습니다. 결과는 TRY 1에 입니다. 루프에 대한 의 내용은으로 인쇄되지 않았습니다.

프로 테지 5.0에서는 두 가지를 보았습니다 슈퍼 클래스의 음식 클래스; 즉 DomainConcept올빼미 : 할일입니다. 왜이 두 이름이 프로그램에서 인쇄되지 않았습니까?

어디에서 잘못 했습니까?

도움 주셔서 감사합니다.

답변

1

온톨로지 IRI는 로컬 파일 이름입니다. 이 클래스를 사용하여 클래스 IRI를 얻으면 온톨로지에서 실제로 사용 된 IRI와는 다른 IRI를 얻게됩니다. 클래스가 실제로 가지고있는 IRI를 확인하면 문제가 해결됩니다.