470 likes | 623 Views
Βάσεις Γνώσεων. Datalog Πάνος Βασιλειάδης pvassil@cs.uoi.gr Απρίλης 200 3. www.cs.uoi.gr/~pvassil/courses/knowledge_bases/. Σύνταξη της Datalog. Έστω τα εξής σύνολα: VAR , το οποίο περιέχει μεταβλητές Συμβολισμός: οι μεταβλητές με το πρώτο γράμμα κεφαλαίο
E N D
ΒάσειςΓνώσεων Datalog Πάνος Βασιλειάδης pvassil@cs.uoi.grΑπρίλης 2003 www.cs.uoi.gr/~pvassil/courses/knowledge_bases/
Σύνταξη της Datalog • Έστω τα εξής σύνολα: • VAR, το οποίο περιέχει μεταβλητές • Συμβολισμός: οι μεταβλητές με το πρώτο γράμμα κεφαλαίο • CONST, το οποίο περιέχει σταθερές • Συμβολισμός: οι σταθερές με όλα τα γράμματα μικρά • PRED, το οποίο περιέχει predicates • Συμβολισμός: τα predicatesμε το πρώτο γράμμα μικρό
Σύνταξη της Datalog • Τα predicates έχουν arity >= 1 • Σε σχέση με την First Order Logic: • Δεν υπάρχουν συναρτήσεις • Δεν θεωρούμε προς το παρόν predicates με arity = 0
Σύνταξη της Datalog • Term: μια σταθερά ή μια μεταβλητή • Ground Term: αν δεν υπάρχει μεταβλητή στον term (ήτοι, ειδικά στην Datalog, αν πρόκειται για σταθερά) • Atom: ένα predicate p(t1,…,tn), τ.ώ., τα tiείναι terms • fatherOf(πολυνείκης, οιδίποδας) ή fatherOf(X,αδάμ) • Literal: ένα predicate p(t) (positive literal) ή η άρνηση ενός predicate p(t) (negative literal) • Ground Atom/Literal: αν οι εμπλεκόμενοι terms είναι ground
Σύνταξη της Datalog • Clause: ένα πεπερασμένο σύνολο από literals • C ≡ {p(X,a), p(Y,b), q(b,c)} • Ground Clause: αν τα εμπλεκόμενα literals είναι ground • Unit Clause: αν έχει ακριβώς ένα literal
Σημασιολογία ενός clause • Ένα clause C αντιστοιχεί σε μια FOL έκφραση C’=QM, με • Qένα σύνολο από quantified μεταβλητές (είτε με ,είτε με ) για όλες τις μεταβλητές του C • Μ μια έκφραση στην οποία οι μεταβλητές ΔΕΝ είναι quantified (αποκαλούμενο και matrix) • και αποτελούν την διάζευξη των terms του Μ.
Σημασιολογία ενός clause Για παράδειγμα, το C ≡ {p(X,a), p(Y,b), q(b,c)} αντιστοιχεί στο C’≡ ΧΥ(p(X,a) p(Y,b) q(b,c)) ΠΡΟΣΟΧΗ: εδώτο ‘,’ συμβολίζει απλώς τον τρόπο που διαχωρίζουμε τα στοιχεία του set μεταξύ τους!
Horn clauses • Horn clause: ένα clause που περιέχει το πολύ ένα θετικό literal • Υπάρχουν 3 ειδών Horn clauses: • Facts: positive unit clauses (ήτοι, με ακριβώς ένα literal και αυτό θετικό), π.χ.,fatherOf(ετεοκλής, οιδίποδας) • Rules: clauses με ακριβώς ένα θετικό literal και τουλάχιστο ένα αρνητικό • Goals:clauses με κανένα θετικόliteral
Rules • Rules: clauses με ακριβώς ένα θετικό literal και τουλάχιστο ένα αρνητικό. Π.χ., R: {grandparent(X),grandfather(X),male(X)} • Γράφεται: grandfather(X):- grandparent(X),male(X) • Διαβάζεται: • κάποιος είναι grandfatherαν είναι grandparentKAImale ή • αν κάποιος είναι grandparentKAImale τότε είναι και grandfather
Rules - Σημασιολογία • Π.χ.,grandfather(X) :- grandparent(X), male(X) R: {grandparent(X), grandfather(X),male(X)} • Σημασιολογία: Χ(grandparent(X) grandfather(X)male(X)) De Morgan Χ((grandparent(X)male(X)) grandfather(X)) Και αφού (Α Β) Α=>Β Χ((grandparent(X)male(X))=>grandfather(X) )
Rules - Διάφορα • Το positive literal λέγεται και headτου κανόνα και τα υπόλοιπα literals λέγονται body grandfather(X):- grandparent(X),male(X) • Το κόμμα σημαίνει σύζευξη των literals • Προφανώς, κάθε κανόνας της μορφής {p(…), p1(…), …,pk(…)} γράφεται p(…):- p1(…), …,pk(…)
Goals • Goals:clauses με κανένα θετικόliteral. Π.χ., R: {fatherOf(γιάννης,X)} • Γράφεται: ? - fatherOf(γιάννης,X) • Διαβάζεται:είναι κανείς πατέρας του Γιάννη ? • Λέγεται goal γιατί αν θέλω να δείξωXfatherOf(γιάννης,X) τότε υποθέτω την άρνησή του X(fatherOf(γιάννης,X)) και προσπαθώ να την δείξω false.
Extensional & Intentional Βάσεις Δεδομένων • Τα predicates χωρίζονται σε intentional και extensional predicates, που αντιπροσωπεύονται από τα σύνολα EPREDκαι IPRED. PRED=EPREDIPRED, EPREDIPRED={} • Τα extensional predicates αντιπροσωπεύουν τα δεδομένα που είναι ήδη αποθηκευμένα στην ΒΔ. • Τα intentional predicates αντιπροσωπεύουν τα δεδομένα που πρόκειται να υπολογιστούν στη βάση κάποιων κανόνων.
Herbrand Base • Herbrand Base HB: το σύνολο των ground clauses που μπορούν να φτιαχτούν από predicates του PREDκαι σταθερές. • EHB=E(HB): αντίστοιχα για predicates τουEPRED • ΙHB=Ι(HB): αντίστοιχα για predicates τουΙPRED • EDB (extensional DB) = το πεπερασμένο σύνολο των ground clauses που είναι αποθηκευμένο στη βάση δεδομένων μας.Προφανώς, EDBEHB
Datalog Program anc(X,Y):-parentOf(X,Y) anc(X,Y):-parentOf(X,Z),anc(Z,Y) anc(X,δευκαλίων):-person(X) person(X):- lives(X) EDB parentOf(ετεοκλής,οιδίποδας) parentOf(πολυνείκης,οιδίποδας) lives(οιδίποδας,αθήνα) lives(μάκης,κορυδαλλός) Παράδειγμα EPRED: parentOf, lives IPRED: anc, person
Πρόγραμμα Datalog • Ένα πρόγραμμα Datalog Pείναι ένα σύνολο από Horn clauses, τ.ώ., για κάθε clause cPισχύει: • είτε cEDB • είτε (α) το head του c ανήκει στην IPRED και (β) όλες οι μεταβλητές του head συναντώνται και στο body • Η συνθήκη (1) αφορά σταθερές τιμές/πλειάδες. Η συνθήκη (2) αφενός λέει ότι δεν παράγω νέα EDB facts (αλλά μόνο IDB) και αφετέρου επιβάλει μια συνθήκη ασφάλειας (safety condition): παράγω ένα πεπερασμένο σύνολο από facts.
Datalog Program anc(X,Y):-parentOf(X,Y) anc(X,Y):-parentOf(X,Z),anc(Z,Y) anc(X,δευκαλίων):-person(X) person(X):- lives(X) EDB parentOf(ετεοκλής,οιδίποδας) parentOf(πολυνείκης,οιδίποδας) lives(οιδίποδας,αθήνα) lives(μάκης,κορυδαλλός) Παράδειγμα EPRED: parentOf, lives IPRED: anc, person
Πρόγραμμα Datalog • Ένα Datalog πρόγραμμα παίρνει ως input μια EDB και βγάζει ως output ένα υποσύνολο του IHB
Substitution -- Αντικατάσταση • Αντικατάσταση (substitution) είναι ένα πεπερασμένο σύνολο ζευγών • θ = {Χ1/t1,…,Xn/tn}τ.ώ.: • Τα Χiείναι διακριτές μεταξύ του μεταβλητές (και μόνο) και σχηματίζουν το domain (πεδίοορισμού) της αντικατάστασης • Τα ti είναιόροι (σταθερές ή μεταβλητές) και σχηματίζουν το co-domain (πεδίο τιμών) της αντικατάστασης • Αν το co-domain έχει μόνο σταθερές: ground substitution
Substitution - Συμβολισμός • tθ=ti, αν t/tiθ t, σε κάθε άλλη περίπτωση • Π.χ., αν α: p(a,X,Y,b)και θ={Χ/c,Y/X} τότεαθ:p(a,c,X,b) • Αν C,D clauses και θ τ.ώ.,Cθ=Dτότε το D είναιinstance (στιγμιότυπο) τουC
Substitution Composition • Έστω θ={Χ1/t1,…,Xn/tn}και σ={Y1/u1,…,Ym/um}. Τότε ο συνδυασμός τους ορίζεται ως • θσ = {Χ1/t1σ,…,Xn/tnσ,Y1/u1,…,Ym/um}με • (i) εκδίωξη των ζευγών τύπου ξ/ξ, και • (ii) εκδίωξη των Υi/ui όπου Υi=Xjγια κάποιο j • Ισχύουν: (α) C(θσ)=Cθ(σ)και (β)(θσ)γ=θ(σγ) • ΔΕΝ ισχύει θσ=σθ
Παράδειγμα C: anc(X,Y) :- par(X,Z),anc(Z,Y) θ={X/Y,Y/U,Z/V}, σ={Y/αδάμ,U/T,V/T,X/εύα} θσ={X/Y/αδάμ,Y/U/Τ,Z/V/Τ, Υ/αδάμ, U/T,V/T,X/εύα} • Εκδιώκωόποια στοιχεία του σ αφορά ο κανόνας ii: • Υ/αδάμ λόγω του Y/U/Τ • Χ/εύα λόγω του Χ/Υ/αδάμ, οπότε έχω θσ={X/Y/αδάμ,Y/U/Τ,Z/V/Τ, U/T,V/T}
Παράδειγμα θσ={X/Y/αδάμ,Y/U/Τ,Z/V/Τ, U/T,V/T} • το οποίο γίνεται προφανώς: θσ={X/αδάμ,Y/Τ,Z/Τ, U/T,V/T} • Με αποτέλεσμα το Cθ να γίνει: Cθ: anc(αδάμ,Τ) :- par(αδάμ,Τ),anc(Τ, Τ) • Υπενθύμιση: αρχικά είχα C: anc(X,Y) :- par(X,Z),anc(Z,Y)
Υπαγωγή -- Subsumption • Ένα clause Dυπάγεται (is subsumed)από ένα clause Cαν και μόνο αν θ:CθDθ • Εναλλακτικά: τοCεντάσσει (subsumes) το D • Συμβολισμός:CD
Παράδειγμα C: p(X,Z) :- p(X,Y),p(Y,Z) D: p(a,a) :- p(a,a),p(b,b) Προφανώς, θ={Χ/a,Υ/a,Ζ,a} τ.ώ., Cθ: p(a,a) :- p(a,a),p(a,a), δηλ., Cθ: p(a,a) :- p(a,a) και προφανώς CθD οπότε, CD
Σημειώσεις • Γιατί στο προηγούμενο παράδειγμα, είχα CθD? • Υπενθύμιση: κάθε clause είναι ένα πεπερασμένο σύνολο από literals. Άρα οι προηγούμενες δηλώσεις μεταφράζονται ως C: {p(X,Z),p(X,Y),p(Y,Z)} D: {p(a,a),p(a,a),p(b,b)} Cθ: {p(a,a),p(a,a)} • Η σχέση υποσυνόλου είναι προφανής
Σημειώσεις • Όταν λέμε ότι ένας κανόνας (ή ισοδύναμα) ένα clause C είναι υποσύνολο ενός clause D, πάει να πει ότι το D περιέχει πιο πολλά literals [ξανά: ένα clause είναι ένα σύνολο από literals] • Αυτό σημαίνει, ότι για να γίνει true το D, πρέπει να ισχύουν πιο πολλές συνθήκες, ή με άλλα λόγια, το D γίνεται true σε λιγότερες περιπτώσεις • Έτσι εξηγείται και η ορολογία ότι το C εντάσσει το D,αν και το C είναι υποσύνολο του D.Είναι δηλ., υποσύνολο σαν set από literals, αλλά είναι υπερσύνολο σαν set από τιμές που το κάνουν true. • Γυρίστε πίσω και ξαναδέστε το παράδειγμα...
Ενοποιητής -- Unifier • Έστω L,M literals. Αν υπάρχει substitution θ, τ.ώ.,Lθ=Μθτότε η θ λέγεται unifierκαι τα unifiable. • Έστω θ,γsubstitutions. Τότε το θ είναι πιο γενικός (more general)από το γ, αν υπάρχει λ τ.ώ., θλ=γ • Ο unifier που είναι πιο γενικός από οποιονδήποτε άλλο για δυο literals L,Mλέγεται και πιο γενικός unifier (Most General Unifier – MGU)
Παράδειγμα • Έστω L=p(X,a,Z) και M=p(V,W,b) • Για θ1={X/a,Z/b,V/a,W/a} και θ2={X/V,Z/b,W/a} • λ={V/a} τ.ώ., θ1=θ2λ • Για θ3={X/V,Z/b,W/a}, λ’={V/a} τ.ώ., θ1=θ3λ’ • Υπάρχουν περισσότεροι του ενός mgu. • Υπάρχει και απλός αλγόριθμος για να υπολογίσουμε έναν εξ’ αυτών.
Αλγόριθμος MGU(L,M) INPUT: literals L=ψ(t1,...,tn),M=ψ(t'1,...,t'n) OUTPUT: ο mgu θ αν τα L,M είναι unifiable, a dummy , αλλιώς BEGIN θ={} i=1; unifies=true; REPEAT IF tiθti'θ IF ti'θ is a variable θ θ{ti'θ/tiθ} ELSEIF tiθ is a variable θ θ{tiθ/ti'θ} ELSE unifies false; i i + 1; UNTIL i> n OR unifies = false; IF unifies RETURN θ, ELSE RETURN END
Παράδειγμα L: p(X,Z,a,U) και M:p(Y,Y,V,W) θ0 = {} θ1 = {Υ/Χ} (Υθ0 = Υ, ήτοι variable) θ2 = θ1{Υθ1/Zθ1}={Y/X}{X/Z} = {Y/X,X/Z} (Υθ1=Χ, ήτοι variable) θ3 = θ2{V/a}={Y/X,X/Z,V/a}(Vθ2=V, ήτοι variable) θ4 = θ3{W/U}={Y/X,X/Z,V/a,W/U}= θ (Wθ3=W, ήτοι variable)
Model Theory of Datalog • Τι ακριβώς υπολογίζει ένα πρόγραμμα Datalog? • Είναι σαν μια query, με τη διαφορά, ότι αντί για ακριβώς ένα result set, έχουμε από ένα result set για κάθε head
Model vs. Proof Theory • Θυμηθείτε τη διαφορά: • Model theory & Interpretation: μια πρόταση είναι αληθής αν είναι true για κάθε πιθανό κόσμο • Proof theory: ... αν η πρόταση προκύπτει ως παραγωγή από ένα κανόνα και κάποια αξιώματα • Οι τεχνικές είναι ισοδύναμες
Υπενθυμίσεις • Interpretation: η απεικόνιση των predicates, variables, σε οντότητες ενός universe • Ταυτολογία: ένα clause που είναι true για κάθε πιθανή interpretation. Π.χ., • p(a) :- p(a) • q(X) :- p(a),q(X),r(b) • Model: αν ένα clause Cικανοποιείται από μια interpretation , τότε η είναι μοντέλο του C.
Υπενθυμίσεις • S╞ F: Αν το F είναι ένα ground fact και το S ένα σύνολο από clauses, το Fσυνάγεται (είναι consequence)από το S αν κάθε interpretation που ικανοποιεί το S,ικανοποιεί και το F. Π.χ., S: {p(a,b), p(X,Y) :- p(Y,X)} F: p(a,b)
t: cat f: food l(α,β): α loves β g(α,β,γ) a gives β to γ “the cat loves X, X that gives food to the cat” το οποίο μπορούμε να θεωρήσουμε true t: 10 f: 5 l(α,β): α < β g(α,β,γ):α + β > γ “10 < X, X s.t., X+5>10” το οποίο είναι προφανώς false Interpretation -- Υπενθυμίσεις l(t,X) :- g(X,f,t)
Herbrand Interpretations • Υπάρχουν άπειρα interpretations για να ελέγξουμε! • Αποδεικνύεται ότι αρκεί να θεωρήσουμε ένα συγκεκριμένο, το λεγόμενο Herbrand Interpretation
Herbrand Interpretations • Υπάρχουν πολλά Herbrand interpretations, για όλα τους όμως, έχουμε: • Constants: απεικονίζονται στον εαυτό τους • Predicates: mappings του CONSTn -> {true,false} • ΠΡΟΣΟΧΗ: μας ενδιαφέρει η αληθοτιμή μόνο των ground facts. Ουσιαστικά, λέμε ότι κάποια ground facts είναι true. • Παρατήρηση: μια Herbrand Interpretation είναι υποσύνολο του Herbrand Base (ΗΒ)
Herbrand Interpretation • Έστω HBμια Herbrand interpretation και vuη αληθοτιμή για facts και rules. • Αν Gείναι ground fact, τότε vu(G)=true αν G, αλλιώς false. • ΑνR ένας κανόνας της μορφής L0:- L1,…,Ln, vu(R)=true ανγια κάθε ground substitution θ, το {L0θ} όταν {L1θ},…, {Lnθ}, αλλιώς false.
Herbrand Interpretation • Κατά τα γνωστά, μια interpretation ικανοποιεί ένα clause Cαν το κάνει true. • Herbrand Model: αν ένα σύνολο από clauses ικανοποιείται από μια interpretation , τότε η είναι Herbrand μοντέλο για αυτά τα clauses. • Λέμε ότι S╞ Fαν και μόνο αν κάθε interpretation που ικανοποιεί το S,ικανοποιεί και το F.
Herbrand Model -- Παράδειγμα • Έστω loves(X,Y) :- loves(Y,X) και • 1: {{loves(οδυσσεύς, πηνελόπη)}, {loves(πηνελόπη, οδυσσεύς)}} • 2: {{loves(οδυσσεύς, πηνελόπη)}, {loves(πηνελόπη, μνηστήρες)}} • Εμφανώς, το 1 είναι Herbrand model,ενώ το 2 όχι, για τον συγκεκριμένο κανόνα
Σημασιολογία ενός Datalog προγράμματος • Ένα πρόγραμμα P είναι μια function MPαπό (EHB)(IHB): VEHBMP(V)={G|GIHB (PV)╞ G} • Αν δώσω δηλ., ένα ground fact και τους κανόνες του P, τότε το G προκύπτει λογικά από το ground fact και τους κανόνες αυτούς. • (S) είναι το δυναμοσύνολοτου συνόλου S ήτοι, όλοι οι πιθανοί συνδυασμοί των στοιχείωντου.
Σημασιολογία ενός Datalog goal • Ένας goal ?:-H μαζί με ένα πρόγραμμα P είναι μια function MP,Ηαπό (EHB)(HB): V EHBMP,H(V)={C|CHB (PV)╞ G HC} • Αν το H είναι extensional (ήτοι, ρωτάω κατ’ ευθείαν τα αποθηκευμένα δεδομένα) τότε οι πιθανές απαντήσεις είναι extensional ground facts. Αλλιώς, αν το H είναι intentional συνάγω μόνο intentional ground facts
Προβλήματα • Για να υπολογίσω ένα Datalog πρόγραμμα P έχω να λύσω τρία προβλήματα: • Άπειρες Herbrand interpretations • Πιθανώς κάθε μία εξ’ αυτών έχει άπειρα domains • Άπειρα ground instantiations για τα variables • Υπάρχει λύση...
Ελάχιστο Herbrand Model • Έστω S ένα σύνολο από Horn clauses (ground facts και rules) • Έστω cons(S)={F|FHB S╞ G}, ήτοι, οτιδήποτε προκύπτει λογικά από το Sκαι είναι επιπλέον και ground fact. • Αν σε ένα EDB εφαρμόσω το πρόγραμμα P, το αποτέλεσμα MP(EDB) είναι MP(EDB)=cons(PEDB)IHB
Ελάχιστο Herbrand Model • Θεώρημα: αν S ένα σύνολο από Horn clauses,υπάρχει ένα ελάχιστοHerbrand Model του S, το cons(S)για το οποίο ισχύουν • cons(S) είναι ένα Herbrand model του S • cons(S)=i για όλα ταiHerbrand models του S