Prolog查询,如何在查询结果中省略复杂词的第一个参数

时间:2012-01-21 19:15:49

标签: prolog

我正在从“现在学习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)的方式查询嫉妒的人?

感谢。

1 个答案:

答案 0 :(得分:2)

写下这样的复杂查询:

jealous(X,Y):-  loves(X,Z),  loves(Y,Z), X \== Y.

这意味着,XY不能相同。