我目前正在做一个自然语言处理项目,试图使用openCYC作为知识库。目前,我只是尝试加载本体并使用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本体本身存在问题?还是我做错了什么?
发布于 2014-01-06 15:25:54
问题是openCyc包含一个错误的公理:只有一个参数的DisjointClasses。OWL规范指定DisjointClasses必须有两个或更多参数。
OWL API将允许您解析这个本体,但是HermiT会抱怨这个公理,甚至更多。
您可以使用OWL2DLProfile检查哪些公理违反了OWL2DL概要。这将报告相同类型的其他错误公理。不过,您必须自己决定什么是正确的解决方案- OWL API还没有修复实现。
https://stackoverflow.com/questions/20936896
复制相似问题