/ / DisjointClasses erro ao usar opencyc owl em java - java, nlp, ontologia, raciocínio, owl-api

DisjointClasses erro ao usar opencyc owl em java - java, nlp, ontologia, raciocínio, owl-api

Atualmente, estou trabalhando em uma linguagem naturalprojeto de processamento tentando usar o openCYC como um KB. No momento, estou simplesmente tentando carregar a ontologia e instanciar um raciocínio usando o java owl api v3.4.8 e o HermiT, no entanto, sempre que tento instanciar o raciocínio, recebo o erro

Exceção no encadeamento "main" java.lang.IllegalArgumentException: Erro: Parsed DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q).

código atual:

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

Isso significa que há um problema com a própria ontologia opencional? Ou estou fazendo algo errado?

Respostas:

1 para resposta № 1

O problema é que o openCyc contém um axioma incorreto: um DisjointClasses com apenas um argumento. As especificações do OWL especificam que DisjointClasses deve ter dois ou mais argumentos.

A API da OWL permitirá analisar essa ontologia, mas o HermiT se queixará desse axioma e possivelmente mais.

Você pode usar OWL2DLProfile para verificar quais axiomas estão violando o OWL 2 DLperfil. Isso relatará outros axiomas errôneos do mesmo tipo. Você terá que decidir qual é a solução correta - a API da OWL ainda não possui uma implementação de correção.