SourceForge.net Logo Support This Project
Datalog Educational System

The Datalog Educational System (DES) is a free, open-source, multiplatform, portable, Prolog-based implementation of a deductive database system. DES 3.0 is the current implementation, which enjoys Datalog, Relational Algebra and SQL query languages, full recursive evaluation with memoization techniques, full-fledged arithmetic, stratified negation, duplicates and duplicate elimination, integrity constraints, ODBC connections to external relational database management systems (RDBMSs), Datalog and SQL tracers, a textual API for external applications, and novel approaches to hypothetical SQL queries, declarative debugging of Datalog queries and SQL views, test case generation for SQL views, null values support, (tabled) outer join and aggregate predicates. The system is implemented on top of Prolog and it can be used from a Prolog interpreter running on any OS supported by such interpreter. Moreover, Windows, Linux and MacOSX executables are also provided. See also Key Features.

We have developed DES aiming to have a simple, interactive, multiplatform, and affordable system (not necessarily efficient) for students, so that they can get the fundamental concepts behind a deductive database with Datalog, Relational Algrebra and SQL as query languages. SQL is supported with a reasonable coverage of the standard for teaching purposes. Supported (extended) relational algebra includes duplicates, outer joins and recursion. Other deductive systems are not fully suited to our needs due to the absence of some characteristics DES does offer for our educational purposes. This system is not targeted as a complete deductive database, so that it does not provide transactions, security, and other features present in current database systems.

There are two relevant enhancements in the current release: Predicate persistency supported by external databases, and an extended SQL debugger following [CGS12a]. The first one motivates raising the major version as it opens a brand new scenario for several reasons: First, predicates are no longer limited by available memory; instead, persisted predicates are using as much secondary storage as needed and provided by the underlying external database. Second, processing is directed to the external database for those rules that can be projected, and to the deductive engine for rules that can not. This way, one can take advantage of the external database performance and scalability. Third, queries which are not possible in an external database can be solved by the deductive engine. So, one can extend external database expressiveness with the added features in DES. Finally, as several ODBC connections are allowed at a time, different predicates can be made persistent in different DMBSs, which allows for interoperability among external relational engines and the local deductive engine, therefore enabling business intelligence applications. (See Section 5.2 for details.) With respect to the new SQL Debugger version, which is a new implementation, it also now accept user information about wrong and missing tuples, allowing to focus the questions directed to the user on more precise error sources, therefore preventing many questions involving large sets of data (see Section 5.9 for details). New ports to SICStus Prolog 4.2.1 and SWI-Prolog 6.0.2 have been provided. License has been relaxed to LGPL version 3. The complete list of enhancements, changes and fixed bugs are listed in Section 11.1 of the user manual.

A novel contribution implemented in this system is a declarative debugger of Datalog queries [CGS07,CGS08], which relies on program semantics rather than on the computation mechanism. The debugging process is usually started when the user detects an unexpected answer to a query. By asking questions about the intended semantics, the debugger looks for incorrect program relations. See Section 5.8 of the user manual for details. Also, a similar declarative approach has been used to implement a SQL declarative debugger, following [CGS11b]. There, possible erroneous objects correspond to views, and the debugger looks for erroneous views asking the user whether the result of a given view is as expected. In addition, trusted views are supported to prune the number of questions. See Section 5.9 of the user manual for details. A further release of the system will include improved user debugging information in the form of missing and wrong tuples, following [CGS12a]. See Section 5.9 of the user manual for details. In addition, following the need for catching program errors when handling large amounts of data, we also include a test case generator for SQL correlated views [CGS10a]. Our tool can be used to generate positive, negative and both positive-negative test cases (cf. Section 5.10 of the user manual).

Web site last update: May 10, 2012

[Home] [Download] [Key Features] [Screenshots] [Release Notes] [Known Bugs] [License] [FAQ] [News] [Contact] [Contributions] [Publications] [DES Facts] [Statistics]