Ich arbeite gerade an einer natürlichen SpracheVerarbeitungsprojekt versucht, openCYC als KB zu verwenden. Im Moment versuche ich einfach, die Ontologie zu laden und einen Reasoner mit der Java-Eule api v3.4.8 und HermiT zu instantiieren, aber immer wenn ich versuche, den Reasoner zu instantiieren, bekomme ich den Fehler
Ausnahme im Thread "main" java.lang.IllegalArgumentException: Fehler: Parsed DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q).
aktueller Code:
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());
Bedeutet das ein Problem mit der OpenCyc-Ontologie? Oder mache ich etwas falsch?
Antworten:
1 für die Antwort № 1Das Problem ist, dass openCyc ein falsches Axiom enthält: a DisjointClasses
mit nur einem Argument. Die OWL-Spezifikationen geben an, dass DisjointClasses zwei oder mehr Argumente haben muss.
Die OWL-API lässt Sie diese Ontologie analysieren, aber HermiT wird sich über dieses Axiom beklagen und möglicherweise mehr.
Sie können verwenden OWL2DLProfile
um zu überprüfen, welche Axiome den OWL 2 DL verletzenProfil. Dies wird andere fehlerhafte Axiome des gleichen Typs melden. Sie müssen selbst entscheiden, was die richtige Lösung ist - die OWL-API hat noch keine Fixierungsimplementierung.