I just completed an swi-prolog client (a module) for accessing ConceptBase (CB), a highly flexible frame based deductive database system . The swi-prolog client is now available as part of CB and under a FreeBSD-style open source license – the same as CB.
Below are some comments on CB, which also quite clearly highlights my appreciation for the system …
What it is?
CB is a deductive and object (frame) oriented database system for managing models and metamodels, is based on several decades of research among many research groups, and a forerunner to today’s linked database systems.
It uses Datalog with negation as its underlying engine which is implemented in SWI-Prolog and a C++ based object (quad) store.
CB goes beyond today’s triple stores in that it enable creating in a declarative manner new kind of conceptual modeling constructs by means of metamodeling, including syntax and semantics, to augment the “primitive” modeling constructs defined via its axioms.
For example, one can declaratively define the syntax and semantics of a new materialization link, a hybrid between specialization and instantiation, and then make use of it in the definition and use of specialized modeling notations.
CB provides a solid basis for storing and inferring frames at any abstraction level and to query them using its efficient Datalog implementation.
CB is currently actively maintained by Manfred Jeusfeld at University of Skövde in Sweden (who developed a Datalog-based axiomatization and a major part of the source code of CB), and beside significant use in academia, also seeing active use in industry.
What is it based on?
CB is based on a single primitive the quad tuple (as opposed to a triple in today’s triple stores) – a proposition. CB additionally defines 31 built-in axioms that implement a highly flexible object-oriented (frame-oriented) representation and deductive system, that includes, for example, facilities for frame descriptions, multiple inheritance, deductive rules, unlimited meta levels (strata), (deductive) query frames and views, as well as active Event Condition Action (ECA) rules, seamlessly integrated into the rest.
The origin of CB are in the Telos Requirements Modeling language , which was designed to represent and interlink information system development artifacts across the whole development life-cycle: from requirements, to design and implementation artifacts, including process-oriented notations and artifacts that link between other artifacts.
For example, Telos (and CB) allows to define any number of conceptual notations, including custom Domain Specific Languages, and how all these interrelate, and related, along some additionally defined organizational development method.
Models can also be simulate and maintained using a built-in active rule engine.
Use of swi-prolog client:
The new swi-prolog client allows to interface with CB from within an SWI-Prolog 7.2. or later program. This allows to develop applications in SWI-Prolog that use CB as semantic knowledge base.
The swi-prolog client augments the existing suite of Java and C clients provided with CB.