/ Błąd / DisjointClasses podczas używania opencyc owl w java - java, nlp, ontologia, wnioskowanie, owl-api

DisjointClasses błąd podczas używania opencyc owl w java - java, nlp, ontology, reasoning, owl-api

Obecnie pracuję nad językiem naturalnymprzetwarzanie projektu próbującego użyć openCYC jako KB. W tej chwili po prostu próbuję załadować ontologię i utworzyć instancję argumentu za pomocą java owl api v3.4.8 i HermiT, jednak za każdym razem, gdy próbuję utworzyć instancję argumentu, pojawia się błąd

Wyjątek w wątku „main” java.lang.IllegalArgumentException: Błąd: Analizowano DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q).

obecny kod:

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());

Czy to oznacza, że ​​istnieje problem z samą ontologią opencyc? Czy robię coś złego?

Odpowiedzi:

1 dla odpowiedzi № 1

Problem polega na tym, że openCyc zawiera błędny aksjomat: a DisjointClasses z tylko jednym argumentem. Specyfikacje OWL określają, że DisjointClasses muszą mieć dwa lub więcej argumentów.

Interfejs API OWL pozwoli ci przeanalizować tę ontologię, ale HermiT będzie narzekał na ten aksjomat i być może jeszcze więcej.

Możesz użyć OWL2DLProfile sprawdzić, które aksjomaty naruszają OWL 2 DLprofil. To zgłosi inne błędne aksjomaty tego samego typu. Będziesz jednak musiał sam zdecydować, jakie jest właściwe rozwiązanie - interfejs API OWL nie ma jeszcze implementacji naprawy.