2017-05-31 64 views
1

我在序言中提出了一個問答系統。如果我說,「汽車的顏色是藍色的,」事實上(汽車,顏色,藍色)被添加到數據庫,prolog返回「OK」。如何檢查我的prolog數據庫中是否存在特定的事實

如何檢查此特定事實是否存在?我知道你可以檢查謂詞是否存在,但我想知道如何檢查確切的事實(汽車,顏色,藍色)存在,而不是像事實(汽車,感覺,光滑)這樣的事實存在。

我這樣做是爲了當我說「汽車的顏色是藍色」時,它返回「我知道」而不是「確定」,因爲事實現在存在於數據庫中。

回答

2

檢查事實是否存在的最好方法是查詢它。

fact(car, color, blue). 
true. 

您可以使用應答,產生一些輸出給用戶:

check(Fact) :- 
    call(Fact), !, 
    write('Exists'); 
    write('Doesen\'t exists'), fail. 

考慮到Prolog的系統使封閉世界的假設。任何不包含在內部數據庫中的內容都會自動爲false。因此,所有錯誤的東西都不會被自動包含。

在已知/未知和真/假之間你會有一種邏輯同構。

相關問題