2014-12-03 2 views
1

У меня есть онтология, созданная в Protege. Я загрузил онтологию с помощью Eclipse. Я пытался удалить конкретное лицо из онтологии, используя следующий код:Удалить людей онтологии с API OWL, не удаленных в Protege

File file = new File("D:/diana/e/2012_2013/d/protege/picture8.owl"); 
OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
OWLOntology localPicture = manager.loadOntologyFromOntologyDocument(file); 
OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory(); 
OWLReasoner reasoner = reasonerFactory.createReasoner(localPicture, config); 
OWLDataFactory fac = manager.getOWLDataFactory(); 

//the individual that I want to delete 
OWLNamedIndividual ind = fac.getOWLNamedIndividual(IRI.create("http://www.semanticweb.org/diana/ontologies/2013/0/picture4.owl#Water1")); 
OWLEntityRemover remover = new OWLEntityRemover(Collections.singleton(localPicture)); 
remover.visit(ind); 
// or ind.accept(remover); 
manager.applyChanges(remover.getChanges()); 

кажется, что человек был удален, но когда я открываю онтологию с Protege индивид по-прежнему существует.

Не могли бы вы рассказать мне, как я могу удалить человека из Eclipse, чтобы он не появлялся в Protege?

ответ

0

Вы сохранили онтологию впоследствии?

После применения этих изменений необходимо позвонить по номеру manager.saveOntology(localPicture); или они могут быть использованы только для копии онтологии в памяти.

+1

Я думал об этом, но я работаю с OWL, и я научил себя просмотру документации, поэтому я попробовал manager.saveOntology (localPicture, новый StreamDocumentTarget ( новый ByteArrayOutputStream())); не зная значения параметров, и это не сработало. Ваше предложение работает. Спасибо. – Diana