我已经用swrlapi的swrlbuiltinbridge组件完成了此操作:https://github.com/protegeproject/swrlapi/wiki/swrlbuiltinbridge
但是,在我的Java代码中,我还将弹丸推理器与Owlapi一起使用。每当我使用推理器时,当它找到具有未知内置的SWRL规则时,就会生成警告。我知道我可以禁用推理器中的规则检查,并在我想运行规则时使用SWRLAPI。
,但这似乎是非实践的...因为在使用推理器之前,我必须在每个本体修改后都必须运行规则。
我已经看过一个博客页面,该页面深入探讨了这个问题,但可能已经过时了: https://semwebguy.wordpress.com/2011/01/01/04/how-to-to-xextend-pellet2-2-2-2-2-2s-swrl-built-built-in-support-with-with-your-custom-built-in/
此外,与swrlapi相比,创建内置的(相应到博客)的方式是不同的(例如,Abox对象是一个参数)。
还有另一种方法可以做到吗?还是可以与Swrlbuiltinbridge连接颗粒?
颗粒推理器不使用swrlapi。颗粒使用/内置的方式实际上离SWRLAPI远远不足。每个内置的内置必须与推理器的内部数据结构(ABOX)进行交互,并且必须使用ATERM的OBJET进行。
但是,如果您需要这样做,总会有一个可能的黑客。您可以在方法testspecialbuitin()的方法上按照以下示例。
他们的关键是使用以下方法添加您的自定义构建:BuiltInRegistry.instance.registerBuiltIn.
如果您的内置是正确的,则无需更多。
请不要说此解决方案使用 .core。因此,形式/行为的变化可能会从一个版本到另一个版本而不会警告。