[我参加了一个网络研讨会,并了解到Grakn通过基于规则和基于类型的推理来支持推理:
person sub entity;
man sub person;
when {
$r1 (located: $x, locating: $y) isa locates;
$r2 (located: $y, locating: $z) isa locates;
},
then {
(located: $x, locating: $z) isa locates;
};
在这种情况下,后向推理与正向链接有何不同?
最容易看到与您可以要求向前和向后链接的问题有所不同的地方。
Grakn,向后链接
在Grakn中,如果您查询,请遵循以下规则:
((1)
match (located: $x, locating: $z) isa locates; get;
然后Grakn从您的查询中会发现有一个规则可以用来推断这种事实。然后,它向后工作以查看规则的when
是否有任何结果。稍微简化一下,它根据when
:
((2)
match
$r1 (located: $x, locating: $y) isa locates;
$r2 (located: $y, locating: $z) isa locates;
get;
如果有结果,则由Grakn推断then
,您将得到原始查询的答案(1)。
向后链接回答了这个问题,“这是真的吗?”使用推断来确定这一点。
正向链接
正向链接回答了另一个问题。它说:“我有这些事实,从这些事实中可以推断出什么?”您也可以使用它来回答反向链接问题,但是由于向前链接会推断出不必要的事实,因此效率将大大降低。
Wikipedia's Forward Chaining文章的摘要:
由于数据确定选择和使用了哪些规则,因此与目标驱动向后相反,这种方法称为数据驱动链接推理。