我正在prolog中做一个问答系统。如果我说"汽车的颜色为蓝色",则将事实(汽车,颜色,蓝色(添加到数据库中,并将prolog返回"确定"。
如何检查这个特定事实存在?我知道您可以检查谓词是否存在,但是我想知道如何确切的事实(汽车,颜色,蓝色(存在,而不是存在其他事实(诸如事实(汽车,感觉,光滑((。
我正在这样做,以便当我说"汽车的颜色为蓝色"时,它返回,我知道,而不是"确定",因为事实现在在数据库中。
检查事实是否存在的最佳方法是查询它。
fact(car, color, blue).
true.
您可以使用答案向用户生成一些输出:
check(Fact) :-
call(Fact), !,
write('Exists');
write('Doesen't exists'), fail.
认为,序言系统是封闭世界的假设。内部数据库中未包含的任何内容都是自动false的。因此,所有虚假的东西都不会自动包含。
您将在已知/未知与true/false之间有点逻辑同构。