在 OWL API 中组合推理器以支持 OWL DL + SQWRL

问题描述 投票:0回答:1

我需要在 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. 使用深度学习推理机预先计算推理
  2. 在 Drools-SWRLAPI 上运行生成的本体以执行 SQWRL
  3. 将其放回 DL 推理机并验证/计算更多推论
  4. 循环

谢谢!

java owl ontology owl-api swrl
1个回答
1
投票

如果

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

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

相反的方法,即具体化 OWL2DL 推论并随后应用 SWRL 规则,其缺点是必须选择具体化哪些推论;分类中的类表达式不会轻松地穿过

OWLReasoner
接口,并且该过程的计算成本可能非常高。

© www.soinside.com 2019 - 2024. All rights reserved.