2016-10-06 1 views
0

J'essaie d'imprimer les superclasses de l'ontologie de la pizza standard téléchargées de here. J'utilise OWL API 3.4.3 et Hermit 1.3.8.1 (reasoner).Impression des superclasses de l'ontologie de la pizza en utilisant OWL-API et Hermit

L'extrait de code suivant est utilisé pour imprimez les superclasses requises de la classe "Alimentation".

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(); 
     } 

Je n'obtiens aucune erreur de compilation. Le résultat est dans TRY 1. Le contenu à l'intérieur pour la bouclen'a pas été imprimé.

Dans le protégé 5.0, j'ai vu deux Superclasses de la classe de nourriture; à savoir DomainConcept et hibou: Chose. Pourquoi ces deux noms n'ont pas été imprimés par le programme?

Où est-ce que je fais mal?

Merci pour toute sorte d'aide.

Répondre

1

Votre ontologie IRI est un nom de fichier local. Lorsque vous l'utilisez pour obtenir un IRI de classe, vous obtenez un IRI différent de celui utilisé dans l'ontologie. Vérifiez ce qu'IRI a réellement dans la classe et cela devrait résoudre votre problème.