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 and a Java-based IDE are also provided.
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.
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. Following [CGS12a], the system includes improved user debugging information in the form of missing and wrong tuples. 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).