Я пишу парсер запросов DL на Java. Код дает правильный вывод, когда я даю имя класса в качестве входных данных, но он ничего не возвращает, когда я даю запрос типа «значение hasColor Red» или «значение hasSugar Dry». Я использую OWLAPI.
Парсер запросов DL возвращает пустые значения для определенных запросов
Ответы (1)
Предполагается, что вы используете этот код в качестве примера.
Кажется, что вы используете структурный резонатор по умолчанию. Вам следует включить более сложный механизм рассуждений, например, HermiT.
Сначала загрузите и добавьте банку в свой путь к классам, затем замените строку 178:
OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
by
OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
Он должен работать! Посмотрите этот ответ для получения более подробной информации о это решение, как упомянул @Joshua в комментариях.
person
loopasam
schedule
15.10.2013
@DipinAzhikodan ничего не упомянул о каком-либо конкретном исходном коде. Где вы видите что-нибудь о строке 178? Возможно, он основан на коде, на который ссылались здесь?
- person Joshua Taylor; 16.10.2013
Да, извините, основываясь на симптомах, я предположил, что OP столкнулся с этой проблемой (как вы правильно заметили, видел много раз - я соответствующим образом редактирую ответ).
- person loopasam; 16.10.2013
В данном случае это разумное предположение. Я видел похожие проблемы из-за того, что я оставил StructuralReasoner в примере, всплывающем в списке рассылки OWLAPI, но мне не удалось найти ссылку здесь. Я попытаюсь добавить пример в вики OWLAPI и дать ссылку на него.
- person Ignazio; 16.10.2013
hasColor
илиRed
не объявлены в онтологии или отсутствуют экземпляры этих классов. Вам нужно предоставить часть кода, который вы написали, чтобы устранить неоднозначность. - person Ignazio   schedule 16.10.2013