• Aucun résultat trouvé

Cette section décrit la mise en œuvre des différents composants nécessaires pour la représen-tation dans la partie méta-schéma de notre architecture OntoDB du modèle d’ontologie et du méta-modèle du modèle d’ontologie. Notre prototype se basant sur le modèle d’ontologie PLIB définit dans le langage EXPRESS, il s’agira pour nous de le représenter dans la base de données

2. Représentation du méta-modèle d’ontologie Algorithme 17 Algorithme d’extraction sémantique des concepts de la base de données.

FUNCTION export(O : OBJECT ;

T rait1 :SET OF (entité × attribut) T rait2 :SET OF (entité × attribut)

T rait3 :SET OF (entité × attribut × entité × attribut)

) → SET OF OBJECT DEBUT enti :entité ;

result := {} ;

//On récupère l’entité de l’objet O à partir méta-modèle. enti :=get_type_Of(O) ;

result := result ∪ {O} ;

// On parcourt tous les attributs de l’entité de l’objet. ∀ atti∈ enti.ses_attributs ;

// Si le type de l’attribut est un type entité (association) ou un type agrégat IF atti.son_type = entité OR atti.son_type = aggregate_type THEN

// Cas TRAITEMENT 1 :

// Si on ne veut pas extraire les objets référencés par l’attribut atti IF (enti,atti) ∈ T rait1 THEN

result := result ∪ get_value_attribute(O, enti, atti) ; O.attti := NULL ; DoNothing() ;

END IF

// Cas TRAITEMENT 2 :

// Si on veut extraire la grappe de l’objet référencé par l’attribut atti IF (enti, atti) ∈ T rait2 THEN

//On ajoute à la variable result sur les objets référencés par l’objet O au moyen de l’attribut att.

result := result ∪ get_value_attribute(O, enti, atti) ;

// Appel recursif de la fonction export sur les objets référencés par O. ∀ Oi∈get_value_attribute(O,enti,atti) ;

result := result ∪ export(Oi) ; END IF

// Cas TRAITEMENT 3 :

// Si on veut extraire la grappe de ou des objets référencés par l’attribut atti ainsi que les objets qui les référencent par un attribut att3d’une entité ent3

∀(ent0, att0, ent3, att3) ∈ T rait3; IF enti = ent0AND atti=att0THEN

Oatt=get_value_attribute(O, enti, atti) ; ∀ Oi∈ used_in(Oatt, ent3, att3) ;

result := result ∪ export(Oi, T rait1, T rait2, T rait3) ; result := result ∪ get_value_attribute(O, enti, atti) ;

// Appel recursif de la fonction export sur les objets référencés par O. ∀ Oi∈get_value_attribute(O,enti,atti) ;

result := result ∪ export(Oi, T rait1, T rait2, T rait3) ;

//On ajoute à la variable result les objets référencés par l’objet O au moyen de l’attribut atti.

result := result ∪ get_value_attribute(O, enti, atti) ; END IF

END IF

RETURN result ; END FUNCTION ;

comme instance d’un méta-modèle EXPRESS définit dans le langage EXPRESS. Comme pour la représentation de l’ontologie dans la base de données, la mise en œuvre de la partie méta-schéma, nécessite la définition de composants permettant :

– la définition de la structure des tables dans lesquelles les modèles EXPRESS seront stockés ;

– la lecture des modèles d’ontologies pour leur insertion dans la base de données ; – la lecture d’un méta-modèle EXPRESS pour son insertion dans la base de données.

2.1 Définition de la structure des tables

Le premier composant consiste à définir la structure de tables dans laquelle seront représentés le ou les modèles d’ontologies et le méta-modèle des modèles d’ontologies utilisés. Les modèles d’ontologies auxquels nous nous intéressons s’expriment tous sous forme d’instances d’un méta-modèle. Représenter les modèles d’ontologies consiste donc à représenter un méta-modèle réflexif de l’ensemble des modèles d’ontologies directement dans la base de données sous forme d’une structure de tables et ensuite à peupler cette structure de tables avec les modèles d’ontologie et le méta-modèle lui-même.

Dans le cadre de notre implémentation, le modèle d’ontologie PLIB que nous utilisons étant défini en EXPRESS, il existe dans la littérature des méta-modèles du langage EXPRESS ex-primés en eux-mêmes dans le langage EXPRESS. Nous avons en particulier les méta-modèles EXPRESS des environnements d’IDM ECCO [147] et SDAI [148]. Ceux-ci peuvent être utilisés comme modèle source pour la définition de la structure des tables de la partie méta-schéma de notre architecture. Nous avons choisi d’utiliser le méta-modèle défini dans l’environnement ECCO (légèrement modifié) car il est beaucoup plus compacte et efficace que le méta-modèle SDAI (Standard Data Access Interface [131]). En effet, le méta-modèle de l’environnement ECCO comporte 0 type SELECT, 20 types d’entités alors que celui de SDAI comporte 10 type SELECT, 84 types d’entités. Ce méta-modèle n’étant pas disponible sous une forme EXPRESS éditable, nous en avons d’abord créée une forme éditable.

Le méta-modèle EXPRESS étant modélisé dans le langage EXPRESS sous une forme clas-sique, il peut alors être traduit en relationnel de la même façon que nous avons traduit le modèle EXPRESS du modèle d’ontologie PLIB en relationnel pour la représentation des ontologies (cf annexe C et section 1.2). Compte tenu du fait que le composant permettant la création de la structure de table de la partie ontologie est générique pour tout modèle EXPRESS, celui-ci peut être une fois de plus utilisé pour la définition de la structure des tables du méta-schéma (cf. figure 4.8). Le méta-modèle EXPRESS sera cette fois-ci fournit comme paramètre au programme du générateur qui générera les requêtes SQL pour la création de la structure des tables de la partie méta-schéma.

2. Représentation du méta-modèle d’ontologie

Environnement IDM ECCO

Instances méta-modèle

EXPRESS Générateur deschéma de SQL

génère traduit génère Méta-modèle EXPRESS SQL/DDL CREATE TABLE… CREATE VIEW… CREATE TRIGGER… CREATE FUNCTION… Moteur SQL SGBD exécute Pa ram ètr e Règles 1-... 2-... ... n- ...utilise

Fig. 4.8 – Génération de la structure des tables (schéma DDL) de la partie méta-schéma

2.2 Peuplement de la partie méta-schéma

Ce composant doit permettre à partir d’un modèle EXPRESS, de le représenter par un ensemble d’instances dans la partie méta-schéma. Ce composant permettra donc de lire suc-cessivement le modèle EXPRESS du modèle d’ontologie PLIB et le méta-modèle du langage EXPRESS en EXPRESS (réflexivité) pour les insérer dans la base de données. La réalisation de cette tâche peut être faite en réutilisant le composant d’importation d’ontologies dans la base de données définit dans la section 1.3 pour la lecture des ontologies. Ce composant a, en effet, été défini de sorte à être générique, c’est-à-dire indépendant de tout modèle EXPRESS. Il génère alors des requêtes d’insertion dans la base de données pour toute population d’instances du mo-dèle EXPRESS en paramètre.

L’utilisation de ce composant exige que nous lui fournissions d’une part, le méta-modèle d’EXPRESS et, d’autre part, un ensemble d’instances de ce méta-modèle représentant respecti-vement le modèle d’ontologie PLIB et le méta-modèle EXPRESS lui-même. Pour pouvoir utiliser ce composant, il nous faut donc être capable d’exprimer ces deux modèles sous-formes d’instances du méta-modèle EXPRESS qui a permis de définir la structure des tables. Cette opération est possible grâce à l’environnement d’IDM EXPRESS qui offre la possibilité de compiler (cf. section 4.1) tout modèle EXPRESS et de l’exprimer sous forme d’instances du méta-modèle. Ces ins-tances du méta-modèle EXPRESS générées par l’environnement d’IDM peuvent alors être four-nies en paramètre au programme d’importation d’instances. La figure 4.9, présente l’architecture du composant de peuplement de la partie méta-schéma se basant sur le programme d’importa-tion d’instances présenté à la figure pour générer la représentad’importa-tion du modèle d’ontologie et la représentation du méta-modèle EXPRESS dans lui-même.

Modèle PLIB ou méta- modèle EXPRESS Instances méta-modèle EXPRESS génère Pa ram ètr e Méta-Modèle

EXPRESS méta-modèleInstances EXPRESS génère Pa ram ètr e utilise Programme d’importation utilise ❷ ❸ SQL/DML INSERT INTO… INSERT INTO… UPDATE TABLE … SGBD exécute Règles 1-... 2-... n- ... génère ❹ ❺ traduit Environnement IDM ECCO Moteur SQL

Fig. 4.9 – Peuplement de la partie méta-schéma de l’architecture OntoDB par le modèle d’on-tologie et le méta-modèle.

3 Représentation des données à base ontologique dans la partie