结合 OWL API 中的推理器以获得 OWL DL + SQWRL 支持
Combining reasoners in OWL API for OWL DL + SQWRL support
我需要在 OWL 2 DL ontology 上计算一些 SQWRL 规则。
问题是:
- 当前OWL 2个DL推理机只支持内置SWRL
- 唯一的 SQWRL SWRLAPI 引擎是 drools-swrlapi,它是 OWL 2 RL,将无法处理我的 DL ontology
我考虑两种可能的解决方案:
- 直接在Java中使用OWLAPI在OWL 2 DL reasoner(如Pellet)
之上执行SQWRL
- 以某种方式同时使用推理器(Pellet 和 Drools-SWRLAPI)并避免静态 java 代码
所以我的问题是:是否可以将两个推理器组合起来,这样它们就不会发生冲突?
喜欢
- 使用 DL 推理器进行预计算推理
- 运行 结果 ontology 在 Drools-SWRLAPI 上执行 SQWRL
- 将其返回到 DL 推理器和 validate/compute 更多推理
- 循环
谢谢!
如果 OWLReasoner
被创建为非缓冲并且 Drools-SWRLAPI 实现输入 ontology 中的所有推断三元组,这应该是可行的。情况可能并非如此,因此可能有必要采取措施来实现这些推论。
我不熟悉 SWRL API 和 Drools 规则引擎,所以我不能说这是否可行或容易;我可能会首先采用支持 SWRL 的开源推理器之一,并尝试用 Drools 代码替换它们的 SWRL 支持 - 这具有确保应用推理器用于确保正确性和完整性的算法的优势(循环之间这两种推理方法应该是一个很好的近似,但可能会遗漏极端情况,以及丢失的优化。
相反的方法,即具体化 OWL2DL 推理并随后应用 SWRL 规则,其缺点是必须选择要具体化的推理; class 分类法中的表达式不会轻易跨过 OWLReasoner
界面,并且该过程的计算成本可能非常高。
我需要在 OWL 2 DL ontology 上计算一些 SQWRL 规则。
问题是:
- 当前OWL 2个DL推理机只支持内置SWRL
- 唯一的 SQWRL SWRLAPI 引擎是 drools-swrlapi,它是 OWL 2 RL,将无法处理我的 DL ontology
我考虑两种可能的解决方案:
- 直接在Java中使用OWLAPI在OWL 2 DL reasoner(如Pellet) 之上执行SQWRL
- 以某种方式同时使用推理器(Pellet 和 Drools-SWRLAPI)并避免静态 java 代码
所以我的问题是:是否可以将两个推理器组合起来,这样它们就不会发生冲突?
喜欢
- 使用 DL 推理器进行预计算推理
- 运行 结果 ontology 在 Drools-SWRLAPI 上执行 SQWRL
- 将其返回到 DL 推理器和 validate/compute 更多推理
- 循环
谢谢!
如果 OWLReasoner
被创建为非缓冲并且 Drools-SWRLAPI 实现输入 ontology 中的所有推断三元组,这应该是可行的。情况可能并非如此,因此可能有必要采取措施来实现这些推论。
我不熟悉 SWRL API 和 Drools 规则引擎,所以我不能说这是否可行或容易;我可能会首先采用支持 SWRL 的开源推理器之一,并尝试用 Drools 代码替换它们的 SWRL 支持 - 这具有确保应用推理器用于确保正确性和完整性的算法的优势(循环之间这两种推理方法应该是一个很好的近似,但可能会遗漏极端情况,以及丢失的优化。
相反的方法,即具体化 OWL2DL 推理并随后应用 SWRL 规则,其缺点是必须选择要具体化的推理; class 分类法中的表达式不会轻易跨过 OWLReasoner
界面,并且该过程的计算成本可能非常高。