The Cogitant library is a set of C++ classes enabling to easily handle conceptual graphs as well as the other objects of the model (support, rules, etc.). To each object of the model matches a class in Cogitant, and the data structures used are a basic implementation of the objects of the model (for example, a graph is a set of vertices and a set of edges), by this way, it is easy for someone already knowing the model of conceptual graphs to understand the structure of Cogitant, and the extensions are eased.
Functions
The main functions offered by the library are the following ones:
-
Handling in memory of conceptual graphs. It is possible to handle basic or nested conceptual graphs, not necessarily connexs, that may contain coreference links. The types of concept vertices can be conjunctive types.
-
Handling in memory of a support (sets of types of concepts, types of relationships, types of nestings and individual tags). Several supports can coexist in memory, but a conceptual graph is defined on a single support. The support also includes a range of banned types. The headings of the support elements can be provided in different languages.
-
Basic operations on graphs (vertex addition, vertex junction, separated sum, etc.)
-
Projection operations between conceptual graphs.
-
Input/output operations in BCGCT, CoGXML and CGIF formats. Graph output under linear form.
-
Conceptual graph rules handling, and operations involving rules (searching for potential applications of a rule on a graph, application of a rule on a graph, graph closure by a set of rules, etc.)
-
Handling of conceptual graph constraints, and graph checking operations being given a constraint.
-
Access to Cogitant's functions from an application written in Java thanks to the presence of Java classes (partly) giving access to Cogitant's classes via JNI. It is also possible to access Cogitant's functions, remotely, by network, thanks to the presence of a client-server architecture based on the exchange of XML messages.
Goals
The main goals of the Cogitant library are the following ones:
-
Usability. The class hierarchy provides an easy-to-use implementation of the objects of the model and enables to easily execute operations of the model. In addition, the main methods of the library check the arguments that are sent to them, what enables to correct quickly a wrong program. Finally, the use of sophisticated mechanisms such as generic classes, exceptions, namespaces or "iterators" (as in std library) eases the use of classes.
-
Extensions possibilities. The class library was designed to be easily extensible, regarding the definition of new operations or the inclusion of new classes in order to represent objects of the model. The addition of new file formats has been particularly simplified.
-
Performance. The operations of the model have been implemented so as to be quickly executed. In order to easily manage supports or large size graphs (or large quantities of small graphs) classes were written so as to fill a reasonable size.
-
Portability. The library has been tested with all major operating systems (GNU/Linux, MS Windows, MacOS X, Solaris/OpenSolaris, FreeBSD) and compilers (GNU C++, Microsoft Visual C++, XCode, Intel C++, Cygwin G++, Mingw G++, LLVM Clang) of the market.
-
Sustainability. The current version of the library has been developed since 2000 and CoGITo date from 1994. Since 2000, numerous extensions have been included in the library, keeping the objective of providing a relatively stable API.
Documentation
A HTML documentation is provided in the archive file of the source of the library, and this documentation can be accessed online on the Cogitant's website. This documentation is made up of more than 200 HTML pages and details every class of the library, and provides for each method of each class a description of the parameters, of the returned value, and of the process carried out. In addition to the description of the class hierarchy, a complete tutorial is available, and describes how to compile and use Cogitant, as well as a reference of file formats. The documentation is also available in PDF format. The PDF file of over 1000 pages can be downloaded at the download page of the website.
History
The Cogitant library is an extension of the CoGITo library developed since 1994 in the team Représentation de connaissances par des graphes (knowledge representation by graphs) LIRMM (formerly "Graphes conceptuels (conceptual graphs)" team), headed by Michel Chein and Marie-Laure Mugnier.
CoGITo (Conceptual Graphs Integrated Tools) was created by Ollivier Haemmerlé, who has defined and developed the general architecture of the library. The various PhDs who have succeeded one another in the team have corrected bugs, brought out extensions (usually corresponding to their PhD work), and managed relationships with users: Boris Carbonneill, Michel Leclère, Olivier Guinaldo.
In 1997, the library has changed its name to Cogitant v-4 (CoGITo allowing Nested Typed graphs) for the occasion of the consideration of rules (developed by Eric Salvat) and typed nested graphs with coreference links (developed by David Genest). Since then, the latter has maintained the library and carried out version 5, which is, since 2001, developed jointly by the LIRMM - GraphIK team and the LERIA - ICLN team.
To learn more...
After this brief introduction, we have now to get in a little more technical description, and the tutorial, starting with the Introduction which is designed for this purpose. Good luck.