Key Features


    Free, Multiplatform, Portable, Open-source:

    • It can be used in any OS platform (Windows, Mac, Linux, ...), running on one of the supported Prolog interpreters.
    • Moreover, portable executable applications are provided for Windows, Mac, and Linux.


    • Based on a command line interpreter, you can play with DES submitting queries, modifying the database, and applying commands.


    • You can use the Java-based ACIDE graphical environment (screenshot) as released in Download.
    • It has been configured for Datalog, SQL and RA syntax highlighting, command buttons and interactive console, therefore easing its use by decreasing the number of keystrokes.


    Query languages:

    • Enjoy the power of deductive databases using Datalog, Extended Relational Algebra (RA) and SQL, all of them recursive.
    • Inspect equivalent formulations in different languages for your queries (SQL - Datalog, RA - SQL - Datalog).
    • Share a common database of relations which can be defined with any of these languages, and query it with any of them too!

    Live project:

    • Expect a new release every 2 or 3 months (even less!).
      (Are you aware of development versions?)

    Stable system:

    • Few bugs have been reported.

    Popular system:

    Database updates:

    • Modify the database with both SQL DML and system commands.

    Null values:

    • Take the responsibility of unknowness á la SQL at your own risk!

    Outer joins:

    • If nulls are allowed, why not use outer joins: left, right and full outer joins for SQL, RA and Datalog?


    • Summarize with count, sum, min, max, avg, and times for SQL, RA and Datalog.
    • Find both predicate and functions versions of Datalog aggregates.
    • Group data sets and filter with aggregates.
    • Quickly build groups on-the-fly with Datalog auto-grouping.


    • Enable or disable duplicates in Datalog, RA and SQL processing. Discard duplicates with distinct/1 and distinct/2.

    Hypothetical queries, views and rules

    • Use the implication => to build “what-if” applications in a business intelligence scenario.
    • Use the ASSUME SQL clause to build hypothetical queries and views.

    Relational database access via ODBC:

    • ODBC sources of data can be seamlessly accessed. Connect DES to any DBMS supporting such connections (MySQL, MS Access, Oracle, ...)


    • Make predicates to persist on external data sources via ODBC connections.


    • An input mode warns users about the need to ground an argument for an unsafe predicate.


    • Don’t expect much more than stratified negation and null flaws.

    Novel and extended SQL features:

    • Enforcement of functional dependencies.
    • Hypothetical queries:
      Let's assume data which is not in the database and play with decision-support systems.
    • DIVISION relational operation:
      Use it in SQL as well as in RA.
      (Don’t miss it with the arithmetic operator!)
    • Mutual and non-linear recursion
    • That’s ok, but, may I use this novel features with external databases, such as MySQL?
      Yes! Even with DB2, PostgreSQL, SQL Server and any DBMS connected with ODBC

    Integrity constraints:

    • Domain.
    • Types.
    • Primary keys.
    • Referential integrity.
    • Functional dependency.
      Even for SQL CREATE TABLE definitions.
      (Why don’t we have this in current DBMS’s already?)
    • User-defined strong constraints.
    • Enable or disable constraint checking.

    Declarative debugging of Datalog and SQL:

    • Did you ever looked for a working declarative debugger? Debug towards intended semantics rather than procedural semantics!
    • Try it also with external databases: DB2, MySQL, PostgreSQL and Oracle.

    Test case generation for SQL views:

    • Try this prototype for working with views over large tables and test them with the test cases, not with the actual tables!

    SQL database generator:

    • If you need SQL database instances for your benchmarks, generate them randomly at will.

    Full-fledged arithmetic:

    • Write arithmetical expressions with a wide set of arithmetical functions, operators and constants.

    Type system for Datalog, SQL, RA, TRC and DRC:

    • Feel the benefits of typed relations and type inference.
    • Do you need automatic type casting ŕ la SQL? Just enable it with /type casting on

    Source-to-source program transformations:

    • Safety. Enable safe transformations to execute safe rules. Experiment with unsafe rules.
    • Performance. Enable simplifications to speed-up computations.
    • Built-ins. Programs with outer join calls are transformed in order to be computed by the underlying tabled, fixpoint method.

    Tabling-based implementation:

    • Memo tables are used for implementing fixpoint and caching computations.

    Development mode:

    • Enable it to understand how the system works. See the transformed program and examine nulls.

    Configurable look and feel:

    • Pretty-printers for Datalog, RA and SQL.
    • Single and multiline modes.
    • Examine the SQL statements sent to the external database for persistent predicates (/show_sql on) and results from RA compilations.

    Batch execution:

    • Provide a file with DES inputs and log the results into another file.
    • Use batch commands for execution control.

    Connecting DES to the outside world:

    • Plug DES to a host system via standard streams.
    • Try the new TAPI as released since version 2.5.
      You can connect DES to any development system! Java, C++, VB, Python, ...


    Not all is good. Consider that this is an educational system primarily supported by one developer. So:

    • Do not expect DES to beat any performance mark.
    • Do not expect DES to handle large amounts of data (except for external ODBC databases).
    • Datalog:
      • No compound terms as arguments in user relations.
      • No database updates via Datalog rules are allowed.
    • SQL:
      • Table and column identifiers are case sensitive.
      • Computable SQL statements follow the grammar in the user manual. The current grammar parses extra clauses which cannot be computed yet (e.g., ALL, ANY, ...)


    Most CONS became PROS along time, so:

    What we would expect from DES in the future?

    Keep an eye on the next version!