/ / Consultando classes anônimas na API OWL com a sintaxe Manchester - ontologia, coruja, protege, owl-api, manchester-syntax

Consultando classes anônimas na API OWL com sintaxe Manchester - ontologia, coruja, protege, owl-api, manchester-syntax

Eu estou usando a API OWL para raciocinar sobre ontologia criada no Protege. Eu estou lidando com a consulta de exemplo de API OWL DL: http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java. Eu acho que este exemplo fornecefuncionalidade equivalente à guia Consulta DL no Protege. Mas, na verdade, existem algumas diferenças significativas: eu preciso obter as informações (subclasse, superclasse, etc.) de uma classe anônima, que é definida por um conjunto de indivíduos (ex {Member1, Member2 ...}) ou em outro caminho. No Protege, essa consulta retorna o resultado correto, mas essa consulta no Exemplo de consulta Dl da API OWL retorna [NOTHING]. Existe uma maneira de manipular classes anônimas na API OWL? Agradecemos antecipadamente por responder.

Respostas:

3 para resposta № 1

Supondo que você esteja usando a classe DLQueryExample como tal, sem modificações.

Você precisa usar um raciocinador diferente dopadrão um. Olhe para a linha 151, a implementação usa o raciocinador estrutural construído na OWL-API. Esse raciocinador é limitado e não é capaz de processar expressões de classe complexas como as suas.

Como corrigi-lo:

Use um raciocinador mais avançado como Eremita. Faça o download e coloque o jar no seu classpath, então substitua o código na linha 151 por:

OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();

Você precisará importar o pacote org.semanticweb.HermiT.Reasoner. Agora você usará o Hermit para processar suas consultas. Experimentar Pizza and (hasTopping some CheeseTopping), deve funcionar!