The deductive database system [script L][script D][script L]++

FAIZ ARNI, KAYLIANG ONG, SHALOM TSUR, HAIXUN WANG, CARLO ZANIOLO
2002 Theory and Practice of Logic Programming  
This paper describes the LDL++ system and the research advances that have enabled its design and development. We begin by discussing the new nonmonotonic and nondeterministic constructs that extend the functionality of the LDL++ language, while preserving its model-theoretic and fixpoint semantics. Then, we describe the execution model and the open architecture designed to support these new constructs and to facilitate the integration with existing DBMSs and applications. Finally, we describe
more » ... e lessons learned by using LDL++ on various tested applications, such as middleware and datamining. 2 The Language A challenging research objective of pursued by LDL++ was that of extending the expressive power of logic-based languages beyond that of LDL while retaining a fully declarative model-theoretic and fixpoint semantics. As many other deductive database systems designed in the 80s [25], the old LDL system required programs to be stratified with respect to nonmonotonic constructs such as negation and set aggregates [53] . While, stratification represented a major step forward in taming the difficult theoretical and practical problems posed by nonmonotonicity in logic programs, it soon became clear that it was too restrictive for many applications of practical importance. Stratification makes it impossible to support efficiently even basic applications, such as Bill of Materials and optimized graph-traversals, whose procedural algorithms express simple and useful generalizations of transitive closure computations. Thus, deductive database researchers have striven to go beyond stratification and allow negation and aggregates in the recursive definitions of new predicates. LDL++ provides a comprehensive solution to this complex problem by the fully integrated notions of (i) choice, (ii) User Defined Aggregates (UDAs), and (iii) XY-stratification. Now, XYstratification generalizes stratification to support negation and (nonmonotonic) aggregates in recursion. However, the choice construct (used to express functional dependency constraints) defines mappings that, albeit nondeterministic, are monotonic and can thus be used freely in recursion. Moreover, this construct makes it possible to provide a formal semantics to the notion of user-defined aggregates (UDAs), and to identify a special class of UDAs that are monotonic [60]; therefore, the LDL++ compiler recognizes monotonic UDAs and allows their unrestricted usage in recursion. In summary, LDL++ provides a two-prong solution to the nonmonotonicity problem, by (i) enlarging the class of logic-based constructs that are monotonic (with constructs such as choice and monotonic aggregates), and (ii) supporting XY-stratification for hard-core nonmonotonic constructs, such as negation and nonmonotonic aggregates. These new constructs of LDL++ are fully integrated with all other constructs, and easy to learn and use. Indeed, a user need not know abstract semantic concepts, such as stable models or well-founded models; instead, the user only needs to follow simple syntactic rules-the same rules that are then checked by compiler. In fact, the semantic well-formedness of LDL++ programs can be checked at compile time-a critical property of stratified programs that was lost in later extensions, such as modular stratification [35] . These new constructs are described next. Functional Constraints Say that our database contains relations student(Name, Major, Year), and professor(Name, Major). In fact, let us take a toy example that only has the following facts: student( JimBlack , ee, senior). professor(ohm, ee). professor(bell, ee). Now, the rule is that the major of a student must match his/her advisor's major area of specialization. Then, eligible advisors can be computed as follows: elig adv(S, P) ← student(S, Majr, Year), professor(P, Majr).
doi:10.1017/s1471068402001515 fatcat:udgznmz2inghjeybxgo5zxewzq