java - 使用 gradle 使用 SWRL API 创建 SWRL 规则的依赖性问题

标签 java gradle owl-api swrl

我正在尝试使用 SWRLAPI 和 OWLAPI 将 SWRL 规则添加到我的本体中。我正在尝试使用与 SWRLAPI 兼容的 OWLAPI 版本。但是,我在创建规则时仍然遇到错误。这似乎是依赖管理的问题。我正在使用 gradle 作为依赖管理器,所以这应该已经解决了这个问题。

异常(exception)是:

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。

关于java - 使用 gradle 使用 SWRL API 创建 SWRL 规则的依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273755/

相关文章:

java - 您会选择什么来在 Java 应用程序中运行 HTML/Javascript

java - 如何换行 <af :commandLink> in Oracle ADF 11g application 的文本

java - 在Eclipse的Gradle Project中运行JavaMail API

java - 无法获取 Dbpedia 类的名称

java - 使用 OWLAPI 加载本体文件时出现 UnloadableImportException

java - 使用 java OWL API 声明对象属性

Java Flight Recorder 未报告所有 GC 事件

java spring boot HTTP POST 请求不起作用

android - 如果我缺少翻译,如何强制 android gradle 构建失败

java - 如何修复 java.util.zip.ZipException : duplicate entry while doing android studio cocos compile?