La bibliothèque Cogitant est un ensemble de classes C++ permettant de manipuler facilement des graphes conceptuels ainsi que les autres objets du modèle (support, règles, etc.). À chaque objet du modèle correspond une classe dans Cogitant, et les structures de données utilisées sont une implantation simple des objets du modèle (par exemple, un graphe est un ensemble de sommets et un ensemble d'arêtes), de cette façon, il est facile pour une personne connaissant déjà le modèle des graphes conceptuels de comprendre la structure de Cogitant, et les extensions sont facilitées.
Fonctions
Les principales fonctions offertes par la bibliothèque sont les suivantes :
-
Manipulation en mémoire de graphes conceptuels. Il est possible de manipuler des graphes conceptuels simples ou emboîtés, pas nécessairement connexes, pouvant contenir des liens de coréférence. Les types des sommets concepts peuvent être des types conjonctifs.
-
Manipulation en mémoire d'un support (ensemble de types de concepts, de types de relations, de types d'emboîtements et de marqueurs individuels). Plusieurs supports peuvent cohabiter en mémoire, mais un graphe conceptuel est défini sur un et un seul support. Le support contient aussi un ensemble de types bannis. Les intitulés des éléments du support peuvent être donnés dans différentes langues.
-
Opérations élémentaires sur les graphes (ajout de sommet, joint de sommets, somme disjointe, etc.)
-
Opération de projection entre graphes conceptuels.
-
Opérations d'entrées/sorties aux formats BCGCT, CoGXML et CGIF. Sortie d'un graphe sous forme linéaire.
-
Manipulation de règles de graphes conceptuels, et opérations faisant intervenir des règles (recherche des applications possibles d'une règle sur un graphe, application d'une règle sur un graphe, fermeture d'un graphe par un ensemble de règles, etc.)
-
Manipulation de contraintes de graphes conceptuels, et opération de vérification d'un graphe étant donnée une contrainte.
-
Accès aux fonctions de Cogitant depuis une application écrite en Java grace à la présence de classes Java donnant (partiellement) accès aux classes de Cogitant via JNI. Il est aussi possible d'accéder aux fonctions de Cogitant, à distance, par le réseau, grâce à la présence d'une architecture client-serveur basée sur l'échange de messages XML.
Objectifs
Les principaux objectifs de la bibliothèque Cogitant sont les suivants :
-
Facilité d'emploi. La hiérarchie de classes fournit une implantation simple d'emploi des objets du modèle et permet d'exécuter facilement les opérations du modèle. De plus, les principales méthodes de la bibliothèque vérifient les arguments qui leur sont passés, ce qui permet de corriger plus rapidement un programme incorrect. Enfin, l'utilisation de mécanismes évolués tels que les classes génériques, les exceptions, les espaces de noms ou des "iterators" (comme dans la bibliothèque standard) simplifient l'utilisation des classes.
-
Possibilités d'extensions. La bibliothèque de classes a été prévue pour être facilement extensible, qu'il s'agisse de la définition de nouvelles opérations ou de l'incorporation de nouvelles classes pour représenter les objets du modèle. L'ajout de nouveaux formats de fichier a été plus particulièrement simplifié.
-
Performance. Les opérations du modèle ont été implantées de façon a être exécutées rapidement. Afin de gérer facilement des supports ou des graphes de grande taille (ou de grandes quantités de petits graphes) les classes ont été écrites de façon à occuper une taille raisonnable.
-
Portabilité. La bibliothèque a été testée avec les principaux systèmes d'exploitation (GNU/Linux, MS Windows, MacOS X, Solaris/OpenSolaris, FreeBSD) et compilateurs (GNU C++, Microsoft Visual C++, XCode, Intel C++, Cygwin G++, Mingw G++, LLVM Clang) du marché.
-
Pérennité. La version actuelle de la bibiothèque est développée depuis 2000, et CoGITo date de 1994. Depuis 2000, de nombreuses extensions ont été incorporées dans la bibliothèque, en gardant l'objectif de fournir une API relativement stable.
Documentation
Une documentation HTML est fournie dans le fichier archive des sources de la bibliothèque, et cette même documentation peut être consultée en ligne sur le site web de Cogitant. Cette documentation est composée de plus de 200 pages HTML et détaille toutes les classes de la bibliothèque, et fournit pour chaque méthode de chaque classe une description des paramètres, de la valeur retournée, et du traitement effectué. En plus de la description de la hiérarchie de classes, un tutoriel complet est disponible, et décrit comment compiler et utiliser Cogitant, ainsi qu'une référence des formats de fichiers. La documentation est aussi accessible au format PDF. Le fichier PDF de plus de 1000 pages peut être téléchargé depuis la page de téléchargement du site.
Historique
La bibliothèque Cogitant est une extension de la bibliothèque CoGITo développée depuis 1994 au sein de l'équipe Représentation de connaissances par des graphes du LIRMM (anciennement équipe "Graphes conceptuels"), sous la direction de Michel Chein et Marie-Laure Mugnier.
CoGITo (Conceptual Graphs Integrated Tools) a été créée par Ollivier Haemmerlé qui a défini l'architecture générale de la bibliothèque et qui l'a développée. Les différents doctorants qui se sont succédé dans l'équipe ont corrigé des bugs, apporté des extensions (correspondant souvent à leur travail de thèse), et géré les relations avec les utilisateurs : Boris Carbonneill, Michel Leclère, Olivier Guinaldo.
En 1997, la bibliothèque a changé de nom pour devenir Cogitant v-4 (CoGITo allowing Nested Typed graphs) à l'occasion de la prise en compte des règles (développées par Éric Salvat) et des graphes emboîtés typés avec liens de coréférence (développés par David Genest). Depuis, ce dernier a maintenu la bibliothèque et réalisé la version 5, qui est, depuis 2001, développée conjointement par le LIRMM - Équipe GraphIK et le LERIA - Équipe ICLN.
Pour en savoir plus...
Après cette brève introduction, il faut maintenant rentrer dans une description un peu plus technique, et le tutoriel, en commençant par l'Introduction qui est prévue à cet usage. Bon courage.