Attualmente sto lavorando su un linguaggio naturaleelaborazione del progetto che tenta di utilizzare openCYC come KB. Al momento sto semplicemente cercando di caricare l'ontologia e di istanziare un ragionatore usando java owl api v3.4.8 e Hermit, tuttavia ogni volta che provo ad istanziare il ragionatore ottengo l'errore
Eccezione nel thread "main" java.lang.IllegalArgumentException: Errore: Analizzato DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q).
codice corrente:
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());
Questo significa che c'è un problema con l'ontologia opencyc stessa? O sto facendo qualcosa di sbagliato?
risposte:
1 per risposta № 1Il problema è che openCyc contiene un assioma errato: a DisjointClasses
con un solo argomento. Le specifiche OWL specificano che DisjointClasses deve avere due o più argomenti.
L'API OWL ti permetterà di analizzare questa ontologia, ma HermiT si lamenterà di questo assioma, e forse di più.
Puoi usare OWL2DLProfile
per verificare quali assiomi stanno violando l'OWL 2 DLprofilo. Questo riporterà altri assiomi errati dello stesso tipo. Dovrai decidere da solo quale sia la soluzione corretta, però - l'API OWL non ha ancora un'implementazione di fissaggio.