Jump to content

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.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.