使用 gradle 使用 SWRL API 创建 SWRL 规则的依赖性问题
Dependency issue creating SWRL Rule with SWRL API using gradle
我正在尝试使用 SWRLAPI 和 OWLAPI 将 SWRL 规则添加到我的 Ontology。我正在尝试使用与 SWRLAPI 兼容的 OWLAPI 版本。但是,我在创建规则时仍然遇到错误。这似乎是依赖管理的问题。我正在使用 gradle 作为依赖项管理器,所以这应该可以解决问题。
例外情况是:
Error creating rule engine Drools. Exception: java.lang.NoClassDefFoundError. Message: 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);
}
是否有必须手动添加的依赖才能解决此问题?
您正在使用 HermiT 1.4.1.513。这与 owlapi 5 兼容,而不是 4(补丁号与 owlapi 版本匹配)。使用 HermiT 1.3.8.413。
问题是 Drools 引擎 (edu.stanford.swrl:swrlapi-drools-engine:2.0.5) 中有 2 个 Maven 依赖项没有被 gradle 解决。
缺少的依赖项是:
- org.drools:知识-api:6.5.0.Final
- org.drools:drools-osgi-integration:6.5.0.Final
我不确定是什么导致 gradle 无法解决这些问题,但我设法通过将两个缺失的依赖项转换为存储库并在 maven 中搜索它们来解决 IntelliJ 中的问题这些步骤:
- 文件 > 项目结构 > 库
- 右键单击缺少的库
- 转换为存储库
- 键入依赖项名称并在 Maven 存储库中搜索
- 替换
我正在尝试使用 SWRLAPI 和 OWLAPI 将 SWRL 规则添加到我的 Ontology。我正在尝试使用与 SWRLAPI 兼容的 OWLAPI 版本。但是,我在创建规则时仍然遇到错误。这似乎是依赖管理的问题。我正在使用 gradle 作为依赖项管理器,所以这应该可以解决问题。
例外情况是:
Error creating rule engine Drools. Exception: java.lang.NoClassDefFoundError. Message: 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);
}
是否有必须手动添加的依赖才能解决此问题?
您正在使用 HermiT 1.4.1.513。这与 owlapi 5 兼容,而不是 4(补丁号与 owlapi 版本匹配)。使用 HermiT 1.3.8.413。
问题是 Drools 引擎 (edu.stanford.swrl:swrlapi-drools-engine:2.0.5) 中有 2 个 Maven 依赖项没有被 gradle 解决。
缺少的依赖项是:
- org.drools:知识-api:6.5.0.Final
- org.drools:drools-osgi-integration:6.5.0.Final
我不确定是什么导致 gradle 无法解决这些问题,但我设法通过将两个缺失的依赖项转换为存储库并在 maven 中搜索它们来解决 IntelliJ 中的问题这些步骤:
- 文件 > 项目结构 > 库
- 右键单击缺少的库
- 转换为存储库
- 键入依赖项名称并在 Maven 存储库中搜索
- 替换