在我的模式中,我想我定义了这个rule
define rule transitive-hierarchy-rule:
when {
(before: $a, after: $b) isa hierarchy;
(before: $b, after: $c) isa hierarchy;
} then {
(before: $a, after: $c) isa hierarchy;
};
来自文档的通知
“通过规则定义的事实不会存储在知识图中。但是,通过在模式中定义规则,在查询时将生成额外的事实。”
还可以从文档中注意到
当前,要使匹配查询触发推理并从规则中获得推理,必须使用读取事务。我们正致力于在后续版本中支持在写事务中进行推理。
但是,在我的查询match (before: $x, after: $y) isa hierarchy
中,read
事务不返回预期的结果:
{ $x iid 0x826e800b8000000000000000 isa task; $y iid 0x826e80048000000000000002 isa task; }
{ $x iid 0x826e800a8000000000000000 isa task; $y iid 0x826e800b8000000000000000 isa task; }
以上两个结果我都有明确的定义。我原以为第三个结果是通过规则推断出来的。
因此,我正在尝试调试这种情况。我是否可能没有正确地界定这条规则?
那么,如何更多地查询数据库模式中定义的规则呢?
发布于 2022-06-20 23:31:25
你确定要启动推理吗?必须打开“推断”选项,以便在运行查询时触发规则。
参见java客户端API:https://docs.vaticle.com/docs/client-api/java#options的推断选项。
https://stackoverflow.com/questions/72695979
复制相似问题