我已经用SWRLAPI的SWRLBuiltInBridge组件实现了这一点:https://github.com/protegeproject/swrlapi/wiki/SWRLBuiltInBridge
但是,在我的Java代码中,我还使用了附带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对象是一个参数)相比,创建内置(相应于博客)的方法是不同的。
还有别的方法可以做到吗?或者有可能将球团与SWRLBuiltInBridge连接起来?
发布于 2017-03-07 11:36:09
造粒者不使用SwrlApi。Pellet使用/实现内置的方式实际上与SwrlApi相去甚远。每个内置必须与推理者(ABox)的内部数据结构交互,并且必须使用ATerm的视图进行交互。
但是,如果你需要这样做,总有一个黑客是可能的。您可以遵循关于testSpecialBuitIn()方法的示例。
它们的关键是使用以下方法添加自定义buildIn:BuiltInRegistry.instance.registerBuiltIn.
如果你的积木是正确的,没有更多的要求。
请不要让这个解决方案使用.core。没有接口的Pellet模块;因此,形式/行为的变化可以在没有警告的情况下从一个版本发生到另一个版本。
https://stackoverflow.com/questions/42317609
复制相似问题