Prolog+CG 2.0

What is Prolog+CG 2.0?

Prolog+CG 2.0 is a Prolog implementation in Java. It has two extensions to standard Prolog:

  • A subset of the Conceptual Graphs theory of John Sowa is directly supported in the language.
  • Object-Oriented extensions have been added.

Alpha/Beta status

Prolog+CG is really a prototype and not suitable for production use. It does contain bugs. Be warned.

It is interesting, however, as a research platform, and also as a teaching platform. At the University of Aalborg, Denmark, a group of researchers are using Prolog+CG to teach formalisation of meaning to third-year students in the humanities. Our course materials are available for free online.

If you encounter any bugs in the program, please feel free to write to Ulrik Petersen, the current maintainer.

Please don't write to Prof. Kabbaj, the author of the program. He cannot give time to answering emails about Prolog+CG 2.0.

Prolog+CG 2.0 is being replaced

Prolog+CG 2.0 is legacy code. A newer, better version has been developed by Prof. Kabbaj and his group, and has been released as part of the Amine-platform. This website is dedicated to maintaining Prolog+CG 2.0, but please consider using the newer version instead.

Comparison to standard Prolog

Most of standard prolog is supported. A small library of built-in goals is provided, documented from within the program. Definite Clause Grammars are not supported.

Key changes from standard Prolog include:

  • Lists are formed with (parentheses) rather than [square brackets]. The head operator still works (as|expected).
  • The lexical rules for variables and identifiers are different. To summarize:
    • Variable names are no longer identified by having an initial upper-case letter. Instead, if longer than one character, their first two characters must not both be letters. If there is only one character, it is always construed as a variable. Valid characters are letters (A-Z, a-z), numbers (0-9) and underscores (_).
    • Other identifiers (including predicate names and atoms) must begin with two letters, upper-case or lower-case.

    The reason for this lexical change is to allow for compatibility with the CG literature, where concept types in the ontology often begin with upper-case letters, such as "Cat", "Person", "City", etc.

Who are behind this?

Prof. Dr. Adil Kabbaj developed Prolog+CG.

Ulrik Petersen is the current maintainer. He is the one you should contact with questions and bugreports.