Запрос анонимных классов в 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), он должен работать!

Другие вопросы по тегам