2012-01-21 27 views
0

我正在從「Learn prolog now」一書中學習Prolog。我在序言中很新手,對於那個愚蠢的問題感到抱歉:)。序言查詢,如何在查詢結果中省略複雜術語的第一個參數

我有這樣的知識基礎:

loves(vincent,mia). 
    loves(marsellus,mia). 
    loves(pumpkin,honey_bunny). 
    loves(honey_bunny,pumpkin). 

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

我們看到,文森特和marsellus都喜歡MIA。我們也有嫉妒的複雜術語來識別嫉妒的人。所以,如果我用邏輯上的jealous(vincent, X).來查詢KB,我應該得到所有愛上mia的人,除了vincent(本例中是marsellus),但查詢返回vincent和marsellus。我知道查詢在技術上正常工作,但我的問題是,如何查詢嫉妒的人民的方式從查詢結果中省略第一個參數(在這種情況下,vincent)?

謝謝。

回答

2

寫這樣的複雜查詢:

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

這意味着,XY不能是相同的。

+0

謝謝,工作就像一個魅力:) – Davita

相關問題