семейные отношения в Prolog Query: транзитивные отношения

У меня есть такая информация в базе знаний AG

 Person1 hasBrother Person2
 Person1 hasSister Person 3

Как я могу написать правило на прологе, чтобы узнать дополнительные отношения из приведенных выше фактов

Person2 hasSister Person3
Person3 hasBrother Person2
Person 3 is SiblingOf Person 2

Я пробовал так, но безуспешно:

(<-(Family ?p1 relation ?p2)
(q ?p1 !ns:hasBrother ?p2)
(q ?p1 !ns:hasSister ?p2)
)

Может ли кто-нибудь помочь мне написать правило, чтобы получить дополнительные транзитивные отношения?


person user3356568    schedule 11.03.2015    source источник
comment
Код, который вы пробовали (<-(Family ?p1 ...), не похож ни на один Пролог, который я когда-либо видел. Так что мне непонятно, о чем вы просите.   -  person lurker    schedule 11.03.2015
comment
на самом деле это синтаксис правил, когда мы используем пролог в lisp   -  person user3356568    schedule 12.03.2015
comment
Запрос вызывает данные базы знаний AG. хорошо, если вы дадите мне подсказку, как мы можем найти транзитивные отношения в простом синтаксисе пролога, тогда я могу преобразовать в приведенный выше синтаксис правила. ваша помощь будет высоко оценена. Спасибо   -  person user3356568    schedule 12.03.2015
comment
То, что вам нужно, было дано здесь   -  person vmg    schedule 13.03.2015
comment
спасибо vmg понял идею   -  person user3356568    schedule 19.03.2015