Datalog

Datalog
Jazyková třída Boolean , deklarativní
Objevil se v 1986  ( 1986 )
Typový systém Slabý
Dialekty Datomic , pyDatalog , Dyna atd.

Datalog  je deklarativní logický programovací jazyk. Ačkoli syntakticky vypadá jako podmnožina Prologu , Datalog obecně používá model rozlišení výrazů zdola nahoru, nikoli shora dolů. Tento rozdíl vede k výraznému rozdílu v chování a vlastnostech oproti Prologu. Často se používá jako dotazovací jazyk pro deduktivní databáze. V posledních letech našel Datalog nové využití v integraci dat, extrakci informací, vytváření sítí, programové analýze, bezpečnosti, cloud computingu a strojovém učení [1] [2] .

Jeho počátky sahají do počátků logického programování, ale jako samostatné téma se začalo prosazovat kolem roku 1977, kdy Herve Galler a Jack Minker uspořádali seminář o logice a databázích [3] . Davidu Mayerovi se připisuje vytvoření termínu Datalog [4] .

Funkce, omezení a rozšíření

Na rozdíl od Prologu lze příkazy programu Datalog zadat v libovolném pořadí. Navíc je zaručeno dokončení dotazů Datalogu na konečné množiny, což je důvod, proč Datalog nemá v Prologu příkaz cut. Díky tomu je Datalog zcela deklarativní jazyk.

Na rozdíl od Prologu, Datalog:

Postup řešení dotazu pomocí Datalogu je založen na logice prvního řádu a z tohoto důvodu je správný a úplný. Datalog však není Turing kompletní, a proto se používá jako doménově specifický jazyk, který může využít efektivních algoritmů navržených pro řešení dotazů. Pro efektivní provádění dotazů byly skutečně navrženy různé metody, jako je algoritmus Magic Sets [6] , programování tabulkové logiky [7] nebo rozlišení SLG [8] .

Některé široce používané databázové systémy zahrnují nápady a algoritmy vyvinuté pro Datalog. Například standard SQL:1999 zahrnuje rekurzivní dotazy a algoritmus Magic Sets (původně navržený pro rychlejší vyhodnocování dotazů Datalog) je implementován v IBM DB2 . Datalog engine navíc stojí za specializovanými databázovými systémy, jako je databáze Intellidimension pro sémantický web [9] . Pro Datalog bylo vytvořeno několik rozšíření, jako je podpora agregačních funkcí, umožnění objektově orientovaného programování nebo umožnění disjunkcí jako záhlaví vět. Tato rozšíření mají významný dopad na definici sémantiky Datalogu a na implementace konkrétních verzí interpretu Datalog.

Fragmenty

Datalogové programy mohou nebo nemusí používat negaci v tělech pravidel: Datalogové programy s negací ji často potřebují použít jako stratifikovanou negaci, aby zajistily, že sémantika je dobře definována. Datalogové programy mohou, ale nemusí používat nerovnosti mezi proměnnými v tělech pravidel.

Jsou definovány některé fragmenty syntaxe Datalogu, například následující (nejvíce omezené až nejméně omezené):

Další omezení se týká použití rekurze: nerekurzivní Datalog je definován zakázáním rekurze v definici programů Datalog. Tento fragment Datalogu je stejně výrazný jako zřetězení dotazů, ale psaní dotazů jako nerekurzivního Datalogu může být stručnější.

Expresivita

Problém omezení pro Datalog se scvrkává na to, zda je program Datalog omezen, tedy zda maximální hloubka rekurze dosažená při vyhodnocování programu ve vstupní databázi může být omezena nějakou konstantou. Jinými slovy, problém se scvrkává na to, zda lze program Datalog přepsat jako nerekurzivní program Datalog. Řešení omezení libovolných programů Datalog je nerozhodnutelné, ale lze jej učinit rozhodným tím, že se omezíme na některé fragmenty Datalogu [10] .

Příklady

Tyto dva řádky definují dvě skutečnosti, tedy věci, které vždy platí:

rodič ( xerces , brooke ). rodič ( brooke , damocles ).

Zde je to, co znamenají: xerces je rodič brooke a brooke je rodič damocles. Názvy jsou psány malými písmeny, protože řetězce začínající velkým písmenem představují proměnné.

Poznámky

  1. Huang, Green, and Loo, Datalog and Emerging applications , SIGMOD 2011 , UC Davis , < http://www.cs.ucdavis.edu/~green/papers/sigmod906t-huang.pdf > Archivováno 22. října 2020 na Wayback Stroj . 
  2. Mei, Hongyuan; Qin, Guanghui; Xu, Minjie; Eisner, Jason (2020). „Neural Datalog Through Time: Informed Temporal Modeling through Logical Specification“. Sborník ICML 2020 . arXiv : 2006.16723 .
  3. Logika a databáze . - New York, 1978. - viii, 458 stran s. - ISBN 0-306-40060-X , 978-0-306-40060-5.
  4. S. Abiteboul. Základy databází . - Reading, Mass.: Addison-Wesley, 1995. - xviii, 685 stran s. - ISBN 0-201-53771-0 , 978-0-201-53771-0.
  5. Datalog (prezentace) (downlink) . web.archive.org (25. března 2017). Získáno 20. srpna 2022. Archivováno z originálu dne 25. března 2017. 
  6. Bancilhon. „Magické sady a další podivné způsoby implementace logických programů“ (PDF) . PT : UNL. Archivováno z originálu (PDF) dne 2012-03-08. Použitý zastaralý parametr |url-status=( nápověda )
  7. Pfenning, Frank; Schuermann, Carsten. „Dvanáct uživatelská příručka“ . CMU. Archivováno z originálu 2022-08-22 . Získáno 22. 8. 2022 . Použitý zastaralý parametr |deadlink=( nápověda )
  8. „Efektivní výpočet dotazů shora dolů podle dobře podložené sémantiky“ (PDF) . Archivováno (PDF) z originálu dne 2013-10-04 . Získáno 22. 8. 2022 . Použitý zastaralý parametr |deadlink=( nápověda )
  9. Proceedings of the 2004 ACM SIGMOD International Conference on Management of Data : 2004, Paris, France, June 13-18, 2004. . - [New York]: Association for Computing Machinery, 2004. - xvii, 988 stran s. - ISBN 1-58113-859-8 , 978-1-58113-859-7.
  10. Gerd G Hillebrand, Paris C Kanellakis, Harry G Mairson, Moshe Y Vardi. Nerozhodnutelné problémy s omezeností pro datalogové programy  //  The Journal of Logic Programming. — 1995-11. — Sv. 25 , iss. 2 . — S. 163–190 . - doi : 10.1016/0743-1066(95)00051-K . Archivováno 7. května 2021.