我参加了一个网络研讨会,了解到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;
};
在这种情况下,反向推理与正向链接有何不同?
发布于 2020-04-30 17:56:22
最容易看出问题的不同之处在于你可以提出向前和向后链接的问题。
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文章的一个很好的总结:
由于数据决定了选择和使用哪些规则,因此此方法称为数据驱动,而不是目标驱动的反向链接推理。
https://stackoverflow.com/questions/61508739
复制相似问题