Datalog是一种数据查询语言,专门设计与大型关系数据库交互[1],语法与Prolog相似。正如SQL只是一个规范,Transact-SQLPL-SQL是其具体实现一样;Datalog也是一个规范,bddbddb[2]、 DES[3]、OverLog[4]、Deals[5]等都按照Datalog的语法实现了自己的语言,所以Datalog没有特定的执行环境(如Java之于Java虚拟机Prolog之于SWI-Prolog)。

起源

编辑

二十世纪九十年代,为了解决更多的问题,带有人工智能的系统通常要携带一个自行开发的数据库。这样的数据库非常简陋,不能数据共享与恢复,也不能在其他人工智能系统间通用。为了降低智能系统与数据库之间的耦合(智能系统可以使用现有的成熟的数据库,并方便地从一种数据库切换到另一种数据库),需要一种在数据库与智能系统间交互的语言。于是Datalog应运而生。[1]

David Maier英语David Maier发明了Datalog这个名称[6]

与Prolog的异同

编辑

Datalog的语法是Prolog的子集;但是Datalog的语义与Prolog不同。

Prolog程序里的事实规则的出现顺序决定了执行结果。很可能两条规则的出现顺序对换,程序就陷入死循环。Datalog程序对事实和规则的出现顺序不做要求,两条规则的出现顺序对换,执行结果仍然是一样的。


参考资料

编辑
  1. ^ 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月. 
  2. ^ bddbddb, Source forge, [2014-02-15], (原始内容存档于2011-07-28) 
  3. ^ Fernan, DES, ES: UCM, [2014-02-15], (原始内容存档于2014-02-22) 
  4. ^ Berkeley (PDF), [2014-02-15], (原始内容存档 (PDF)于2013-05-18) 
  5. ^ Deductive Application Language (DeAL) System. [2014-02-14]. (原始内容存档于2014-02-25). 
  6. ^ 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月.