【问题标题】:no inferences with DL queries in OWL - APIOWL 中的 DL 查询没有推论 - API
【发布时间】:2013-01-16 07:30:17
【问题描述】:

我正在尝试编写查询

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

我没有得到任何结果。

但是当我编写诸如

这样的简单查询时,它会给我结果

医院

是不是因为代码中的reasoner无法进行推理?

还有什么推理机更好?

【问题讨论】:

    标签: semantic-web ontology owl protege dlquery


    【解决方案1】:

    您用作示例的类 (DLQueryExample.java) 依赖于内置的 OWL-API 结构推理器 (OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();)。

    这种类型的推理器相当简单,不适合像您这样的复杂查询。然而,它可以提供关于类层次结构的答案:这就是为什么您可以通过简单的查询 Hospitals 获得一些结果。

    您需要做的是将代码设置为使用 Hermit 或 FACT++。我以Hermit为例:

    • DownloadHermiT jar 文件并将其添加到项目的类路径中。
    • 在您的班级中,将OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory(); 行替换为:OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();。您必须导入 org.semanticweb.HermiT.Reasoner 才能使其正常工作。
    • 我们刚刚用 HermiT 替换了默认的推理器。其余代码应该保持不变,您的查询现在应该可以工作了。
    • 您可以尝试FaCT++Pellet 并比较速度等...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多