我正在使用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中操作匿名类?在此先感谢您的回答。
答案 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)
,它应该有效!