2

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

问题是:

  • 当前的 OWL 2 DL 推理器仅支持 SWRL 内置函数
  • 唯一的 SQWRL SWRLAPI 引擎是 drools-swrlapi,它是 OWL 2 RL,无法处理我的 DL 本体

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

  1. 在 Java 中直接使用 OWLAPI 在 OWL 2 DL 推理器(如 Pellet)之上执行 SQWRL
  2. 不知何故同时使用两个推理器(Pellet 和 Drools-SWRLAPI)并避免使用静态 Java 代码

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

喜欢

  1. 使用 DL 推理器进行预计算推理
  2. 在 Drools-SWRLAPI 上运行生成的本体以执行 SQWRL
  3. 将其放回 DL 推理器并验证/计算更多推论
  4. 环形

谢谢!

4

1 回答 1

1

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

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

反向方法,即实现 OWL2DL 推理并在之后应用 SWRL 规则,具有必须选择要实现哪些推理的弱点。分类法中的类表达式不会轻易地通过OWLReasoner界面传递,并且该过程可能在计算上非常昂贵。

于 2016-12-16T19:38:17.180 回答