• Aucun résultat trouvé

Langage de Manipulation des Ontologies (LMO)

Chapitre 2 Exigences pour un langage d’exploitation de BDBO 51

2.4 Langage de Manipulation des Ontologies (LMO)

Le LMO doit permettre de créer, modifier et supprimer les éléments d’une ontologie tels que ses classes et ses propriétés. Ayant déjà défini une syntaxe permettant de créer les classes et les proprié-tés d’une ontologie (LDD pour les données à base ontologique), ceci doit être pris en compte lors de

l’analyse des besoins restants à couvrir. Notons que la syntaxe proposée par le LDD est pratique car elle permet de créer dans une seule et même instruction une classe et les propriétés dont elle est le domaine de définition. Utiliser un LMO pour créer ces classes et ces propriétés nécessiterait plusieurs instructions INSERT. Notons que cela reviendrait, dans un SGBD usuel, à créer une table en réalisant des insertions dans les tables de la métabase. Par contre, les instructions du LDD ne sont pas aussi puissantes que celles d’un LMO. En effet, ce dernier devrait permettre de créer, modifier et supprimer un ensemble de classes en se basant sur le résultat d’une requête. Ceci peut être utile, par exemple, pour importer un en-semble de classes d’une ontologie dans une autre ontologie. En conséquence, il apparaît souhaitable que ces deux langages existent et permettent tous les deux de manipuler les éléments d’une ontologie. Des équivalences syntaxiques sont définies de façon systématique entre les insertions (INSERT) du niveau manipulation d’ontologies et la création de classe (CREATE) de niveau définition de données. Les deux sont licites, la seconde écriture s’avérant en général plus synthétique.

2.4.1 Ajout d’éléments dans une ontologie

Le LMO permet de créer des éléments dans une ontologie selon la syntaxe suivante :

hinsert statementi ::= INSERT INTO hentity idi hinsert description and sourcei hinsert description and sourcei ::= hfrom subqueryi | hfrom constructori

hfrom subqueryi ::= [ ( hattribute id listi ) ] hquery expressioni hfrom constructori ::= [ ( hattribute id listi ) ] hvalues clausei hvalues clausei ::= VALUES ( hvalues expression listi )

Cette opération permet d’ajouter des instances à l’entité hentity idi. Ces instances peuvent être dé-finies en précisant l’ensemble de leurs valeurs d’attributs (hfrom constructori). Elles peuvent également être le résultat d’une requête OntoQL (hfrom subqueryi). Les entités et attributs utilisés sont soit ceux du modèle d’ontologies noyau (récapitulés dans le tableau 4.1 pour les principales entités), soit ceux introduits avec le langage de définition de données qui ne sont pas des attributs dérivés.

Entités Attributs applicables sur cette entité

#Ontology #oid, #namespace

#Concept #oid, #code, #name, #definition, #definedBy

#Class #oid, #code, #name, #definition, #directSuperclasses, #definedBy #Property #oid, #code, #name, #definition, #scope, #range, #definedBy

#Datatype #oid

#RefType #oid, #onClass

#PrimitiveType #oid

#CollectionType #oid, #ofDatatype, #maxCardinality

T. 4.1 – Attributs applicables sur les principales entités du modèle noyau Exemple. Ajouter la propriété title à la classe Post.

INSERT INTO #Property (#name, #scope, #range, #definedBy) VALUES(’title’, ’Post’, ’String’, ’http://rdfs.org/sioc/ns’)

Explication. L’insertion de cette propriété est réalisée en indiquant la valeur de chacun de ces attri-buts obligatoires, c’est-à-dire son nom (#name), son domaine (#scope), son codomaine (#range) et l’ontologie dans laquelle elle est créée (#definedBy). Pour donner une valeur aux attributs de type référence, cette instruction utilise l’identifiant externe des éléments référencés plutôt que leur identi-fiant interne, généré par le SGBD (cf. section 2.2.2). Ainsi, cette instruction utilise l’identiidenti-fiant Post et l’espace de noms http://rdfs.org/sioc/ns pour référencer la classe et l’ontologie correspon-dantes. Le type de données est indiqué par son nom. L’interpréteur de cette instruction est chargé de rechercher si une instance de ce type existe et, si ça n’est pas le cas de la créer.

Cet exemple montre que les instructions du LMO pour créer des éléments d’une ontologie sont moins synthétiques que leur équivalent dans le LDD. En effet, si on devait utiliser ce langage pour créer la classe Postde l’ontologie SIOC, il serait nécessaire d’utiliser cinq instructions du LMO : une pour créer cette classe et quatre autres pour créer ses propriétés. Or, dans l’exemple du chapitre 3, section 3.3.1.1, nous avons vu que seule une instruction du LDD est nécessaire pour réaliser le même traitement.

2.4.2 Modification des éléments d’une ontologie

Les éléments créés dans une ontologie peuvent être modifiés en utilisant la syntaxe suivante : hupdate statementi ::= UPDATE hentity id polymorphi SET hset clause listi

[ WHERE hsearch conditioni ] hentity id polymorphi ::= hentity idi | ONLY (hentity idi) hset clausei ::= hattribute idi = hvalue expressioni

Cette syntaxe permet de mettre à jour les instances directes (ONLY) ou également indirectes (sans le mot clé ONLY) d’une entité en leur attribuant de nouvelles valeurs d’attributs.

Exemple. Préfixer le nom des restrictions OWL par R_ et incrémenter leur numéro de version. UPDATE #Restriction SET #name = ’R_’ || #name, #version = #version+1

Explication. Le mot clé ONLY n’étant pas utilisé, toutes les restrictions OWL (AllValuesFrom, Some-ValuesFrom, etc.) seront mises à jour. Le préfixe R_ est ajouté à leur nom en utilisant l’opérateur de concaténation (||). Cette instruction permet en même temps d’incrémenter le numéro de version de ces restrictions (attribut #version).

L’exemple précédent montre qu’il peut être plus intéressant d’utiliser le LMO plutôt que le LDD lorsque plusieurs éléments d’une ontologie doivent être modifiés en même temps.

2.4.3 Suppression des éléments d’une ontologie

Les éléments des ontologies peuvent être supprimés en utilisant la syntaxe suivante : hdelete statementi ::= DELETE FROM hentity id polymorphi WHERE hsearch conditioni

Cette instruction permet de supprimer les instances directes ou également indirectes d’une entité qui respectent un prédicat donné (hsearch conditioni).

Exemple. Supprimer les classes obsolètes.

DELETE FROM #Class WHERE #deprecated = true

Explication. Seules les classes obsolètes sont supprimées dans cette instruction en utilisant le fait qu’elles sont caractérisées par la valeur true pour l’attribut #deprecated.