SourceForge.net Logo
Key Features

PROS:

    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.

    Interactive:

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

    GUI:

    • 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.

    Emacs-enabled:

    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?

    Aggregates:

    • 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.

    Multisets:

    • 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, ...)

    Persistency:

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

    Modes:

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

    Negation:

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

    Novel and extended SQL features:

    • Semantic checking of SQL statements.
    • 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, ...

CONS:

    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, ...)

Bottomline:

    Most CONS became PROS along time, so:

    What we would expect from DES in the future?

    Keep an eye on the next version!