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 un utilisateur de comprendre la structure de CoGITaNT, et les extensions sont facilitées.

Fonctionnalités

CoGITaNT est une extension de la plate-forme CoGITo développée depuis 1994 dans l'équipe Représentation de connaissances par des graphes (anciennement équipe "Graphes conceptuels") du LIRMM. 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.
  • 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.
  • 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 et CoGXML. Sortie d'un graphe sous forme linéaire. Sortie de supports et de graphes au format CGIF.
  • Manipulation en mémoire 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, etc.)

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 STL) 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. Par exemple, le calcul des projections s'effectue environ deux fois plus rapidement que dans la version 4. 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 (Linux, MS Windows XP/Vista/2000, SunOS/Solaris, FreeBSD, NetBSD, MacOS X) et compilateurs (GNU C++ 4.x, GNU C++ 3.x, Microsoft Visual C++ 8.0 -2006), Intel C++ 10, Cygwin G++ 3.3, Mingw G++ 3.2) du marché.

Nouveautés de la version 5.1

  • Architecture client-serveur. L'architecture client-serveur de CoGITaNT permet de rendre disponibles les objets manipulés par la bibliothèque (support, graphes, règles) et opérations (entrées / sorties, projections, etc.) à d'autres applications, éventuellement exécutées sur d'autres postes. Les échanges se font en utilisant des messages XML qui sont échangés par TCP ou HTTP (POST). Les utilisations de cette architecture client/serveur peuvent se diviser en deux catégories :
    • Développement de "clients légers" offrant des fonctionnalités telles que l'édition de graphes. De tels clients peuvent se connecter au serveur, et profiter de fonctions telles que les entrées/sorties ou les opérations de graphes conceptuels. Ces clients peuvent utiliser leurs propres structures de données pour représenter les informations reçues du serveur, en interprétant les messages XML échangés.
    • Développement d'applications clientes basées sur CoGITaNT et permettant d'accéder à des objets distants. Des clients basés sur CoGITaNT peuvent alors se connecter au serveur et accéder aux données du serveur de façon (à peu près) transparente. Ainsi, les clients basés sur CoGITaNT peuvent exécuter des opérations en local, mais aussi accéder aux ressources du serveur telles que le support ou certains graphes de façon très simple : les classes de la bibliothèque dans le client s'utilisent de la même façon que dans la version "monoposte", et les méthodes génèrent des requêtes au serveur quand des données sont nécessaires dans le client.
    Plus de détails dans la section "client serveur" de la documentation. Cette section contient, entre autres, un exemple de programme Java permettant de se connecter à un serveur CoGITaNT.
  • Dessin et édition de graphes. Les classes de dessin permettent d'afficher des graphes conceptuels et de les éditer à la façon d'un logiciel de dessin. Ces classes ne sont pas spécifiques à l'édition de graphes conceptuels avec une bibliothèque graphique donnée. Au contraire, elles peuvent permettre de dessiner / éditer différents objets tels que des supports, des graphes, des règles, en utilisant plusieurs bibliothèques (QT, wxWidgets, Java, etc.). Pour l'instant, le dessin et l'édition de graphes conceptuels est disponible, en utilisant la bibliothèque Java ou wxWidgets.
    capture capture capture
    avec Java,
    sous Windows
    avec wxWidgets/MSW,
    sous Windows
    avec wxWidgets/GTK,
    sous Linux
    La bibliothèque CoGITaNT est donc capable d'utiliser les classes de l'API Java pour dessiner des graphes conceptuels. Mais il est aussi possible d'utiliser certaines fonctions de CoGITaNT à partir d'une application écrite en Java. En effet, La version 5.1 est fournie avec un ensemble de classes Java qui offrent un accès à certaines classes C++ de CoGITaNT (en utilisant JNI). L'interfacage n'est toutefois pas complet et n'offre pas toutes les fonctions disponibles à partir d'un programme C++, mais il est suffisant pour écrire une application offrant l'édition de graphes. Les opérations évoluées peuvent alors être déportées sur un serveur auquel l'application de saisie est liée.
    Plus de détails dans la section "dessin" de la documentation.

Les nouveautés de la version 5.1 reprennent donc des fonctions qui étaient présentes dans le serveur et l'interface. Toutefois, alors que le serveur et l'interface étaient des applications indépendantes, qu'il était difficile de personnaliser et adapter à des usages bien précis, les mêmes fonctions dans la version 5.1 ont été conçues pour être facilement réutilisables. Ainsi, il est aisé d'ajouter de nouvelles opérations à un serveur, d'étendre le protocole d'échange, ou d'incorporer un composant d'affichage ou d'édition de graphes dans une application. Il est possible aussi de changer facilement certains comportements, afin de fournir par exemple un outil d'édition doté de fonctions particulières. Il est à noter que le serveur et l'interface fonctionnent avec la version 5.1, mais n'utilisent pas les nouvelles possibilités de cette version.