Prolog 无兄弟姐妹事实的叔叔或婶婶

Prolog 无兄弟姐妹事实的叔叔或婶婶,prolog,Prolog,我想知道,如果不在prolog中使用兄弟姐妹事实,我怎么能在家谱中给侄子或侄女打电话。我想不出直接给叔叔打电话的办法 例如: parent(elli, lisa). parent(kelly, lisa). parent(ben, claire). parent(lisa, claire). grandparent(X, Y) :- parent(X, Z), parent(Z, Y). 由于ellie或kelly是ben的侄女,我有一条规则,当祖父母(X,claire)打电话给我时,会让

我想知道,如果不在prolog中使用
兄弟姐妹
事实,我怎么能在家谱中给侄子或侄女打电话。我想不出直接给叔叔打电话的办法

例如:

parent(elli, lisa).
parent(kelly, lisa).

parent(ben, claire).
parent(lisa, claire).

grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
由于ellie或kelly是ben的侄女,我有一条规则,当祖父母(X,claire)打电话给我时,会让ellie和kelly成为claire的孙子。我该如何制定一个规则,以便能够调用
侄女(ben,X)。
因此它将列出ben的所有侄女。我想不出一种方法来只使用父事实,唯一的方法是包含兄弟事实,但有没有一种方法可以不使用兄弟事实


我对prolog非常陌生,就像一周前一样,所以如果我不太理解,请原谅。

当然,如果我父母的父母是其他人的父母,而其他人不是我的父母,那么他们一定是我的叔叔或婶婶。是的,我理解并且可以使用与祖父母相同的规则,因为它可以提取正确的信息,但是我如何才能在不做其他事实的情况下给侄女(ben,X)打电话呢?特别是看看本是不是侄女的叔叔。现在我只能打电话给
祖父母(X,克莱尔)。
给孙子或
祖父母(elli,X)。
给祖父母看。我不知道我的想法是否正确,但有什么方法可以实现将ben调用到规则中呢?经过一番周折后,我明白了,我只需要制定一个
兄弟
然后
叔叔
规则,它就起了作用。谢谢,你的评论使事情有了正确的角度。我不确定我能做到我所做的,但它起了作用,所以我知道你可以在prolog中做到这一点。@user2318083,添加你自己的答案并接受它。其他人将能够使用您的解决方案。请使用您问题的编辑链接添加其他信息。“发布答案”按钮只能用于问题的完整答案。我是否应该将问题的答案放在这里?上面的另一个用户让我回答我自己的问题。做一个或另一个:编辑你的问题以记录答案,或者接受你的答案。
brother(X, Y) :- male(X), parent(X, Z), parent(Y, Z), X \= Y.

uncle(X, Y) :- brother(X, Z), parent(Y, Z).