2016-04-22 4 views
0

Я пытаюсь скопировать OTL-онтологию с использованием Jena API, каждый раз добавляйте новое утверждение в эту онтологию. Но вначале он должен получить оригинальную онтологию без нового утверждения.копия OWL-онтологии в Йене

Следующий код добавляет новый оператор каждый раз, поверх предыдущего.

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

Как предложено в другом посте я попытался скопировать онтологию как это:

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

, но все тот же, он продолжает добавлять новое заявление в onto1. Мне нужно получить оригинальную копию на 1 в curOnto в каждом прогоне цикла for. Любая помощь?

Заранее спасибо.

+0

Привет, В протеже у вас есть возможность экспортировать онтологию в код Java, вы не попробовали? – Abhijeet

+0

Спасибо за информацию. Но мне нужно это в Runtime из источника ... – ruben

+0

Я тоже новый дорогой ... Мои вопросы также остаются без ответа ... ищут ответы ... Мины более простые ... http://stackoverflow.com/вопросы/36741623/действия-в-совой-моделирования? noredirect = 1 # comment61100964_36741623 – Abhijeet

ответ

1

Предложение выше (с использованием org.apache.jena.rdf.model.ModelFactory # createModelForGraph) неверно. Вся информация хранится в Графе. Итак, вам нужно скопировать весь граф (все троек). Это может быть сделано (например) по методу org.apache.jena.graph.GraphUtil # addInto