• Nenhum resultado encontrado

3 DELIMITAÇÃO DA ÁREA E A METODOLOGIA

3.2 Metodologia

3.2.5 Organização digital do dicionário

3.2.5.1 Lexique pro

Les classes implémentant une opération doivent étendre la classe Operation. Un vingtaine d’opérations sont ainsi programmées dans l’API CoGITaNT. Les données de chaque opération sont fournies en utilisant les méthodes dont le nom est composé du préfixe setParam-. Le déclenchement est réalisé à partir de la méthode run() et le résultat est obtenu par la méthode d’accès dont le nom présente le préfixe getResult- .

Opération de projection

La recherche de projections d’un graphe dans un autre se fait à l’aide de la méthode projections(), à qui on doit fournir le graphe source et le graphe cible de la projection. Le troisième paramètre de cette méthode, un ResultOpeProjection est modifié par l’exécution, et contient après l’appel le résultat de l’opération.

Comme toutes les autres méthodes de Environment qui donnent accès à des opéra- tions, projections() n’est qu’un raccourci qui utilise des sous-classes de Operation. En réalité, c’est la classe OpeProjection qui réalise le calcul des projections en s’ap- puyant sur un algorithme de backtrack. Ce dernier calcule dans un premier temps les listes d’images possibles de chaque sommet du graphe source dans les sommets du graphe cible, puis filtre ces listes.

La suite de cette section présente le fonctionnement standard de l’opération de pro- jection. Cette opération est modulable, c’est à dire qu’elle fait appel à d’autres opérations spécialisées dans une tâche qu’il suffit de redéfinir et de remplacer pour changer le com- portement de la projection. Le second paragraphe énumère les opérations spécialisées qu’utilise l’algorithme de projection.

Projection standard

En plus de contenir les projections trouvées, l’objet ResultOpeProjection permet de configurer la recherche. En effet, selon les besoins, on peut être intéressé par différentes recherches :

– Si c’est uniquement l’existence d’une projection entre les deux graphes qui inter- esse l’utilisateur, il est inutile que l’opération mémorise au fur et à mesure de la recherche les projections trouvées. Dans ce cas, il est conseillé d’appeler les mé- thodes memoProjections() et maxSize() respectivement avec les paramètres false et l’entier 1. Elles permettent de limiter la recherche à une seule projection (la première trouvée) sans la mémoriser.

– Lorsque l’utilisateur cherche à savoir le nombre de projections, on conserve la configuration précédente à ceci près que maxSize() n’est pas appelée. La méthode

size()permet de connaître le nombre de projections trouvées.

– Lors d’un usage standard, l’utilisateur cherche l’ensemble des projections d’un graphe dans un autre, et souhaite manipuler la projection elle-même, c’est à dire, l’ensemble des couples constitués du sommet projeté et de son image. Dans ce cas, aucune méthode particulière de ResultOpeProjection ne doit être appelée, et après l’appel à projections(), la méthode projections() retourne l’ensemble des projections trouvées.

L’opération définie en OpeProjection n’est en réalité qu’un algorithme orchestrant de manière générale la recherche des projections en faisant appel à d’autres opérations, spécialisées dans une tâche. Cette architecture modulaire permet à l’opération d’être facilement modifiée. Il est possible d’une part d’écrire une sous-classe de OpeProjection s’il est nécessaire de redéfinir l’algorithme de backtrack, ou d’autre part d’étendre une des classes définissant les opérations spécialisées s’il est suffisant de ne modifier qu’une partie précise du comportement de la recherche pour trouver les projections souhaitées. On dénombre sept opérations de ce type présentées dans la suite :

– OpeProjPrecalcImages permet de déterminer le moment auquel la liste d’images possibles d’un sommet projeté doit être calculé (avant ou pendant l’exécution du backtrack).

– Si le calcul doit avoir lieu avant le lancement du backtrack, l’opération OpeProj-

LIPInit s’en charge.

– Le calcul d’une liste d’images possibles dépend de la "compatibilité" de som- mets pour savoir si un sommet d’une étiquette donnée peut être projeté sur un autre sommet d’une étiquette donnée. Ce calcul est réalisé par OpeGraphObject- Compatibility.

– OpeProjBacktrackChoice est utilisé pour choisir au cours du mécanisme de back- track le prochain sommet dont la liste d’images possibles doit être filtrée.

– OpeProjLIPUpdate est l’opération définie pour filtrer une liste d’images possibles. – OpeProjAcceptableCouple est définie pour accepter ou refuser un couple dans la

projection.

– OpeProjAcceptableLIPs détermine si les listes d’images possibles à un moment donné de la recherche respectent certains critères.

Opération de vérification des contraintes

La satisfaction d’une contrainte par un graphe peut être vérifiée par un appel à la méthode constraintSatisfaction() prenant en paramètres le graphe à vérifier et la contrainte et retournant true ou false selon que le graphe satisfait ou pas la contrainte. Si on désire connaître les projections identifiant un sous-graphe du graphe à vérifier et violant la contrainte positive ou négative, il faut fournir à la méthode constraint-

Satisfaction() un troisième paramètre, optionnel, qui est un pointeur sur un Result-

OpeProjection.

Opérations réservées aux règles

Trois opérations sont accessibles à travers des sous-classes de Operation :

– OpeRuleApplications détermine les applications possibles d’une règle sur un graphe et retourne les projections de l’hypothèse de la règle sur le graphe ;

– OpeRuleApply réalise l’application d’une règle sur un graphe selon une projection. – OpeRulesClosure se charge de la saturation ou fermeture d’un graphe par rapport à un ensemble de règles. Cette opération consiste à appliquer les règles de l’ensemble considéré, jusqu’à ce que toute application supplémentaire pour toute règle de cet ensemble ne fasse qu’ajouter de la redondance.