我正在从“现在学习prolog”一书中学习Prolog。我在prolog中很新手,对这个愚蠢的问题感到抱歉:)。
我有这样的知识基础:
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).
jealous(X,Y):- loves(X,Z), loves(Y,Z).
我们看到vincent和marsellus都喜欢mia。我们也有嫉妒的复杂条款来识别嫉妒的人。所以,如果我在逻辑上用jealous(vincent, X).
查询KB,我应该得到所有爱上mia的人,除了vincent(在这种情况下为marsellus),但查询返回vincent和marsellus。我知道查询在技术上是正确的,但我的问题是,如何从查询结果中省略第一个参数(本例中为vincent)的方式查询嫉妒的人?
感谢。
答案 0 :(得分:2)
写下这样的复杂查询:
jealous(X,Y):- loves(X,Z), loves(Y,Z), X \== Y.
这意味着,X
和Y
不能相同。