Datalog是一种数据查询语言,专门设计与大型
关系数据库交互,语法与
Prolog相似。正如
SQL只是一个规范,
Transact-SQL、PL-SQL是其具体实现一样;Datalog也是一个规范,bddbddb、 DES、OverLog、Deals等都按照Datalog的语法实现了自己的语言,所以Datalog没有特定的执行环境(如
Java之于
Java虚拟机,
Prolog之于SWI-Prolog)。
Datalog是一种数据查询语言,专门设计与大型
关系数据库交互,语法与
Prolog相似。正如
SQL只是一个规范,
Transact-SQL、PL-SQL是其具体实现一样;Datalog也是一个规范,bddbddb、 DES、OverLog、Deals等都按照Datalog的语法实现了自己的语言,所以Datalog没有特定的执行环境(如
Java之于
Java虚拟机,
Prolog之于SWI-Prolog)。
二十世纪九十年代,为了解决更多的问题,带有
人工智能的系统通常要携带一个自行开发的数据库。这样的数据库非常简陋,不能数据共享与恢复,也不能在其他人工智能系统间通用。为了降低智能系统与数据库之间的
耦合(智能系统可以使用现有的成熟的数据库,并方便地从一种数据库切换到另一种数据库),需要一种在数据库与智能系统间交互的语言。于是Datalog应运而生。
Datalog的语法是
Prolog的子集;但是Datalog的语义与Prolog不同。
Prolog程序里的事实和规则的出现顺序决定了执行结果。很可能两条规则的出现顺序对换,程序就陷入死循环。Datalog程序对事实和规则的出现顺序不做要求,两条规则的出现顺序对换,执行结果仍然是一样的。