ConceptBase: Difference between revisions

From Rosetta Code
Content added Content deleted
(Created page with '{{stub}} {{implementation|Datalog}} [http://conceptbase.sourceforge.net/ ConceptBase]')
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{stub}}
{{implementation|Datalog}}
{{implementation|Datalog}}
[http://conceptbase.sourceforge.net/ ConceptBase]
[http://conceptbase.sourceforge.net/ 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:

# Arithmetic on integer and floating point numbers: integer arithmetic is already sufficient to make the resulting language undecidable
# Recursive function definitions: this allows to define functions like the Ackermann function
# 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.

Latest revision as of 12:16, 18 September 2013

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.