Проблема зависимости при создании правила SWRL с API SWRL с использованием gradle
Я пытаюсь добавить правило SWRL в мою онтологию, используя SWRLAPI и OWLAPI. Я пытаюсь использовать версию OWLAPI, которая совместима с SWRLAPI. Тем не менее, я все еще получаю ошибки при создании правила. Кажется, проблема с управлением зависимостями. Я использую Gradle в качестве менеджера зависимостей, поэтому это должно было решить проблему.
Исключение составляет:
Ошибка создания правила движка Drools. Исключение: java.lang.NoClassDefFoundError. Сообщение: org/drools/runtime/rule/AgendaFilter"
Мой файл зависимостей build.gradle:
dependencies {
compile group: 'net.sourceforge.owlapi', name: 'owlapi-distribution', version: '4.1.3'
compile group: 'net.sourceforge.owlapi', name: 'org.semanticweb.hermit', version: '1.4.1.513'
compile 'edu.stanford.swrl:swrlapi:2.0.5'
compile 'edu.stanford.swrl:swrlapi-drools-engine:2.0.5'
}
Исключение происходит при выполнении метода createSWRLRuleEngine:
public void addNewSWRLRule(SWRLRuleModel rule) throws SWRLBuiltInException, SWRLParseException {
SWRLRuleEngine swrlRuleEngine = SWRLAPIFactory.createSWRLRuleEngine(ontology);
swrlRuleEngine.infer();
swrlRuleEngine.createSWRLRule(rule.getName(), rule.getRule(), rule.getComment(), true);
}
Есть ли зависимость, которую нужно добавить вручную, чтобы решить эту проблему?
2 ответа
Проблема заключалась в том, что от Drools Engine были две зависимости от maven (edu.stanford.swrl:swrlapi-drools-engine:2.0.5), которые не были разрешены gradle.
Недостающие зависимости были:
- org.drools: знание-апи: 6.5.0.Final
- org.drools: Drools-OSGi-интеграция: 6.5.0.Final
Я не уверен, что является причиной того, что они не могут быть решены с помощью gradle, но мне удалось исправить проблему в IntelliJ, преобразовав две отсутствующие зависимости в библиотеку репозитория и выполнив поиск в maven, выполнив следующие действия:
- Файл> Структура проекта> Библиотеки
- Щелчок правой кнопкой мыши по отсутствующей библиотеке
- Преобразовать в библиотеку репозитория
- Введите имя зависимости и выполните поиск в репозитории maven.
- замещать
Вы используете HermiT 1.4.1.513. Это совместимо с owlapi 5, а не 4 (номер патча соответствует версии owlapi). Используйте HermiT 1.3.8.413.