在自定义GraphDB规则集中使用算术函数

时间:2018-11-13 11:26:37

标签: owl rules reasoning graphdb

我想向OWL-2-RL规则集( builtin_owl2-rl.pie )添加自定义规则,以在与向量方向相反的向量之间建立isOppositeDirectionOf对象属性彼此。我认为它应该看起来像这样:

Id: oppositeDirectionVector_rule
     v1 <rdf:type> <cad:Vector>
     v1 <cad:x> v1x            // example data property for v1x: "1.0"^^xsd:double
     v1 <cad:y> v1y
     v1 <cad:z> v1z
     v2 <rdf:type> <cad:Vector>
     v2 <cad:x> -v1x
     v2 <cad:y> -v1y
     v2 <cad:z> -v1z
    -------------------------------
    v1 <cad:isOppositeDirectionOf> v2

在没有缺点的情况下,该规则确实可以创建isSameVectorAs对象属性。 有没有办法可以对规则中的数据属性使用基本的算术函数?

1 个答案:

答案 0 :(得分:1)

您不能在规则中使用基本算术函数。由于性能原因,GraphDB规则引擎使用内部数据库标识符,但不使用实际的RDF值,即内部ID 10001而不是"1"^^xsd:double。因此,唯一支持的变量比较操作是两个内部标识符是否相等。

按照以下注释进行编辑GraphDB's Plugin API是将代码与数据库集成的唯一机制。插件可以为?s <cad:x> ?o的每条语句具体化一个新的语句?s <cad:oppositeX> -?o。不幸的是,它也应该处理删除。