您應該通過以下方式添加到您的文件checkContradictory(至少在gnuprolog):
yourfile.lp
comment(person, book, positive).
comment(person, book, negative).
checkContradictory:- checkCommentContradiction, ... others checking predicates
checkCommentContradiction:-comment(Person, Thing, positive),
comment(Person, Thing, negative),throw(contradiction_with_comments).
所以,如果你想查詢前檢查您的文件,只需執行你的checkContradictory或者如果你有一個主謂,只是添加checkContradictory樣的要求。
重要,如果你需要有一個是沒有錯誤的和異常的時候有你需要添加的findall一個矛盾:
yourfile.lp
comment(person, book, positive).
comment(person, book, negative).
checkFreeOfContradictory:- checkAllCommentsContradictions.
checkAllCommentsContradictions:-findall(X,checkCommentContradiction,R).
checkCommentContradiction:-comment(Person, Thing, B1),
comment(Person, Thing, B2),
(B1==B2->true;throw(contradiction_with_comments)).
主要是因爲同一事實將與評論(人,東西,B1)和評論(人,東西,B2)統一。
*當*你想執行規則? '評論(P,O,C),評論(P,O,D),C \ = D,拋出(invalid_comment).' – CapelliC
@CapelliC它不起作用。我試圖把它放在一個文件中,所以在我將它加載到控制檯後它會相互矛盾。但事實並非如此。 – augu