我正在尝试撰写查询
Hospitals和hasNameWithWords值“center”^^ string
此查询返回具有医院的名称在Protege 4.2中使用FACT ++推理器以及Hermit推理器
的实例但是当我在网站上提供的OWL-API的DL查询示例中输入相同的查询时 http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java
我没有得到任何结果。
但是当我编写简单的查询(例如
)时,它会给我结果医院
是因为代码中的推理器无法进行推理吗?
还有什么其他推理会更好?
答案 0 :(得分:3)
您用作示例的类(DLQueryExample.java
)依赖于内置结构推理器的OWL-API (OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
)。
这种推理器非常简单,不适合您的复杂查询。但是,它可以在类层次结构上提供答案:这就是您使用简单的查询Hospitals
获得一些结果的原因。
您需要做的是将代码设置为使用Hermit或FACT ++。我用Hermit:
给出了示例OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
替换为:OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
。您必须导入org.semanticweb.HermiT.Reasoner
才能使其正常工作。