Проблема зависимости при создании правила SWRL с помощью API SWRL с использованием gradle - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь добавить правило 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 ]

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

Проблема заключалась в том, что было 2 зависимости maven от Drools Engine (edu.stanford.swrl: swrlapi-drools-engine: 2.0.5), которые не были разрешены gradle.

Отсутствующие зависимости были:

  • org.drools: знание-API: 6.5.0.Final
  • org.drools: drools-osgi-интеграция: 6.5.0.Final

Я не уверен, что приводит к тому, что они не могут быть решены с помощью gradle, но мне удалось исправить проблему в IntelliJ, преобразовав две отсутствующие зависимости в библиотеку репозитория и выполнив поиск в maven, выполнив следующие шаги:

  1. Файл> Структура проекта> Библиотеки
  2. Щелкните правой кнопкой мыши отсутствующую библиотеку
  3. Преобразовать в библиотеку репозитория
  4. Введите имя зависимости и выполните поиск в репозитории maven
  5. Заменить
0 голосов
/ 12 сентября 2018

Вы используете HermiT 1.4.1.513. Это совместимо с owlapi 5, а не 4 (номер патча соответствует версии owlapi). Используйте HermiT 1.3.8.413.

...