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 Sandborg-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 Sandborg-Petersen is the current maintainer. He is the one you should contact with questions and bugreports.