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 0.11 graphical environment (screenshot) as released in Download.
    • It has been configured for Datalog syntax highlighting, command buttons and interactive console, therefore easing its use by decreasing the number of keystrokes (It applies to executable distributions).

    Emacs-enabled:

    Query languages:

    • Enjoy the power of deductive databases using Datalog, Extended Relational Algebra and SQL, all of them recursive.
    • 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.

    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 both Datalog and SQL processing. Discard duplicates with distinct/1 and distinct/2

    Hypothetical queries and rules

    • Use the implication => to build “what-if” applications in a business intelligence scenario

    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:

    • 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 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 programs:

    • Did you ever looked for a working declarative debugger? Debug towards intended semantics rather than procedural semantics!

    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!

    Full-fledged arithmetic:

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

    Type system for Datalog rules and SQL tables and views:

    • Feel the benefits of typed relations and type inference.

    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 speeding-up computations.

    Development mode:

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

    Pretty-printers:

    • For SQL, RA and Datalog programs. Feel free to enable or disable pretty-print.

    Batch execution:

    • Provide a file with DES inputs and log the results into another file.

    Connect 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 (but 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.
      • Some incorrect SQL statements are not rejected (as those containing a GROUP BY clause and columns in the projection list which do not occur in the grouping list).
      • Computable SQL statements follow the grammar in user manual. The current grammar parses extra clauses which cannot be computed yet (e.g., ALL, ANY, ...)
      • Hypothetical queries cannot be used in view definitions

Bottomline:

    Most CONS became PROS along time, so: What we would expect from DES in the future?

    Keep an eye on the next version!