结合 OWL API 中的推理器以获得 OWL DL + SQWRL 支持

Combining reasoners in OWL API for OWL DL + SQWRL support

我需要在 OWL 2 DL ontology 上计算一些 SQWRL 规则。

问题是:

我考虑两种可能的解决方案:

  1. 直接在Java中使用OWLAPI在OWL 2 DL reasoner(如Pellet)
  2. 之上执行SQWRL
  3. 以某种方式同时使用推理器(Pellet 和 Drools-SWRLAPI)并避免静态 java 代码

所以我的问题是:是否可以将两个推理器组合起来,这样它们就不会发生冲突?

喜欢

  1. 使用 DL 推理器进行预计算推理
  2. 运行 结果 ontology 在 Drools-SWRLAPI 上执行 SQWRL
  3. 将其返回到 DL 推理器和 validate/compute 更多推理
  4. 循环

谢谢!

如果 OWLReasoner 被创建为非缓冲并且 Drools-SWRLAPI 实现输入 ontology 中的所有推断三元组,这应该是可行的。情况可能并非如此,因此可能有必要采取措施来实现这些推论。

我不熟悉 SWRL API 和 Drools 规则引擎,所以我不能说这是否可行或容易;我可能会首先采用支持 SWRL 的开源推理器之一,并尝试用 Drools 代码替换它们的 SWRL 支持 - 这具有确保应用推理器用于确保正确性和完整性的算法的优势(循环之间这两种推理方法应该是一个很好的近似,但可能会遗漏极端情况,以及丢失的优化。

相反的方法,即具体化 OWL2DL 推理并随后应用 SWRL 规则,其缺点是必须选择要具体化的推理; class 分类法中的表达式不会轻易跨过 OWLReasoner 界面,并且该过程的计算成本可能非常高。