2016-04-22 9 views
0

Ich versuche, eine OWL-Ontologie mit Jena API zu kopieren, fügen Sie dieser Ontologie jedes Mal eine neue Anweisung hinzu. Aber am Anfang sollte es die ursprüngliche Ontologie ohne die neue Aussage erhalten.eine OWL-Ontologie in Jena kopieren

Der folgende Code fügt jedes Mal eine neue Anweisung hinzu, zusätzlich zur vorherigen.

this runs in a for loop{ 

     OntModel curOnto = onto1.getOntology(); 

     curOnto.add(s,p,o); 

     /*printing the statement from onto1 
     it seems it is adding new statement in onto1 on top of previous statement*/ 

     int lineNum = 0; 
     for (StmtIterator i = onto1.getOntology().listStatements(); i.hasNext();) { 
      Statement stmt = i.nextStatement(); 
      System.out.println(lineNum++ + " - " + PrintUtil.print(stmt)); 
     } 
} 

Wie in anderen post schlage ich habe versucht, die Ontologie wie diese zu kopieren:

Model copyOnto = ModelFactory.createModelForGraph(onto1.getOntology().getGraph()); 
OntModel curOnto = new OntModelImpl(onto1.getOntology().getSpecification(), copyOnto); 

aber immer noch das gleiche, es hält die neue Anweisung in onto1 hinzufügen. Ich brauche eine Originalkopie von on1 in curOnto in jedem Lauf der for-Schleife. Irgendeine Hilfe?

Vielen Dank im Voraus.

+0

Hallo, In Protege haben Sie eine Option zum Exportieren der Ontologie zu Java-Code, haben Sie nicht versucht? – Abhijeet

+0

Danke für die Info. Aber ich brauche es in Runtime von Quelle ... – ruben

+0

Ich bin auch neu liebes ... Meine Fragen sind auch unbeantwortet ... auf der Suche nach Antworten ... Meine sind einfacher ... http://stackoverflow.com/questions/36741623/Actions-in-Eulen-Modellierung? Noredirect = 1 # comment61100964_36741623 – Abhijeet

Antwort

1

Der obige Vorschlag (mit org.apache.jena.rf.model.ModelFactory # createModelForGraph) ist falsch. Alle Informationen werden im Graph gespeichert. Sie müssen also ganze Graphen kopieren (alle Tripel). Es kann (zum Beispiel) durch die Methode org.apache.jena.graph.GraphUtil # addInto