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月.