1 Logic Programming and Databases: An Overview --; 1.1 Logic Programming as Query Language --; 1.2 Prolog and Datalog --; 1.3 Alternative Architectures --; 1.4 Applications --; 1.5 Bibliographic Notes --; 2 A Review of Relational Databases and Prolog --; 2.1 Overview of Relational Databases --; 2.2 Prolog: A Language for Programming in Logic --; 2.3 Bibliographic Notes --; I Coupling Prolog to Relational Databases --; 3 Prolog as a Query Language --; 4 Coupling Prolog Systems to Relational Databases --; 5 Overview of Systems for Coupling Prolog to Relational Databases --; II Foundations of Datalog --; 6 Syntax and Semantics of Datalog --; 7 Proof Theory and Evaluation Paradigms of Datalog --; III Optimization Methods for Datalog --; 8 Classification of Optimization Methods for Datalog --; 9 Evaluation Methods --; 10 Rewriting Methods --; 11 Extensions of Pure Datalog --; 12 Overview of Research Prototypes for Integrating Relational Databases and Logic Programming.
This book presents a systematic overview of the interaction between logic programming and database systems. Merging these two technologies permits new types of systems which extend the frontiers of computer science and open up new applications, such as deductive databases, knowledge base management systems, and expert database systems. The book opens with an overview and an introductory review, then is divided into three parts devoted to - the coupling of Prolog with relational databases, - the precise definition of the Datalog language, and - the description of query optimization techniques and extensions of Datalog. A closing chapter reviews the main projects on the integration of logic programming and databases, including LDL, Nail! and the Fifth Generation Project. The presentation achieves a balance between theoretical and technological issues, by providing a careful introduction to the underlying paradigms and their theoretical foundations, and by stressing the problems involved in achieving efficiency when interfacing logic programming formalisms with large databases. The book is thus suited for members of both the database and logic programming communities. The authors use a tutorial style complete with examples and exercises to introduce students as well as researchers to this developing field.