2016-10-06 2 views
0

Я пытаюсь напечатать Суперклассы стандартной онтологии Pizza, загруженные с here. Я использую OWL API 3.4.3 и Hermit 1.3.8.1 (рассудитель).Печать суперклассов онтологии Pizza с использованием OWL-API и отшельника

Следующий фрагмент кода используется для распечатать необходимые Суперклассы класса «Продукты питания».

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 и owl: Thing. Почему эти два имени не были напечатаны программой?

Где я делаю неправильно?

Спасибо за любую помощь.

ответ

1

Ваша онтология IRI - это локальное имя файла. Когда вы используете его для получения IRI класса, вы получаете другое IRI от того, которое действительно используется в онтологии. Проверьте, какой IRI класс действительно имеет, и что должно исправить вашу проблему.

Смежные вопросы