2013-04-25 1 views

ответ

3

Большое спасибо за указание на меня в правильном направлении, вот как я решил свою проблему.

public static void main(String[] args) throws ParserException, OWLOntologyCreationException {

File file=new File("ontology/pizza.owl"); 
    OWLOntologyManager manager; 
    OWLOntology localOntology=null; 
    OWLDataFactory factory ; 

    try { 


     //loading the ontology 
     manager=OWLManager.createOWLOntologyManager(); 

     try { 
      localOntology = manager.loadOntologyFromOntologyDocument(file); 
     } catch (OWLOntologyCreationException e) { 
      e.printStackTrace(); 
     } 

     factory = localOntology.getOWLOntologyManager().getOWLDataFactory(); 

     OWLOntologyFormat format = manager.getOntologyFormat(localOntology); 
     System.out.println(" format: " + format); 

     ManchesterOWLSyntaxOntologyFormat manSyntaxFormat = new ManchesterOWLSyntaxOntologyFormat(); 
     if(format.isPrefixOWLOntologyFormat()) { 
      manSyntaxFormat.copyPrefixesFrom(format.asPrefixOWLOntologyFormat()); 
     } 

     manager.setOntologyFormat(localOntology, manSyntaxFormat); 
     manager.saveOntology(localOntology, manSyntaxFormat); 
     System.out.println("Manchester syntax: --- saved in Manchester.owl"); 

     ManchesterOWLSyntaxOWLObjectRendererImpl rendering = new ManchesterOWLSyntaxOWLObjectRendererImpl(); 

     OWLClass c1 = factory.getOWLClass(IRI.create("http://www.co-ode.org/ontologies/pizza/pizza.owl#IceCream")); 

     Set<OWLClassExpression> c1eqclasses = c1.getEquivalentClasses(localOntology); 
     for(OWLClassExpression c1e : c1eqclasses) 
      System.out.println("Equivalent: "+rendering.render(c1e)); 

     c1eqclasses = c1.getDisjointClasses(localOntology); 
     for(OWLClassExpression c1e : c1eqclasses) 
      System.out.println("Disjoint: "+rendering.render(c1e)); 

     c1eqclasses = c1.getSubClasses(localOntology); 
     for(OWLClassExpression c1e : c1eqclasses) 
      System.out.println("Subclass: "+rendering.render(c1e)); 

     c1eqclasses = c1.getSuperClasses(localOntology); 
     for(OWLClassExpression c1e : c1eqclasses) 
      System.out.println("Superclass: "+rendering.render(c1e)); 



    } 
    catch (OWLOntologyStorageException e) { 
     System.out.println("Could not save ontology: " + e.getMessage()); 
    } 



} 

2

OWL-API позволяет вам также читать онтологию, написанную в функциональном синтаксисе, и преобразовывать ее в синтаксис Манчестера.

Пример кода для записи онтологии в виде файла сериализации в синтаксисе Манчестер:

File file = new File("/home/foo/bar.owl"); 
OWLOntologyFormat format = manager.getOntologyFormat(ontology); 
ManchesterOWLSyntaxOntologyFormat manSyntaxFormat = 
             new ManchesterOWLSyntaxOntologyFormat(); 
manager.saveOntology(ontology, manSyntaxFormat, IRI.create(file)); 

manager и ontology являются стандартными объекты из OWL-API.

0

В новой версии OWL API (я использую 4.0.1), использовать эти методы

Set<OWLEquivalentAxiom> axioms = localOntology.getEquivalentClassesAxiom(c1); 

вместо

Set<OWLClassExpression> c1eqclasses = c1.getEquivalentClasses(localOntology); 

Аналогично для других вызовов.