簡介
Datalog是一種數據查詢語言,專門設計與大型關係資料庫互動,語法與Prolog相似。正如SQL只是一個規範,Transact-SQL、PL-SQL是其具體實現一樣;Datalog也是一個規範,bddbddb、 DES、OverLog、Deals等都按照Datalog的語法實現了自己的語言,所以Datalog沒有特定的執行環境(如Java之於Java虛擬機,Prolog之於SWI-Prolog)。
起源
二十世紀九十年代,為了解決更多的問題,帶有人工智慧的系統通常要攜帶一個自行開發的資料庫。這樣的資料庫非常簡陋,不能數據共享與恢復,也不能在其他人工智慧系統間通用。為了降低智慧型系統與資料庫之間的耦合(智慧型系統可以使用現有的成熟的資料庫,並方便地從一種資料庫切換到另一種資料庫),需要一種在資料庫與智慧型系統間互動的語言。於是Datalog應運而生。
David Maier發明了Datalog這個名稱。
與Prolog的異同
Datalog的語法是Prolog的子集;但是Datalog的語義與Prolog不同。
Prolog程式里的 事實和 規則的出現順序決定了執行結果。很可能兩條規則的出現順序對換,程式就陷入死循環。Datalog程式對事實和規則的出現順序不做要求,兩條規則的出現順序對換,執行結果仍然是一樣的。