Datalog是一种数据查询语言,专门设计与大型关系数据库交互[1],语法与Prolog相似。正如SQL只是一个规范,Transact-SQL、PL-SQL是其具体实现一样;Datalog也是一个规范,bddbddb[2]、 DES[3]、OverLog[4]、Deals[5]等都按照Datalog的语法实现了自己的语言,所以Datalog没有特定的执行环境(如Java之于Java虚拟机,Prolog之于SWI-Prolog)。
起源
二十世纪九十年代,为了解决更多的问题,带有人工智能的系统通常要携带一个自行开发的数据库。这样的数据库非常简陋,不能数据共享与恢复,也不能在其他人工智能系统间通用。为了降低智能系统与数据库之间的耦合(智能系统可以使用现有的成熟的数据库,并方便地从一种数据库切换到另一种数据库),需要一种在数据库与智能系统间交互的语言。于是Datalog应运而生。[1]
David Maier发明了Datalog这个名称[6]。
与Prolog的异同
Datalog的语法是Prolog的子集;但是Datalog的语义与Prolog不同。
Prolog程序里的事实和规则的出现顺序决定了执行结果。很可能两条规则的出现顺序对换,程序就陷入死循环。Datalog程序对事实和规则的出现顺序不做要求,两条规则的出现顺序对换,执行结果仍然是一样的。
参考资料
- ^ 1.0 1.1 Stefano Ceri; Georg gottlob, Letizia Tanca. What You Always Wanted to Know About Datalog (And Never Dared to Ask) 1. 1989年3月.
- ^ bddbddb, Source forge, [2014-02-15], (原始内容存档于2011-07-28)
- ^ Fernan, DES, ES: UCM, [2014-02-15], (原始内容存档于2014-02-22)
- ^ Berkeley (PDF), [2014-02-15], (原始内容存档 (PDF)于2013-05-18)
- ^ Deductive Application Language (DeAL) System. [2014-02-14]. (原始内容存档于2014-02-25).
- ^ Abiteboul, Serge; Hull, Richard; Vianu, Victor, Foundations of databases: 305, [2014-02-15], (原始内容存档于2014-06-27)
- Stefano Ceri; Georg gottlob, Letizia Tanca. What You Always Wanted to Know About Datalog (And Never Dared to Ask) 1. 1989年3月.