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