【发布时间】:2021-09-28 12:58:44
【问题描述】:
让我们从头开始。 有一些人存储在图形数据库中,带有诸如birthDate、name等谓词。 我目前正在尝试编写自定义规则,为年龄超过例如年龄的人添加一些新事实。 50 年。 所以要实现这两个步骤:计算年龄和过滤年龄。
SPARQL 查询可能如下所示:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX drl: <http://...>
SELECT DISTINCT ?person ?age
WHERE {
?person rdf:type drl:Person.
?person drl:Person.birthDate/drl:value ?birthDate;
BIND(year(now()) - year(?birthDate) as ?age)
FILTER (?age > 50)
}
但是如何编写这样的规则呢? 根据https://graphdb.ontotext.com/documentation/standard/reasoning.html#entailment-rules
规则定义的语法如下:
Id: <rule_name> <premises> <optional_constraints> ------------------------------- <consequences> <optional_constraints>
那么可以在<premises> 或<optional_constraints> 中使用BIND 和FILTER 关键字吗?
我想答案是:不是:(
也许有另一种方法来制定这样的规则?
似乎 SPARQL SPIN 函数和魔术谓词不是 GraphDB 的选项?
【问题讨论】:
标签: rule-engine inference graphdb reasoning