3

我正在尝试使用 SWRLAPI 和 OWLAPI 将 SWRL 规则添加到我的本体中。我正在尝试使用与 SWRLAPI 兼容的 OWLAPI 版本。但是,我在创建规则时仍然会出错。这似乎是依赖管理的问题。我正在使用 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);
}

是否存在必须手动添加的依赖项才能解决此问题?

4

2 回答 2

0

问题是来自 Drools Engine (edu.stanford.swrl:swrlapi-drools-engine:2.0.5) 的 2 个 maven 依赖项没有被 gradle 解决。

缺少的依赖项是:

  • org.drools:knowledge-api:6.5.0.Final
  • org.drools:drools-osgi-integration:6.5.0.Final

我不确定是什么导致 gradle 无法解决这些问题,但我设法通过将两个缺少的依赖项转换为存储库库并按照以下步骤在 maven 中搜索这些依赖项来解决 IntelliJ 中的问题:

  1. 文件 > 项目结构 > 库
  2. 右键单击缺少的库
  3. 转换为存储库
  4. 输入依赖名称并在 maven 存储库中搜索
  5. 代替
于 2018-09-12T09:59:38.080 回答
0

您正在使用 HermiT 1.4.1.513。这与 owlapi 5 兼容,而不是 4(补丁号与 owlapi 版本匹配)。使用 Hermit 1.3.8.413。

于 2018-09-12T07:25:29.613 回答