【发布时间】:2018-11-13 11:26:37
【问题描述】:
我想向 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 对象属性。
有没有办法可以在规则中的数据属性上使用基本算术函数?
【问题讨论】:
-
我还想知道是否可以通过
.pie文件中的自定义规则创建新实例(在 Protégé 中也称为个人)。我只看到了用于在现有事物之间建立新链接的推论(规则的 ---- 行下方的内容)。 -
我理解
Constraint,但[Cut]和[Context]在公理旁边是什么意思(规则的---- 行上方是什么)?我似乎无法谷歌... -
上下文仅用于限制一个规则的结果,如果共享相同的上下文,则输入其他规则。
-
您使用的语法显然是错误的。考虑到像
BIND这样的东西是不可能的,我认为它目前是不可能的。或者至少,文档中没有提到它,您可以尝试它是否有效。 -
我现在看到的唯一解决方案是使用 SPARQL 更新查询。显然,鉴于通常会进行定点迭代,因此不清楚如何将其与规则推断结合起来,因此,单个 SPARQL 查询可能会导致不完整的结果(在我看来很可能,但取决于其余数据)。在 OWL RL 物化之后运行它,然后重新运行 OWL RL 物化并比较三元存储中的三元数 - 这就是我的方式。
标签: owl rules reasoning graphdb