Почему я не могу напрямую использовать слияние в owlapi для слияния ABox и TBox? - PullRequest
0 голосов
/ 20 сентября 2018

owlapi предоставляет нам слияние классов, которое позволяет нам загружать онтологию из нескольких файлов / источников, а затем объединять их вместе.Теперь моя онтология разделена на две непересекающиеся части, то есть одну часть для аксиом TBox и другую для утверждений ABox.Поэтому я просто использую слияние в качестве следующего кода:

OWLOntology TBox= m.loadOntologyFromOntologyDocument(new File(("XXXXXXXX/UOBM.owl")));

OWLOntology ABox = m.loadOntologyFromOntologyDocument(new File("XXXX/test.nt"));

OWLOntologyMerger merger = new OWLOntologyMerger(m);
OWLOntology o = merger.createMergedOntology(m, null);

Однако я обнаружил, что только утверждения класса в ABox включены в онтологию слияния o, что означает, что все утверждения роли не включены.Я сделал много попыток и, наконец, решил проблему, добавив утверждения типа свойств в мой файл ABox, например, <http://semantics.crl.ibm.com/univ-bench-dl.owl#takesCourse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .

Это действительно странно, поскольку такие утверждения уже включены в TBoxфайл, и я слил TBox и ABox с слиянием.Так почему я должен снова добавить их вручную?Это вопрос дизайна owlapi?Или есть лучший и более распространенный для меня способ решения этой проблемы?

PS:
Мой файл ABox, а именно test.nt, довольно простой, который содержит только три тройки, без чего-либо еще.Я также не импортировал TBox в свой ABox, поскольку он включает только тройки.
Например, содержимое исходного test.nt может быть:

<http://semantics.crl.ibm.com/univ-bench-dl.owl#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://semantics.crl.ibm.com/univ-bench-dl.owl#LeisureStudent> .
<http://semantics.crl.ibm.com/univ-bench-dl.owl#a> <http://semantics.crl.ibm.com/univ-bench-dl.owl#takesCourse> <http://semantics.crl.ibm.com/univ-bench-dl.owl#c0> .

Вторая тройка не может быть распознана какутверждение свойства объекта.В то время как добавление еще одного тройного утверждения о том, что takeCourse является свойством объекта для test.nt, свойство объекта может быть распознано.
Однако в TBox уже было объявление, которое объявляет takeCourse как свойство объекта, а не что-либо еще.Так зачем мне снова добавлять его в ABox, так как я уже слил TBox с моим ABox?

1 Ответ

0 голосов
/ 21 сентября 2018

Ваш abox файл должен использовать owl:imports для включения tbox.Без объявления свойств abox не может быть правильно проанализирован в противном случае.

...