我如何检查我的Prolog数据库中是否存在特定事实



我正在prolog中做一个问答系统。如果我说"汽车的颜色为蓝色",则将事实(汽车,颜色,蓝色(添加到数据库中,并将prolog返回"确定"。

如何检查这个特定事实存在?我知道您可以检查谓词是否存在,但是我想知道如何确切的事实(汽车,颜色,蓝色(存在,而不是存在其他事实(诸如事实(汽车,感觉,光滑((。

我正在这样做,以便当我说"汽车的颜色为蓝色"时,它返回,我知道,而不是"确定",因为事实现在在数据库中。

检查事实是否存在的最佳方法是查询它。

fact(car, color, blue).
true.

您可以使用答案向用户生成一些输出:

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

认为,序言系统是封闭世界的假设。内部数据库中未包含的任何内容都是自动false的。因此,所有虚假的东西都不会自动包含。

您将在已知/未知与true/false之间有点逻辑同构。

最新更新