如何使用自定义SWRL内置函数扩展Pellet 2.4.0?

时间:2017-02-18 16:20:33

标签: java owl-api pellet swrl

我已经使用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-in-support-with-your-custom -built-in /





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





还有其他办法吗?或者可以将Pellet与SWRLBuiltInBridge连接起来吗?




1 个答案:

答案 0 :(得分:1)

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

但是如果你需要这样做,总会有一种可能的黑客攻击。 您可以按照示例on the method testSpecialBuitIn()

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

如果你的内置是正确的,没有什么需要。

请注意,此解决方案使用没有接口的Pellet的 .core。模块;因此,形式/行为的变化可能会在一个版本之间发生,而不会发出警告。