Movatterモバイル変換


[0]ホーム

URL:


Μετάβαση στο περιεχόμενο
ΒικιπαίδειαΗ Ελεύθερη Εγκυκλοπαίδεια
Αναζήτηση

Datalog

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

ΗDatalog είναι μια γλώσσα ερωτήσεων και κανόνων για λογικές βάσεις δεδομένων (deductive databases), η οποία συντακτικά είναι υποσύνολο τηςProlog. Υπάρχει από τα πρώτα χρόνια τουλογικού προγραμματισμού αλλά έγινε γνωστή σαν ξεχωριστό πεδίο το 1977 όταν οHervé Gallaire και οJack Minker οργάνωσαν ένα workshop σχετικά με τηλογική και τιςβάσεις δεδομένων[1]. Ο David Maier συνέλαβε την ονομασία Datalog[2].

Χαρακτηριστικά, περιορισμοί και επεκτάσεις

[Επεξεργασία |επεξεργασία κώδικα]

Η αποτίμηση των ερωτήσεων στη Datalog βασίζεται στηλογική πρώτου βαθμού και επομένως είναι συνεπής και πλήρης. Μπορεί να εκτελεστεί αποδοτικά ακόμα και για μεγάλες βάσεις δεδομένων και ακολουθεί στρατηγικές προς τα επάνω (bottom-up).

Σε αντίθεση με την Prolog:

  1. δεν επιτρέπει πολύπλοκους όρους σαν ορίσματα σεκατηγορήματα, π.χ. το p(1, 2) επιτρέπεται αλλά όχι το p(f1(1), 2),
  2. επιβάλλει κάποιους περιορισμούς διαστρωμάτωσης (stratification) στη χρήση της άρνησης και τηςαναδρομής, και
  3. επιτρέπει μόνο μεταβλητές περιορισμένου εύρους, δηλ. κάθε μεταβλητή στο συμπέρασμα ενός κανόνα πρέπει επίσης να εμφανίζεται σε μια πρόταση χωρίς άρνηση στις προϋποθέσεις του κανόνα.

Λόγω αυτών των κανόνων το σύνολο όλων των πιθανών αποδείξεων είναι πεπερασμένο και όλα τα προγράμματα σε Datalog τερματίζουν (σε αντίθεση με τα προγράμματα σεProlog). Αυτό έχει ως αποτέλεσμα, οι εντολές και τα κατηγορήματα ενός προγράμματος μπορούν να δοθούν με οποιαδήποτε σειρά (πάλι σε αντίθεση με την Prolog). Έχουν προταθεί διάφορες μέθοδοι για την αποδοτική εκτέλεση ερωτήσεων, π.χ. ο αλγόριθμοςMagic Sets,[3] ή ο λογικός προγραμματισμός με πίνακες.[4]

Συστήματα Datalog βρίσκονται πίσω από εξειδικευμένες βάσεις δεδομένων όπως η βάση δεδομένων τηςIntellidimension για τοσημασιολογικό ιστό. Επιπλέον, κάποια δημοφιλή συστήματα βάσεων δεδομένων περιλαμβάνουν ιδέες και αλγόριθμους που αναπτύχθηκαν για τη Datalog. Για παράδειγμα το πρότυποSQL:1999 περιλαμβάνει αναδρομικές ερωτήσεις και ο αλγόριθμοςMagic Sets (που αρχικά αναπτύχθηκε για τη γρηγορότερη αποτίμηση των ερωτήσεων της Datalog) έχει υλοποιηθεί στηνDB2 τηςIBM.

Δύο επεκτάσεις της Datalog επιτρέπουν τη χρήσηαντικειμενοστρεφούς προγραμματισμού και την πράξη Ή (σύζευξη, disjunction) σαν κεφαλή των προτάσεων. Και οι δύο επεκτάσεις αυτές έχουν σημαντικό αντίκτυπο στον ορισμό τηςσημασιολογίας της Datalog και στην υλοποίηση ενόςδιερμηνέα Datalog για αυτήν.

Παράδειγμα

[Επεξεργασία |επεξεργασία κώδικα]

Παράδειγμα προγράμματος σε Datalog:

parent(bill,mary).parent(mary,john).

Αυτές οι δύο γραμμές ορίζουν δύο γεγονότα, δηλ. δυο πράγματα που είναι πάντα αληθή. Διαισθητικά σημαίνουν:γονιός του bill είναι η mary andγονιός της mary είναι ο john.

ancestor(X,Y) :- parent(X,Y).ancestor(X,Y) :- parent(X,Z),ancestor(Z,Y).

Αυτές οι δύο γραμμές περιγράφουν τους κανόνες που ορίζουν τη σχέση προγόνου (ancestor). Ένας κανόνας αποτελείται από δύο κύρια μέρη που χωρίζονται από το σύμβολο:-. Το μέρος στα αριστερά του είναι ηκεφαλή, το μέρος στα δεξιά του είναι τοσώμα του κανόνα. Ένας κανόνας διαβάζεται (και μπορεί διαισθητικά να γίνει κατανοητός) ως εξής:<κεφαλή> αν είναι γνωστό ότι <σώμα>. Τα κεφαλαία γράμματα είναι μεταβλητές. Επομένως στο παράδειγμα ο πρώτος κανόνας μπορεί να διαβαστεί σανο X είναι πρόγονος του Y αν είναι γνωστό ότι ο X είναι γονιός του Y και ο δεύτερος κανόνας σανο X είναι πρόγονος του Y αν είναι γνωστό ότι ο X είναι γονιός κάποιου Z και ο Z είναι πρόγονος του Y. Η σειρά των προτάσεων δεν έχει σημασία στην Datalog σε αντίθεση με την Prolog, η οποία εξαρτάται από τη σειρά τους για να υπολογίσει το αποτέλεσμα της κλήσης μιας ερώτησης.

Η Datalog διακρίνει μεταξύ εκτασιακών (extensional) και νοηματικών (intensional) συμβόλων κατηγορημάτων. Σε αντίθεση με τα εκτασιακά σύμβολα κατηγορημάτων που ορίζονται μόνο από γεγονότα, τα νοηματικά σύμβολα κατηγορημάτων ορίζονται μόνο από κανόνες. Στο παραπάνω παράδειγμα τοancestor είναι νοηματικό κατηγορηματικό σύμβολο, και τοparent είναι εκτασιακό. Τα κατηγορήματα μπορούν επίσης να οριστούν από γεγονότα και κανόνες και επομένως δεν είναι αμιγώς εκτασιακά ή νοηματικά, αλλά κάθε πρόγραμμα σε Datalog μπορεί να γραφτεί σαν ένα ισοδύναμο πρόγραμμα χωρίς τέτοιου είδους κατηγορήματα που να έχουν διπλούς ρόλους.

?- ancestor(bill,X).

Η παραπάνω ερώτηση ζητά όλους τους πρόγονους του bill και επιστρέφειmary καιjohn αν εκτελεστεί σε ένα σύστημα Datalog που περιέχει τα γεγονότα και τους κανόνες που έχουν περιγραφεί παραπάνω.

Συστήματα που υλοποιούν τη Datalog

[Επεξεργασία |επεξεργασία κώδικα]

Οι περισσότερες υλοποιήσεις της Datalog προέρχονται από ακαδημαϊκά εγχειρήματα.[5] Ακολουθεί μια σύντομη λίστα από συστήματα που είτε βασίζονται στη Datalog ή παρέχουν κάποιο διερμηνέα της:

  • bddbddb, μια υλοποίηση της Datalog τουΠανεπιστημίου Στάνφορντ. Χρησιμοποιείται κυρίως για ερωτήσεις πάνω σε κώδικα byte της Java, για παράδειγμα στην ανάλυση "δείχνει-σε" ("points-to") σε μεγάλα προγράμματα σε Java.
  • ConceptBase, ένα λογικό (deductive) και αντικειμενοστρεφές σύστημα βάσης δεδομένων που βασίζεται σε έναν αποτιμητή ερωτήσεων Datalog. Χρησιμοποιείται κυρίως για θεωρητική μοντελοποίηση και μετα-μοντελοποίηση.
  • IRIS, μια μηχανή ανοιχτού λογισμικού για Datalog που έχει υλοποιηθεί σεJava. Η IRIS επεκτείνει τη Datalog με σύμβολα συναρτήσεων, ενσωματωμένα κατηγορήματα, τοπικά διαστρωματωμένα ή μη-διαστρωματωμένα λογικά προγράμματα (με χρήση καλώς ορισμένης σημασιολογίας), μη ασφαλείς κανόνες και τύπους δεδομένων από XML σχήματα (XML schemas).
  • DES, μια υλοποίηση ανοιχτού κώδικα της Datalog που προορίζεται για την εκμάθηση της Datalog σε μαθήματα.
  • XSB, ένα σύστημα βάσης δεδομένων λογικού προγραμματισμού γιαUnix καιWindows.
  • .QL, μια αντικειμενοστρεφής έκδοση της Datalog από τηνSemmle.
  • Datalog, μια ελαφρή λογική βάση δεδομένων γραμμένη σεLua.
  • SecPAL, μια γλώσσα για κανόνες ασφάλειας που αναπτύχθηκε από τηMicrosoft Research.[6]
  • DLV, μια επέκταση της Datalog που επιτρέπει προτάσεις κεφαλής που περιλαμβάνουν σύζευξη.
  • Datalog for Racket, μια υλοποίηση της Datalog για τη γλώσσα προγραμματισμούRacket.
  • Clojure Datalog, μια προσφερόμενη (contributed) βιβλιοθήκη τηςClojure που υλοποιεί κάποια χαρακτηριστικά της Datalog.
  • Cascalog, μια βιβλιοθήκη της Clojure για την ερώτηση σε δεδομένα που είναι αποθηκευμένα σε συστοιχίεςHadoop.
  • OverLog, μια υλοποίηση της Datalog για δίκτυα ενσωματωμένα σε άλλα δίκτυα (overlay networks).
  • LogicBloxΑρχειοθετήθηκε 2010-07-22 στοWayback Machine., μια εμπορική υλοποίηση της Datalog που χρησιμοποιείται για το σχεδιασμό πωλήσεων μέσω Web και για εφαρμογές ασφάλισης.
  • Το πλαίσιο σημασιολογικού ιστού Jena περιλαμβάνει μια υλοποίηση της Datalog σαν μέρος της μηχανής γενικών κανόνων του, η οποία επίσης αποτελεί την υλοποίηση της υποστήριξης γιαOWL καιRDFS.[7]
  • Meld, μια επέκταση της Datalog για τον προγραμματισμό κατανεμημένων συστημάτων.
  • ΗIntellidimension, παρέχει αρκετές εμπορικές υλοποιήσεις της μηχανής της Datalog βασισμένης σε πρότυπα του Σημασιολογικού Ιστού.

Δείτε επίσης

[Επεξεργασία |επεξεργασία κώδικα]

Υποσημειώσεις

[Επεξεργασία |επεξεργασία κώδικα]
  1. Hervé Gallaire, Jack Minker (Εκδότες): Logic and Data Bases, Symposium on Logic and Data Bases, Centre d'études et de recherches de Toulouse, 1977. Advances in Data Base Theory, Plenum Press, New York, 1978,ISBN 0-306-40060-X.
  2. Serge Abiteboul, Richard Hull, Victor Vianu: Foundations of databases. σελ.305.
  3. Banilhon, "Magic sets and other strange ways to implement logic programsΑρχειοθετήθηκε 2012-03-08 στοWayback Machine."
  4. Frank Pfenning and Carsten SchuermannTwelf User's Guide
  5. «ACM SIGMOD Database Software». Αρχειοθετήθηκεαπό το πρωτότυπο στις 15 Μαρτίου 2010. Ανακτήθηκε στις 4 Ιουλίου 2010. 
  6. «SecPAL».Microsoft Research. Αρχειοθετήθηκεαπό το πρωτότυπο στις 23 Φεβρουαρίου 2007. Ανακτήθηκε στις 4 Ιουλίου 2010. 
  7. «Jena». 
Ανακτήθηκε από "https://el.wikipedia.org/w/index.php?title=Datalog&oldid=10261078"
Κατηγορίες:
Κρυμμένες κατηγορίες:

[8]ページ先頭

©2009-2026 Movatter.jp