使用曼彻斯特语法查询OWL API中的匿名类

时间:2013-05-06 17:02:21

标签: ontology owl protege owl-api manchester-syntax

我正在使用OWL API来推理Protege中创建的本体。我正在处理OWL API示例DL查询:http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java。我想这个例子提供的功能相当于Protege中的DL Query Tab。但实际上存在一些显着的差异:我需要获取匿名类的信息(子类,超类等),这是由一组个体(ex {Member1,Member2 ...})或另一个人定义的。办法。在Protege中,此查询返回正确的结果,但OWL API Dl Query Example中的此类查询返回[NOTHING]。有没有办法在OWL API中操作匿名类?在此先感谢您的回答。

1 个答案:

答案 0 :(得分:3)

假设您未经修改即使用the class DLQueryExample

您需要使用与默认推理器不同的推理器。查看第151行,该实现使用OWL-API中构建的结构推理器。这个推理是有限的,不能像你那样处理复杂的类表达式。

如何修复它:

使用更高级的推理器,例如Hermit。下载并将jar放在类路径上,然后用第151行替换代码:

OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();

您需要导入包org.semanticweb.HermiT.Reasoner。您现在将使用Hermit处理您的查询。试试Pizza and (hasTopping some CheeseTopping),它应该有效!