http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd
Synthesis digital library of engineering and computer science
The use of logic in databases started in the late 1960s. In the early 1970s Codd formalized databases in terms of the relational calculus and the relational algebra. A major influence on the use of logic in databases was the development of the field of logic programming. Logic provides a convenient formalism for studying classical database problems and has the important property of being declarative, that is, it allows one to express what she wants rather than how to get it. For a long time, relational calculus and algebra were considered the relational database languages. However, there are simple operations, such as computing the transitive closure of a graph, which cannot be expressed with these languages. Datalog is a declarative query language for relational databases based on the logic programming paradigm. One of the peculiarities that distinguishes Datalog from query languages like relational algebra and calculus is recursion, which gives Datalog the capability to express queries like computing a graph transitive closure. Recent years have witnessed a revival of interest in Datalog in a variety of emerging application domains such as data integration, information extraction, networking, program analysis, security, cloud computing, ontology reasoning, and many others. The aim of this book is to present the basics of Datalog, some of its extensions, and recent applications to different domains.
2. Logic and relational databases -- 2.1 First-order logic -- 2.1.1 Syntax -- 2.1.2 Herbrand semantics -- 2.2 Relational model -- 2.2.1 Relational algebra -- 2.2.2 Relational calculus -- 2.2.3 Conjunctive queries -- 2.2.4 Data dependencies -- 2.3 Complexity classes --
3. Datalog -- 3.1 Syntax -- 3.2 Semantics -- 3.2.1 Model-theoretic semantics -- 3.2.2 Fixpoint semantics -- 3.2.3 Proof-theoretic semantics -- 3.3 Program evaluation -- 3.3.1 Evaluation of non-recursive programs -- 3.3.2 Evaluation of recursive programs -- 3.4 Expressivity and complexity --
4. Negation -- 4.1 Syntax -- 4.2 Semipositive programs -- 4.3 Stratified programs -- 4.4 Locally stratified programs -- 4.5 Unstratified negation -- 4.5.1 Stable model semantics -- 4.5.2 Well-founded semantics -- 4.6 Choice -- 4.6.1 Syntax -- 4.6.2 Stable-model declarative semantics -- 4.6.3 Fixpoint semantics -- 4.6.4 Greedy choice -- 4.7 Disjunction --
5. Function symbols -- 5.1 Syntax and semantics -- 5.2 Termination criteria -- 5.2.1 [Lambda]-restricted programs -- 5.2.2 Finite domain programs -- 5.2.3 Argument-restricted programs -- 5.2.4 Safe programs -- 5.2.5 [Gamma]-acyclic programs -- 5.2.6 Bounded programs -- 5.3 Program adornment -- 5.4 Dealing with disjunction and negation --
6. Aggregates -- 6.1 Syntax -- 6.2 Sum and count -- 6.3 Summation -- 6.4 Combining summation and greedy choice --
7. Query optimization -- 7.1 Magic-sets rewriting -- 7.2 Chain queries -- 7.2.1 The pushdown method -- 7.2.2 Right-linear programs -- 7.2.3 Grammar transformations to improve pushdown -- 7.2.4 When pushdown reduces to counting -- 7.2.5 Implementation and termination --
8. Applications -- 8.1 Security -- 8.2 Networking -- 8.3 Web data management -- 8.4 Program analysis -- 8.5 Module composition -- Bibliography -- Authors' biographies.
Abstract freely available; full-text restricted to subscribers or individual document purchasers.
System requirements: Adobe Acrobat Reader.
Includes bibliographical references (pages 135-153).
Synthesis lectures on data management ; # 41