1

我目前正在研究一个尝试将 openCYC 用作 KB 的自然语言处理项目。目前,我只是尝试加载本体并使用 java owl api v3.4.8 和 HermiT 实例化推理器,但是每当我尝试实例化推理器时,都会出现错误

线程“主”java.lang.IllegalArgumentException 中的异常:错误:已解析 DisjointClasses(http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q)。

当前代码:

File ontology = new File("owl-export-unversioned.owl");

    OWLOntologyManager m = OWLManager.createOWLOntologyManager();

    System.out.println("Loading...");
    OWLOntology o = m.loadOntologyFromOntologyDocument(ontology);
    System.out.println("Loaded");

    Reasoner hermit=new Reasoner(o);
    System.out.println(hermit.isConsistent());

这是否意味着opencyc本体本身存在问题?还是我做错了什么?

4

1 回答 1

1

问题是 openCyc 包含一个错误的公理: aDisjointClasses只有一个参数。OWL 规范指定 DisjointClasses 必须有两个或多个参数。

OWL API 可以让你解析这个本体,但 HermiT 会抱怨这个公理,甚至更多。

您可以使用OWL2DLProfile它来检查哪些公理违反了 OWL 2 DL 配置文件。这将报告相同类型的其他错误公理。不过,您必须自己决定什么是正确的解决方案 - OWL API 还没有修复实现。

于 2014-01-06T07:25:53.820 回答