Datalog

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Datalog je deklarativní logický programovací jazyk, který vychází z Prologu. Často se používá jako dotazovací jazyk pro deduktivní databáze.

Začal se používat už v počátcích logického programování, ale samostatně se proslavil kolem roku 1977, díky Hervému Gallaire a Jacku Minkerovi, kteří uspořádali seminář o logice a databázích. Termín datalog zavedl profesor David Maier.

Rozdíly oproti Prologu

Datalog na rozdíl od Prologu:

* nelze psát složité výrazy dovnitř predikátů. Například proměnné v predikátu jsou v pořádku, složené výrazy nelze * funkční symboly nejsou vůbec povoleny * nemá operátor řezu (cut) - ukončení dotazů je automatické * nezáleží na pořadí uvedení příkazů * pro použití rekurze se zde vyskytují určitá omezení * vyžaduje, aby se každá proměnná, vyskytující se v hlavě (head) klauzule (věta zakončená tečkou), nebo v záporném - negovaném - literálu v těle (tail) klauzule, objevila i v nenegovaném literálu v těle klauzule * umožňuje disjunkci jako hlavu klauzulí * umožňuje objektově orientované programování

Funkce

Vyhodnocení dotazu je založeno na logice prvního řádu, ale není turingovsky úplný. Na základě toho může využívat výhod efektivních algoritmů.

Skládá se z množiny pravidel, z nichž je každé spojovacím dotazem.

Fragmenty

Programy Datalogu mohou mít použitelný fragment s/bez negace v tělech pravidel a s/bez nerovnosti mezi proměnnými v tělech pravidel.

Některé syntaktické fragmenty Datalogu jsou:

* lineární Datalog - nejvíce omezený, těla pravidel musí obsahovat právě jeden atom, * strážený Datalog - pro každé pravidlo se musí všechny proměnné, vyskytující se v tělech pravidel, vyskytovat ještě společně alespoň v jednom atomu - ochranný atom, * nerekurzivní Datalog - jak název napovídá, v definici programu Datalog je rekurze zakázána.

Sémantika

Datalog má tři velmi rozlišné, ale přesto ekvivalentní přístupy, jak definovat vlastní sémantiku:

# Teorie modelů # Teorie důkazů # Fitpoint (sémantika fixpointů)

Syntax

Datalog se skládá ze seznamu faktů a pravidel (Hornova klauzule). Predikáty také mohou být definovány fakty a pravidly.

Příklad pravidlo: hlava :- tělo - tělo -> hlava (klasická implikace)

::= | | ɛ ::= "(" ")." ::= ":-" "." ::= "(" ")" ::= | "," ::= | ::= | "," ::= | ","

Datalog rozlišuje mezi extenzivními predikáty (definované fakty) a intenzivními predikáty (definovaná pravidla).

Řetězce začínající velkým písmenem představují proměnné. Řetězce začínající malým písmenem představují názvy.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top