Легче всего увидеть разницу от тех вопросов, которые вы можете задать для прямой и обратной цепочки.
Grakn, обратная цепочка
В Grakn, учитывая это правило, если вы запрашиваете:
(1)
match (located: $x, locating: $z) isa locates; get;
Тогда Гракн увидит из вашего запроса, что есть правило, которое можно использовать для вывода такого рода фактов. Затем он работает в обратном направлении, чтобы увидеть, есть ли какие-либо результаты для when
правила. Несколько упрощая, он делает запрос в соответствии с when
:
(2)
match
$r1 (located: $x, locating: $y) isa locates;
$r2 (located: $y, locating: $z) isa locates;
get;
, если есть результаты, то then
выводится Grakn, и вы получаете ответьте на свой исходный запрос (1).
Обратная цепочка отвечает на вопрос: «Это правда?» Использование логического вывода для определения этого.
Прямая цепочка
Прямая цепочка отвечает на другой вопрос. Он говорит: «У меня есть эти факты, что из них можно извлечь из них?». Вы также можете использовать это для ответа на вопрос обратной цепочки, однако он будет гораздо менее эффективным, так как прямая цепочка выведет ненужные факты.
Хорошая сводка из Прямая цепочка Википедии статья:
Поскольку данные определяют, какие правила выбираются и используются, этот метод называется управляемым данными, в отличие от целенаправленного обратного вывода из цепочки.