datalogdatalog s. costantini. s. costantini / datalog e asp2 datalog base: notazione, esempi,...
Embed Size (px)
TRANSCRIPT

DatalogDatalogDatalogDatalog
S. CostantiniS. Costantini

S. Costantini / Datalog e ASP 2
Datalog base: notazione, esempi, semantica

S. Costantini / Datalog e ASP 3
Datalog• A language for Deductive Databases
– Extensional part: tables– Intensional part: rules

S. Costantini / Datalog e ASP 4
Logic: Intuition

S. Costantini / Datalog e ASP 5
Datalog Terminology: Atoms
• An atom is a predicate, or relation name with variables or constants as arguments. E.g.,
in(alan,r123)
part_of(r123,cs_building)
p(X,a)

S. Costantini / Datalog e ASP 6
Datalog Terminology: Atoms
• Conventions: – Databases: Predicates begin with a
capital, variables begin with lower-case. Example: P(x,’a’) where ‘a’ is a constant, i.e., a data item.
– Logic Programming: Variables begin with a capital, predicates and constants begin with lower-case. Example: p(X,a).

S. Costantini / Datalog e ASP 7
Datalog Terminology: Rules
• The head of a rule is an atom; the body of a rule is the AND of one or more atoms. E.g., in(X,Y):- part_of(Z,Y), in(X,Z).
where “:-” stands for “”

S. Costantini / Datalog e ASP 8
Datalog Terminology: Rules
• Rules without body: E.g., in(alan,r123).

S. Costantini / Datalog e ASP 9
Datalog and Transitivity• Rule
in(X,Y):- part_of(X,Z),in(Z,Y)
defines in as the transitive closure of part_of

S. Costantini / Datalog e ASP 10
Arithmetic Subgoals• In addition to relations as predicates,
a predicate of the body can be an arithmetic comparison.– We write such atoms in the usual way,
e.g.: x < y.

S. Costantini / Datalog e ASP 11
Example: Arithmetic• A beer is “cheap” if there are at least
two bars that sell it for under $2.
cheap(Beer) :-sells(Bar1,Beer,P1),sells(Bar2,Beer,P2), P1 < 2.00,P2 < 2.00, Bar1 <> Bar2.

S. Costantini / Datalog e ASP 12
DatalogTerminology: p q, not r. or p :- q, not r.
is a rule, where p is the head, or conclusion, or consequent, and q, not r is the body, or the conditions, or the antecedent. p, q and r are atoms.
A rule without body, indicated as p . or p.Is called a unit rule, or a fact.
This kind of rules ale also called Horn Clauses.

S. Costantini / Datalog e ASP 13
DatalogTerminology:
p q, not r
Atoms in the body can be called subgoals. Atoms which occur positively in the body are positive literals, and the negations are negative literals.

S. Costantini / Datalog e ASP 14
DatalogTerminology:
p q, not r
We say that p depends on q and not r.
The same atom can occur in a rule both as a positive literal, and inside a negative literal
(e.g. rule p not p).

S. Costantini / Datalog e ASP 15
Datalog Programs• A Datalog theory, or “program”, is a
collection of rules.• In a program, predicates can be
either1. EDB = Extensional Database = facts.2. IDB = Intensional Database = relation
defined by rules.

S. Costantini / Datalog e ASP 16
Expressive Power of Datalog
• Without recursion, Datalog can express all and only the queries of core relational algebra.
• But with recursion, Datalog can express more than these languages.
• Yet still not Turing-complete.

S. Costantini / Datalog e ASP 17
Examplep(X) r(X),q(X).r(Z) s(Z).s(a).s(b).q(b).• In every rule, each variable stands for the same
value.• Thus, variables can be considered as
“placeholders” for values.• Possible values are those that occur as
constants in some rule/fact of the program itself.

S. Costantini / Datalog e ASP 18
Datalog
Its grounding can be obtained by:• considering the constants, here a,b.• substituting variables with constants in any
possible (coherent) way)• E. g., the atom r(Z) is transformed by grounding
over constants a, b into the two ground atoms r(a), r(b).

S. Costantini / Datalog e ASP 19
Grounding
• E. g., the atom r(Z) is transformed by grounding over constants a, b into the two ground atoms r(a), r(b).
• Rule r(Z) s(Z). is transformed into the two rulesr(a) s(a).r(b) s(b).

S. Costantini / Datalog e ASP 20
DatalogGrounding of the programp(a) r(a),q(a).p(b) r(b),q(b).r(a) s(a).r(b) s(b).s(a).s(b).q(b).
Semantics: Least Herbrand ModelM = {s(a),s(b),q(b),r(a),r(b),p(b)}

S. Costantini / Datalog e ASP 21
Datalog
A shortcut of the grounded program
p1 r1,q1.
p2 r2,q2.
r1 s1.
r2 s2.
s1.
s2.
q2.
M = {s1,s2,q2,r1,r2,p2}

S. Costantini / Datalog e ASP 22
Datalog semantics
• Without negation (no negative literal in the body of rules): Least Herbrand Model– The head of a rule is in the Least
Herbrand Model only if the body is in the Least Herbrand Model.

S. Costantini / Datalog e ASP 23
Least Herbrand Model: Intuition

S. Costantini / Datalog e ASP 24
Least Herbrand Model: Intuition
In the example: Least Herbrand Model
M0 = {in(alan,r123), part_of(r123,cs_building)}
M1= {in(alan,r123), part_of(r123,cs_building), in(alan,cs_building)}

S. Costantini / Datalog e ASP 25
Least Herbrand Model: How to find itp g,h.g r,s.m p,q.r f.s.f.h.
Step 1: facts M0 = {s,f,h}Step 2: M1 = M0 plus what I can derive from facts M1 = {s,f,h,r}Step 3: M2 = M1 plus what I can derive from M1
M2 = {s,f,h,r,g}Step 4: M3 = M2 plus what I can derive from M2
M3 = {s,f,h,r,g,p}If you try to go on, no more added conclusions: fixpoint

S. Costantini / Datalog e ASP 26
Datalog con Negazione

S. Costantini / Datalog e ASP 27
Negated Subgoals
• We may put NOT in front of an atom, to negate its meaning.
• Example:at_home(alan):- not at_work(alan).

S. Costantini / Datalog e ASP 28
Negated Subgoals: Intuition
• Given atom A, not A holds if A cannot be proved
• Negation as finite failure

S. Costantini / Datalog e ASP 29
Minimal Models
• When there is no negation, a Datalog program has a unique minimal model (one that does not contain any other model).
• But with negation, there can be several minimal models.

S. Costantini / Datalog e ASP 30
Cos’è un modello minimo: è un insieme di atomi
Data una regolaA:- B1,...,Bn,not C1,...,not Cm• Un modello è un insieme di atomi che se
NON contiene C1,...,Cm e contiene B1,...,Bn allora deve contenere A
• Un modello minimo non è sovrainsieme di un altro modello

S. Costantini / Datalog e ASP 31
Datalog semantics
• With negation: several proposals, in deductive databases Answer Set Semantics.
• Based on Answer Set Semantics: Answer Set Programming, new logic programming paradigm

S. Costantini / Datalog e ASP 32
Safe Rules• A rule is safe if:
1. Each variable in the head2. Each variable in an arithmetic subgoal,3. Each variable in a negated subgoal,
also appears in a nonnegated,subgoal in the body.
• We allow only safe rules.

S. Costantini / Datalog e ASP 33
Example: Unsafe Rules
• Each of the following is unsafe and not allowed:
1. s(X) :- r(Y).
2. s(X) :- r(Y), not r(X).
3. s(X) :- r(Y), X < Y.• In each case, an infinity of X ’s can satisfy
the rule, even if R is a finite relation.

S. Costantini / Datalog e ASP 34
Non-Monotonicità• Aggiungere nuove conoscenze può
portare a ritrarre precedenti conclusioni.
• Vi possono essere conclusioni alternative tramite cicli sulla negazione.

S. Costantini / Datalog e ASP 35
Non-Monotonicità = Problema?
• No, se gestita con opportuni strumenti semantici
• Non-Monotonic Reasoning (NMR) = campo di ricerca in– Intelligenza Artificiale – Database deduttivi
• si propone di sfruttare la non-monotonicità

S. Costantini / Datalog e ASP 36
DATALOG senza Negazione
• Semantica del Least Herbrand Model• Paradigma procedurale della ricerca
per tentativi ripetuti • Linguaggio Prolog (numerosi
interpreti fra i quali SICSTUS-Prolog, SWI-Prolog)

S. Costantini / Datalog e ASP 37
DATALOG + Negazione• Semantica degli Answer Sets• Paradigma dell’Answer Set
Programming (ASP)• Negazione, insiemi-risposta
alternativi• Numerosi solver

S. Costantini / Datalog e ASP 38
Esempio NMRpersona(anna).persona(carlo).persona(giorgio).malato(giorgio).
a_casa(X):- persona(X), not in_ufficio(X).in_ufficio(X):- persona(X), not a_casa(X).
:- in_ufficio(X),malato(X). % constraint

S. Costantini / Datalog e ASP 39
Risultato atteso• Anna e Carlo sono o a casa
oppure in ufficio.• Giorgio non può essere in ufficio
perchè è malato e quindi sarà a casa.

S. Costantini / Datalog e ASP 40
NMR in pratica• Vi sono vari linguaggi logici che
consentono non-monotonicità.• Sono dotati di motori inferenziali
(inference engines, o solvers) in grado di gestirla.
• Possibili soluzioni inesistenti o altrernative.•Uno di essi: smodels

S. Costantini / Datalog e ASP 41
Risultato di smodels (inference engine per NMR)
• Answer: 1malato(giorgio) a_casa(giorgio) a_casa(carlo)
in_ufficio(anna)
• Answer: 2malato(giorgio) a_casa(giorgio)
in_ufficio(carlo) in_ufficio(anna)

S. Costantini / Datalog e ASP 42
Risultato di smodels (inference engine per NMR)
• Answer: 3malato(giorgio) a_casa(giorgio)
in_ufficio(carlo) a_casa(anna) • Answer: 4malato(giorgio) a_casa(giorgio) a_casa(carlo)
a_casa(anna)

S. Costantini / Datalog e ASP 43
Datalog con negazione: nuovo Paradigma
di Programmazione Logica Answer Set Programming
(ASP)basato su Answer Set
Semantics

S. Costantini / Datalog e ASP 44
Uno sguardo sull’Answer Set Programming (ASP)

S. Costantini / Datalog e ASP 45
Example: 3-coloring in ASPAssigning colors red/blue/green to vertices of a
graph, so as no adjacent vertices have the same color.node(0..3).col(red).col(blue).col(green).
edge(0,1).edge(1,2).edge(2,0).edge(1,3).edge(2,3).

S. Costantini / Datalog e ASP 46
3-coloring in Answer Set Programming
color(X,red) | color(X,blue) | color(X,green) :- node(X).
:- edge(X,Y), col(C), color(X,C), color(Y,C).
% I constraint (regole con conclusione vuota)% specificano cosa *non può* essere vero

S. Costantini / Datalog e ASP 47
Come “eseguire” il programma?
• Si usa un “Motore Inferenziale”, ad esempio SMODELS (ma ce ne sono diversi)
• Esso fornisce le soluzioni al problema dato come “insiemi risposta, appunto “Answer Set”
…

S. Costantini / Datalog e ASP 48
Come “eseguire” il programma?
• Sintassi: lparse < 3col.txt | smodels 0
• lparse effettua il parsing del programma dato e ne produce il grounding
• smodels calcola le risposte (smodels 0 le chiede tutte)
…
…

S. Costantini / Datalog e ASP 49
Cosa si ottiene nell’esempio?
Answer1color(0,red), color(1,blue), color(green), color(3,red)
Answer2color(0,red), color(1,green), color(blue), color(3,red)…% e tutte le altre colorazioni, ognuna come % “Answer Set”
…

S. Costantini / Datalog e ASP 50
Answer Set Semantics: su cosa si basano gli Answer Set e come si
ottengono

S. Costantini / Datalog e ASP 51
Cos’è un modello minimo: è un insieme di atomi
Data una regolaA:- B1,...,Bn,not C1,...,not Cm• Un modello è un insieme di atomi che se
NON contiene C1,...,Cm e contiene B1,...,Bn allora deve contenere A
• Un modello minimo non è sovrainsieme di un altro modello

S. Costantini / Datalog e ASP 52
Modelli minimi Datalog• I fatti fanno parte di tutti i modelli
minimi• Tutto ciò che si deriva in modo
aciclico dai fatti fa parte di tutti i modelli minimi
• not A vale solo se non vale A

S. Costantini / Datalog e ASP 53
Esempioa:- not b.
b:- e, not c.
c.
e.
M = {c, e, a}

S. Costantini / Datalog e ASP 54
Esempioa:- not b.
b:- not a.
d:- c.
c
M1 = {c, d, a} M2 = {c, d, b}
Cicli: vari modelli (diversi Answer Sets)

S. Costantini / Datalog e ASP 55
Cos’è un Answer Set• E’ un modello minimo dove però dati
due qualunque atomi che ne fanno parte, nessuno di essi può dipendere (direttamente o indirettamente) dalla negazione dell’altro
• (negazione coerente)

S. Costantini / Datalog e ASP 56
Esempio
a:- not b.
b:- not a.
p:- not p, not a.
{b,p} modello minimo, NO answer set
{a} modello minimo, answer set

S. Costantini / Datalog e ASP 57
Come si trovano gli Answer Set
• Cicli pari (dipendenze cicliche che coinvolgono un numero pari di atomi)
a:- not b.
b:- not a.
M1 = {a} M2 = {b}

S. Costantini / Datalog e ASP 58
Come si trovano gli Answer Set
• Cicli pari a:- not b.
b:- not c.
c:- not d.
d:- not a.
M1 = {a,c} M2 = {b,d}

S. Costantini / Datalog e ASP 59
Come si trovano gli Answer Set
• Ogni ciclo pari ha due Answer Set, uno costituito dagli atomi “pari” del ciclo, l’altro da quelli “dispari”.
• Se vi sono diversi cicli pari, gli answer set si combinano

S. Costantini / Datalog e ASP 60
Come si trovano gli Answer Set
a:- not b. e:- not f.
b:- not c. f:- not e.
c:- not d.
d:- not a.
M11 = {a,c,e} M12 = {a,c,f}
M21 = {b,d,e} M22 = {b,d,f}

S. Costantini / Datalog e ASP 61
Come si trovano gli Answer Set
• Cicli dispari (dipendenze cicliche che coinvolgono un numero dispari di atomi)
p:- not p.
No Answer Set: contraddizione sulla negazione {p}

S. Costantini / Datalog e ASP 62
Come si trovano gli Answer Set
• Cicli dispari (dipendenze cicliche che coinvolgono un numero dispari di atomi)
a:- not b.b:- not c.c:- not a.No Answer Set: contraddizione sulla negazione
Es. {a,c} {a,b} {b,c}

S. Costantini / Datalog e ASP 63
Come si trovano gli Answer Set
• Programmi con cicli dispari: possono avere Answer Set solo se:– vi sono anche cicli pari– vi sono connessioni fra cicli pari e dispari
che “rimuovono” le contraddizioni
• Chiamiamo queste speciali connessioni “Handle”

S. Costantini / Datalog e ASP 64
Come si trovano gli Answer Set: OR Handle
• OR Handle: legata a regola alternativa per uno degli atomi del ciclo dispari
a:- not b. p:- not p.
b:- not a. p:- a. OR handle
M = {a,p}

S. Costantini / Datalog e ASP 65
Come si trovano gli Answer Set
• OR Handle: legata a regola alternativa per uno degli atomi del ciclo dispari
a:- not b. p:- not q.b:- not a. q:- not r.
r:- not p.q:- not b. OR handle
M = {a,q,r}

S. Costantini / Datalog e ASP 66
Come si trovano gli Answer Set
• OR handle: regola alternativa per un qualche atomo che fa parte del ciclo dispari. Il corpo deve essere VERO per “supportare” l’atomo

S. Costantini / Datalog e ASP 67
Come si trovano gli Answer Set
• AND Handle: letterale aggiuntivo in una delle regole del ciclo dispari:
a:- not b. p:- not p, not a. AND
b:- not a. handle
M = {a}

S. Costantini / Datalog e ASP 68
Come si trovano gli Answer Set
• Cicli dispari: Answer set se Handle da cicli pari
a:- not b. p:- not p, a. AND
b:- not a. handle
M = {b}

S. Costantini / Datalog e ASP 69
Come si trovano gli Answer Set
• Cicli dispari: Answer set se Handle da cicli pari
• AND handle: letterale L (A oppure not A) nel corpo di una regola del ciclo dispari, dove A fa parte di un ciclo pari. L deve essere FALSO per “aprire” il ciclo dispari rendendo falso uno dei suoi atomi

S. Costantini / Datalog e ASP 70
Come si trovano gli Answer Set
1. Si cercano gli Answer Set della parte aciclica “di base” del programma
2. Si cercano gli Answer Set dei cicli pari3. Si combinano le due componenti 4. Si estendono alla parte aciclica “intermedia” (se
c’è)5. Fra gli Answer Set risultanti si selezionano quelli
(se vi sono) che forniscono handle ai cicli dispari6. Si riconsidera la parte aciclica “top” rimanente
(se c’è)

S. Costantini / Datalog e ASP 71
Come si trovano gli Answer Set
c. p:- not p.
d:- c. p:- e.
a:- not b. g:- p.
b:- not a.
e:- b.
h:- b,p.

S. Costantini / Datalog e ASP 72
Come si trovano gli Answer Set: parte aciclica di base
c.
d:- c.
M1 = {c,d}

S. Costantini / Datalog e ASP 73
Come si trovano gli Answer Set: ciclo pari e parte aciclica
intermedia
a:- not b.
b:- not a.
e:- b.
M1 = {c,d}
M11 = {a,c,d} M12 = {b,c,d,e}

S. Costantini / Datalog e ASP 74
Come si trovano gli Answer Set: ciclo dispari e parte aciclica”top”
p:- not p.
p:- e.
g:- p.
• Si seleziona M12 per dare la OR handle all’atomo p.
M = {b,c,d,e,p,g}

S. Costantini / Datalog e ASP 75
Caso problematicop:- not p, not a.
q:- not q, not b.
a:- not b.
b:- not a.
Per ciclo pari M1 = {a} M2 = {b}
ma non abbiamo le due AND handle per i cicli dispari (richiesta contraddittoria): no Answer Set

S. Costantini / Datalog e ASP 76
Caso problematico Risoltop:- not p, not a.p:- e.q:- not q, not b.a:- not b. e:- not f.b:- not a. f:- not e.Per cicli pari M11 = {a,e} M12 = {a,f}M21 = {b,e} M12 = {b,f}Con M21 otteniamo M1 = {b,p,e}

S. Costantini / Datalog e ASP 77
ASP più in dettaglio

S. Costantini / Datalog e ASP 78
Answer Set Programming
Constraints
:- v,w,z.
rephrased as
p :- not p, v,w,z.

S. Costantini / Datalog e ASP 79
Answer Set Programming
Disjunction
v | w |z.
rephrased as
v :- not w, not z.
w :- not v, not z.
z :- not v, not w.

S. Costantini / Datalog e ASP 80
Answer Set Programming
Choice (XOR)
v+w+z.
rephrased as
v | w | z.
:- w, z.
:- v, z.
:- v, w.

S. Costantini / Datalog e ASP 81
Answer Set Programming
Classical Negation ¬p
- p :- q,r.
rephrased as
p' :- q,r.
:- p,p‘

S. Costantini / Datalog e ASP 82
Answer Set Programming
A party: guests that hate each other cannot seat together,
guests that love each other should sit together
table(1..3).guest(1..5).
hates(1,3). hates(2,4).hates(1,4). hates(2,3). hates(4,5). hates(1,5).likes(2,5).

S. Costantini / Datalog e ASP 83
Answer Set Programming
% Choice rules
1{at_table(P,T) : table(T)}1 :- guest(P).
0{at_table(P,T) : guest(P)}3 :- table(T).

S. Costantini / Datalog e ASP 84
Answer Set Programming
% Choice rules
n { p(X,Y) : d1(X) } m :- d2(Y).
Meaning: forall Y which is a d2 we admit only answer sets with at least n atoms and at most m atoms
of the form p(X,Y), where X is a d1

S. Costantini / Datalog e ASP 85
Answer Set Programming
% hard constraint
:- hates(P1,P2),at_table(P1,T),at_table(P2,T), guest(P1),guest(P2),table(T).

S. Costantini / Datalog e ASP 86
Answer Set Programming
% should be a soft constraint!
:- likes(P1,P2), at_table(P1,T1), at_table(P2,T2),
T1 != T2, guest(P1),
guest(P2),table(T1),table(T2).