Datalog
Datalog ist eine Datenbank-Programmiersprache für deduktive Datenbanken, die Prolog syntaktisch und semantisch ähnelt.
Sie geht zurück auf die Arbeit von Herve Gallaire und Jack Minker im Jahr 1978.[1]
Datalog unterscheidet sich von Prolog in den folgenden Punkten:
- Zusammengesetzte Terme dürfen nicht als Argumente von Prädikaten vorkommen. So ist zum Beispiel erlaubt, dagegen verboten.
- In Datalog geschriebene Programme müssen im Hinblick auf Negation und Rekursion stratifiziert sein.
- Datalog-Programme können effizient bottom-up ausgewertet werden, wobei nur eine endliche Menge an Fakten abgeleitet werden kann und die Auswertungszeit beschränkt ist.
- Die Reihenfolge der Regeln spielt in einem Datalog-Programm keine Rolle.
Ein Vorteil gegenüber relationalen Kalkülen ist die Möglichkeit, Rekursion ohne vorgegebene Rekursionstiefe definieren zu können. Die Terminierung der Rekursion kann durch deduktive Abgeschlossenheit erreicht werden, also durch Erreichen des kleinsten Fixpunktes.
Derzeit entwickeln Forscher auf Basis von Datalog, das für extreme Parallelität geeignet ist, die Programmiersprache Boom[2] für die effiziente Nutzung im Cloud Computing.[3]
Beispiel-Programm
% koeln ist mit duesseldorf verbunden
verbunden(koeln,duesseldorf).
% duesseldorf ist mit dortmund verbunden
verbunden(duesseldorf,dortmund).
% hannover ist mit dortmund verbunden
verbunden(hannover,dortmund).
% wenn X mit Y verbunden ist, dann auch Y mit X
verbunden(Y,X) :- verbunden(X,Y).
% X ist mit Z verbunden, wenn X mit einem beliebigen Y verbunden ist, das wiederum mit Z verbunden ist
verbunden(X,Z) :- verbunden(X,Y),verbunden(Y,Z).
% Anfrage: Ist koeln mit hannover verbunden?
?- verbunden(koeln,hannover)?
Weblinks
Einzelnachweise
- ↑ Logic and Data Bases. Symposium on Logic and Data Bases, Centre d’études et de recherches de Toulouse in „Advances in Data Base Theory“. Plenum Press, New York 1978
- ↑ BOOM: Generating Big Clouds from Small Programs. 23. Dezember 2009
- ↑ Besserer Code für die Wolke. heise.de; Technology Review online, 23. Dezember 2009
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.