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

时间:2017-05-31 21:56:37

标签: prolog

我在prolog中制作问答系统。如果我说,"汽车的颜色是蓝色,"事实(汽车,颜色,蓝色)被添加到数据库并且prolog返回" OK"。

如何检查此特定事实是否存在?我知道你可以检查谓词是否存在,但我想知道如何检查确切的事实(汽车,颜色,蓝色)是否存在,而不是存在另一个事实(汽车,感觉,平滑)。

我这样做,所以当我说,"汽车的颜色是蓝色"它会回来,"我知道,"而不是"好的,"因为事实现在在数据库中。

1 个答案:

答案 0 :(得分:2)

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

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

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

{{1}}

考虑到Prolog系统假设封闭世界。内部数据库中未包含的任何内容都将自动为false。因此,所有错误的东西都不会被自动包含。

在已知/未知和真/假之间,你将有一个逻辑同构。