• Sonuç bulunamadı

Le serveur de raisonnement SG développé pour ce projet spécialise la classe du serveur fournie par CoGITaNT, désactive les opérations standards de CoGITaNT et active cinq opérations OpeServerInitialisation, OpeServerSupport, OpeServerKnowledgeBase,

OpeServerQuery et OpeServerAdd chacune d’elles étant respectivement utilisée pour :

(1) initialiser le serveur au démarrage,

(2) sauvegarder en CoGXML le support et (3) la base dans un fichier sur le disque de la machine hébergeant le serveur,

(4) interroger la base d’assertions

Ces opérations sont définies dans 35 fichiers écrits en C++7

et leur déclenchement est assuré par une classe qui spécialise la classe Server. Il peut être pertinent de réserver une machine à l’usage exclusif du serveur car les opérations qu’il réalise exigent parfois des ressources importantes (en temps, en mémoire et en puissance de calcul). Cette classe interprète les directives SVECogitantCS pour déterminer l’opération adéquate à exécuter. Lorsqu’un document CoGXML encapsulé dans une directive SVECogitantCS et envoyé au serveur ne respecte pas les DTD associées aux deux langages le serveur retourne un message d’erreur identifiant la partie du document posant problème et la contrainte violée.

L’opération OpeServerInitialisation se déclenche à la réception d’un document CoGXML encapsulé dans la directive SVECogitantCS qinitialisation. Ce document contient le support, les règles et les contraintes de la base de connaissances du serveur. L’opération ne retourne rien si elle s’est déroulée avec succès.

L’opération OpeServerQuery consiste à rechercher les projections dans la base d’as- sertions du graphe fourni en argument en utilisant l’opération standard fournie par Co- GITaNT : OpeProjection. L’opération se déclenche à la réception du graphe H en CoGXML encapsulé dans une directive qquery. L’opération retourne l’ensemble des sous- graphes de la base G images de H par projection.

Les opérations OpeServerSupport et OpeServerKnowledgeBase sont respectivement déclenchées à la reception des directives qsupport et qknowledgebase. Elles permettent de sauvegarder, dans un fichier sur le disque de la machine hébergeant le serveur, le support et la base (incluant les règles, les contraintes et le graphe d’assertions) pour éviter une éventuelle perte de données.

Enfin, l’opération OpeServerAdd consiste à enchaîner les étapes de contrôle, d’intégration, d’enrichissement et de validation (décrites au chapitre précédent) en intercalant entre chacune d’elles une étape de vérification des contraintes négatives. Ces étapes sont res- pectivement implémentées dans les classes OpeControl, OpeTargetedNormalisation,

OpeTargetedRulesClosureet OpeTargetedPositiveConstraintValidation ; la vérifi-

cation des contraintes négatives étant réalisée par OpeTargetedNegativeConstraint- Verification.

L’enrichissement, la validation et la vérification des contraintes négatives sont réalisés de manière incrémentale. Les traitements au cours de ces étapes, utilisent à la place de la projection standard de CoGITaNT l’opération OpeTargetedProjection qui concentre la projection sur un ensemble de sommets dans le graphe cible, en l’occurrence les som- mets ajoutés lors de l’intégration ou inférés au cours de l’enrichissement. La projection ciblée est décrite dans la section suivante, l’implémentation de l’étape d’enrichissement dans celle qui suit, et l’implémentation de l’étape de validation et de vérification des contraintes négatives dans la dernière section.

7

6.4.1 Projection ciblée

Soient deux SG G = (CG, RG, EG, lG), H = (CH, RH, EH, lH) et le sous-ensemble CHT

de l’ensemble des sommets concepts CH de H, la classe OpeTargetedProjection définit

une opération de projection d’un graphe source G dans le graphe cible H telle qu’au

moins un sommet de CT

H soit ciblé par la projection. OpeTargetedProjection retourne

un ensemble de projections. Le calcul de cet ensemble est réalisé en deux étapes qui

consistent respectivement (1) à créer un ensemble Qpartielde projections partielles et (2)

à compléter chacune de ces projections jusqu’à ce qu’elle soit totale, si possible.

Au cours de la première étape, on ajoute dans Qpartielune projection partielle π avec

π(x) = y ssi y est plus spécialisé8

que x, pour chaque paire de sommets concepts x et y

appartenant respectivement au graphe source et à l’ensemble ciblé CT

H. Pour vérifier que

le sommet y est plus spécialisé que le sommet x, on utilise l’opération OpeGraphObject- Compatibility.

Ensuite, on réalise la seconde étape : pour chaque projection partielle π de Qpartiel, on

fournit π, le graphe G et le graphe H à l’opération standard OpeProjection de projec- tion en utilisant les méthodes setParamProj, setParamG et setParamH. OpeProjection

calcule toutes les projections π0 totales de G dans H que l’ont peut obtenir en com-

plétant la projection π. Pour chaque projection partielle π, OpeProjection retourne un objet de classe ResultOpeProjection contenant l’ensemble des projections complétées à partir de π. Le contenu de cet ensemble est ajouté au résultat retourné par l’opéra-

tion OpeTargetedProjection lorsque toutes les projections partielles de Qpartielont été

parcourues.

6.4.2 Fermeture incrémentale d’un graphe par un ensemble de règles

La classe OpeTargetedRulesClosure permet de réaliser la fermeture incrémentale d’un graphe par un ensemble de règles R. L’opération consiste à enchaîner successive- ment autant d’étapes d’applications possibles à partir des sommets produits par l’étape précédente. Une étape d’application consiste à exécuter OpeApplyRule sur chaque règle

R de R selon chaque projection πH de son hypothèse H dans la base. Une application

de R selon πH n’a lieu que s’il n’existe aucune projection πC de la conclusion de R dans

la base qui n’envoie chaque sommet frontière sur son image par πH. La procédure de

fermeture se termine lorsque l’étape courante n’a produit aucun nouveau sommet.

L’opération OpeRuleApplications est configurée pour utiliser l’opération OpeTargeted-

Projectionà la place de l’opération standard OpeProjection. Ce paramétrage permet

de calculer la fermeture incrémentale à partir d’un sous-ensemble donné des sommets de la base d’assertions G ; comme spécifié pour la procédure d’enrichissement au chapitre précédent (section Le service de raisonnement SG sous-section 5.1.3).

8

yest plus spécialisé que x ssi y ∈ CT

6.4.3 Vérification incrémentale des contraintes

La vérification incrémentale de G par rapport à une contrainte C et un sous-ensemble E des sommets de G s’effectue à partir des opérations OpeTargetedPositiveConstraint-

Validation et OpeTargetedNegativeConstraintVerification selon la nature de la

contrainte. OpeTargetedProjection est utilisée par ces deux opérations pour rechercher les projections qui ciblent les sommets spécifiés dans l’ensemble E.

Lorsque la contrainte est positive, la première opération retourne dans un objet Ope- ResultProjection, les projections de la partie condition de C sur au moins un sommet de l’ensemble E qui ne peuvent être étendues à la contrainte entière.

Lorsque la contrainte est négative, la seconde opération retourne dans le résultat

OpeResultProjectionles projections dans le graphe G de la contrainte négative C sur

au moins un sommet de E.

Benzer Belgeler