ConceptBase

From Rosetta Code
ConceptBase is an implementation of Datalog. Other implementations of Datalog.

ConceptBase

ConceptBase implements Datalog-neg, i.e. Datalog with negation. The computational model mimics Prolog's SLDNF but employs so-called tabling for all derived predicates. Tabling is a technique to maintain the extension of finite predicates.

As such Datalog-neg is not a full-fledged programming language. It always terminates, so it cannot compute certain functions. ConceptBase extends Datalog in the following ways:

  1. Arithmetic on integer and floating point numbers: integer arithmetic is already sufficient to make the resulting language undecidable
  2. Recursive function definitions: this allows to define functions like the Ackermann function
  3. Active rules: other than Datalog rules, active rules change the state of the database (or memory)

The result is a Turing-complete language, which is rooted in Datalog but which no longer belongs to the Datalog family.