0

我已经使用 SWRLAPI 的 SWRLBuiltInBridge 组件完成了这项工作: https ://github.com/protegeproject/swrlapi/wiki/SWRLBuiltInBridge

但是,在我的 Java 代码中,我还将 Pellet Reasoner 与 OWLAPI 一起使用。每当我使用推理器时,它会在发现内置未知的 SWRL 规则时生成警告。我知道我可以在推理器中禁用规则检查,并在我想运行规则时使用 SWRLAPI。

但这似乎不切实际......因为在我使用推理器之前,我必须在每次修改本体之后运行规则。

我看过一个深入研究这个问题的博客页面,但可能已经过时: https ://semwebguy.wordpress.com/2011/01/04/how-to-extend-pellet2-2-2s-swrl-built-支持您的自定义内置/

此外,与 SWRLAPI(例如 Abox 对象是一个参数)相比,创建内置的方式(根据博客)是不同的。

还有另一种方法可以做到这一点吗?或者是否可以将 Pellet 与 SWRLBuiltInBridge 连接起来?

4

1 回答 1

1

Pellet 推理器不使用 SwrlApi。Pellet 使用/实现内置的方式与 SwrlApi 相差甚远。每个内置必须与推理器(ABox)的内部数据结构交互,并且必须使用 ATerm 的对象来完成。

但是,如果您需要这样做,总有一种破解方法是可能的。您可以按照testSpecialBuitIn() 方法上的示例进行操作。

他们的关键是使用此方法添加您的自定义构建:BuiltInRegistry.instance.registerBuiltIn.

如果你的内建是正确的,就没有更多的要求了。

请不要让此解决方案使用.core。没有接口的 Pellet 模块;因此,形式/行为的变化可能会在没有警告的情况下从一个版本发生到另一个版本。

于 2017-03-07T11:36:09.600 回答