Запрос анонимных классов в OWL API с использованием синтаксиса Манчестера
Я использую OWL API для аргументации онтологии, созданной в Protege. Я имею дело с OLL API Пример запроса DL: http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java, Я предполагаю, что этот пример обеспечивает функциональность, эквивалентную вкладке DL Query Tab в Protege. Но на самом деле есть некоторые существенные различия: мне нужно получить информацию (подкласс, суперкласс и т. Д.) Анонимного класса, который определяется набором лиц (например, {Member1, Member2...}) или другим путь. В Protege этот запрос возвращает правильный результат, но такой запрос в OWL API Пример запроса Dl возвращает [НИЧЕГО]. Есть ли способ манипулировать анонимными классами в OWL API? Заранее спасибо за ответ.
1 ответ
Предполагая, что вы используете класс DLQueryExample
как таковой без изменений.
Вам нужно использовать другой аргумент, отличный от используемого по умолчанию. Посмотрите на строку 151, реализация использует структурный аргумент, встроенный в OWL-API. Этот аргумент ограничен и не способен обрабатывать сложные выражения классов, как у вас.
Как это исправить:
Используйте более продвинутого мыслителя, такого как Отшельник Загрузите и поместите jar в путь к классам, затем замените код в строке 151 следующим образом:
OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
Вам нужно будет импортировать пакет org.semanticweb.HermiT.Reasoner
, Теперь вы будете использовать отшельника для обработки ваших запросов. Пытаться Pizza and (hasTopping some CheeseTopping)
, он должен работать!