ConceptBase.cc -
A Database System
for Metamodeling and
Method Engineering

ConceptBase.cc is a multi-user deductive database system with an object-centered data model.
Its ability to represent information at any abstraction level
(data, class, metaclass, meta-metaclass, etc.) makes it a powerful tool
for metamodeling and engineering of customized modeling languages.
The system is accompanied by a highly configurable graphical user interface
that builds upon the logic-based features of the ConceptBase.cc server.

Uniform object representation. All objects are represented in a uniform quadruple
data structure called P-facts pioneered by the developers of the
Telos language. Objects, their attributes, specializations, and instantiations
are all represented as P-facts. By this, for example, attributes of objects can
have attributes and are instances of other attributes. Even specialization between attributes is fully supported.

Logical expressions. Rules, constraints, and queries are expressed in first-order
logic formulas. Internally, the system transforms them into Horn clauses interpreted by a
Datalog-based evaluation machine. Logical expressions in ConceptBase.cc can range over any object regardless
of its type (node vs. link) and its abstraction level.
Datalog is known for being the
most robust computational system for evaluating logical expressions.

Active rules. Active rules update the database or call external routines as a reaction to
events. The execution follows the Event-Condition-Action scheme
(ECA).
Updates to the database are formulated via Tell/Untell/Retell commands.
External routines (e.g. for invoking a script to send an email) can be incrementally added to
the database using a simple Prolog-based programming interface.

Functional expressions. ConceptBase.cc supports functional and arithmetic expressions to
define computation within models. Functions can be recursively defined much like in
Functional Programming. For example, the
length of the shortest path between two nodes is defined as the minimum of the lengths
of the shortest path between the successors of the start node and the end node.
Functional expressions are particularily useful for defining complex metrics on models.
Aggregation functions such as SUM and AVG are predefined.