/ / DisjointClasses Fehler bei der Verwendung von OpenCycle Eule in Java - Java, NLP, Ontologie, Argumentation, Eulen-API

DisjointClasses-Fehler bei der Verwendung von OpenCycle-Eule in Java - Java, NLP, Ontologie, Argumentation, Eulen-API

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 № 1

Das 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.