Редактировать OWL Individual с помощью OWL API

У меня есть онтология, созданная в протеже 4. Мне нужно добавить свойство данных к отдельной сове моей онтологии, используя OWL API 4. Насколько я понимаю, я новичок в java/owl API. я использовал следующий код: -

OWLNamedIndividual myowlIndl = df.getOWLNamedIndividual(":test", pm);
OWLDataProperty indlName = df.getOWLDataProperty(":strVal", pm);
OWLDataPropertyAssertionAxiom dataPropertyAssertion = df.getOWLDataPropertyAssertionAxiom(indlName, myowlIndl,"hello world");
AddAxiom addAxiom1 = new AddAxiom(myowlOntology, dataPropertyAssertion);
myontologyManager.applyChange(addAxiom1);

но этот код не «обновляет» уже существующий отдельный «тест» совы, а создает новый.

Как это исправить?


person jaykio77    schedule 26.12.2014    source источник


Ответы (1)


Используйте полный IRI вместо укороченной версии, из этого кода трудно сказать, является ли пространство имен правильным (":test" неоднозначно, так как мы не можем видеть, как его разрешает менеджер префиксов, и мы не можем видеть онтологию ). Также не забудьте сохранить онтологию после вызова applyChange().

person Ignazio    schedule 27.12.2014
comment
Большое спасибо. игра с IRI сделала свое дело. кстати. в чем разница между использованием iri=file:/D:/university.owl и iri=http:/localhost:3030/university.owl? - person jaykio77; 29.12.2014
comment
Один из них — это IRI документа, который зависит от физического расположения онтологии, другой — URL-адрес, который остается постоянным и не привязан к определенному пути файловой системы — он позволяет перемещать файлы и по-прежнему обращаться к ним с тем же именем. IRI, при условии, что сервер по адресу localhost:3030 знает, где найти контент. Кроме того, URL-адрес может быть импортирован кем-то другим в свою онтологию, в то время как ваш локальный файл доступен только вам. - person Ignazio; 29.12.2014
comment
Спасибо за вопрос и ответ. К сожалению, я не хочу добавлять новый литерал в существующее свойство DataProperty, вместо этого я хотел бы изменить существующий литерал. У вас есть идеи, как это решить? - person MS1; 16.11.2016
comment
Используйте RemoveAxiom для удаления старого значения и AddAxiom для вставки нового значения. OWLAxioms являются неизменяемыми объектами, поэтому изменить часть одного из них невозможно. - person Ignazio; 16.11.2016