我在prolog中制作问答系统。如果我说,"汽车的颜色是蓝色,"事实(汽车,颜色,蓝色)被添加到数据库并且prolog返回" OK"。
如何检查此特定事实是否存在?我知道你可以检查谓词是否存在,但我想知道如何检查确切的事实(汽车,颜色,蓝色)是否存在,而不是存在另一个事实(汽车,感觉,平滑)。
我这样做,所以当我说,"汽车的颜色是蓝色"它会回来,"我知道,"而不是"好的,"因为事实现在在数据库中。
答案 0 :(得分:2)
检查事实是否存在的最佳方法是查询它。
check(Fact) :-
call(Fact), !,
write('Exists');
write('Doesen\'t exists'), fail.
您可以使用答案为用户生成一些输出:
{{1}}
考虑到Prolog系统假设封闭世界。内部数据库中未包含的任何内容都将自动为false。因此,所有错误的东西都不会被自动包含。
在已知/未知和真/假之间,你将有一个逻辑同构。