• Aucun résultat trouvé

3 Comment définir formellement une ontologie?

3.2 Formalisme OWL

Le modèle OWL est actuellement reconnu par le W3C8 comme étant le standard pour

re-présenter des ontologies pour le Web Sémantique. Il permet une description très riche des on-tologies et facilite la publication et le partage des onon-tologies sur le Web Sémantique. OWL est inspiré de DAML (projet américain) et d’OIL (projet Européen). Pour permettre la manipulation des ontologies par les humains et les machines, OWL étend le modèle RDFS par des opérateurs permettant la définition d’ontologies plus expressives et offrant des capacités de raisonnement supérieures. OWL étant construit sur RDF et RDFS, il utilise la syntaxe RDF/XML. Il permet de raisonner sur ces connaissances en s’appuyant sur la Logique de Description (axiomatique formelle).

OWL se décline en trois versions : OWL-Lite, OWL-DL et OWL-Full, qui sont des sous-modèles présentant un compromis entre leur pouvoir expressif et leur décidabilité de raisonne-ment. Le langage OWL-Lite décrit une hiérarchie de classifications et offre des mécanismes de contraintes simples. Par exemple, OWL-Lite gère des contraintes de cardinalité uniquement de valeurs 0 ou 1. Le langage OWL-DL offre une expressivité supérieure à OWL-Lite sans remettre en cause la complétude de calcul (inférences) et la décidabilité des systèmes de raisonnement. Il est fondé sur la logique descriptive. Le langage OWL-DL intègre toutes les structures de lan-gage d’OWL avec des restrictions comme la séparation des types (une classe ne peut pas être en même temps un individu et une propriété, une propriété doit être associée à un individu ou une classe). Le langage OWL-Full est destiné aux utilisateurs souhaitant une expressivité supérieure à OWL-DL et une liberté syntaxique de RDF sans une garantie de décidabilité du raisonnement (inférence). Par exemple, dans OWL-Full, on peut simultanément traiter une classe comme une collection d’individus et comme un individu à part. Il existe une hiérarchie de dépendance entre ces trois sous langages : toute ontologie Lite valide est également une ontologie

OWL-DL valide, et toute ontologie OWL-OWL-DL valide est également une ontologie OWL-Full valide. Le

degré d’expressivité est croissant de OWL Lite à OWL-Full.

Nous présentons dans ce qui suit les constructeurs de OWL DL. Certaines limites de OWL Lite sont aussi évoquées.

3.2.1 Constructeurs de classe OWL

Il y a plusieurs manières de déclarer une classe OWL :

– à l’aide du constructeur owl:Class (classes nommées). Le concept d’héritage se traduit à l’aide de la propriété subClassOf. Il existe dans toute ontologie OWL une superclasse, nommée Thing, dont toutes les autres classes sont des sous-classes. Il existe également une classe nommée noThing, qui est sous-classe de toutes les classes OWL. Cette classe ne peut pas avoir d’instance ;

– par énumération des instances de la classe à l’aide du constructeur "owl:oneOf " ;

– par restriction des propriétés (contrainte de valeur et cardinalité) : une contrainte de valeur porte sur la valeur de propriété d’une instance tandis qu’une contrainte de cardinalité porte sur le nombre de valeurs que peut prendre une propriété. Les restrictions sur des valeurs sont faites par les axiomes :

– allValuesFrom qui exprime une restriction universelle, c’est-à-dire toutes les instances qui, pour une propriété donnée, prennent leur valeur dans une classe donnée ;

– someValuesFrom, qui exprime une restriction existentielle, c’est-à-dire toutes les ins-tances qui, pour une propriété donnée, ont au moins une valeur dans une classe donnée ; – hasValue qui permet de définir des classes selon l’existence de valeurs de propriétés particulières. Elle impose une valeur spécifique à toutes les instances de la classe en question.

Les cardinalités sont définies à l’aide des axiomes owl:minCardinality, owl:maxCardinality et owl:Cardinality qui expriment les nombres d’éléments dans une relation ou son inter-valle ;

– par intersection de deux ou plusieurs classes avec owl:intersectionOf ; – par union de deux ou plusieurs classes grâce au constructeur owl:unionOf ;

– par complémentarité d’une autre classe c’est-à-dire une classe qui contient toutes les ins-tances dans le domaine de discours n’appartenant pas à une autre classe. Cela se fait grâce au constructeur owl:complementOf.

3.2.2 Construction des propriétés OWL

On distingue deux types de propriété OWL : Les propriétés d’objets (owl:ObjectProperty), qui sont des relations entre les instances de deux classes et les propriétés de types de données (owl:DatatypeProperty), qui sont des relations entre des instances de classes, des littéraux RDF [36] et des types de donnée de schéma XML [37].

OWL offre des constructeurs pour définir et restreindre des propriétés (cf. définition des classes par restriction des propriétés). Nous pouvons définir un domaine et un co-domaine pour une propriété. Il est possible d’ajouter des caractéristiques de propriété qui fournissent un mé-canisme puissant pour améliorer le raisonnement lié aux propriétés. Parmi les caractéristiques principales des propriétés, nous trouvons la transitivité, la symétrie, la fonctionnalité et l’inverse [38]. Une propriété peut être aussi définie comme une spécialisation (sous-propriété) d’une autre propriété (rdfs:subProperty).

3.2.3 Types de données

OWL utilise pour le type de données d’une propriété owl:DatatypeProperty, le type RDF-Schema rdfs:Literal ou un des types simples définis pour les XML Schéma. Pour le type de données d’une propriété owl:ObjectProperty, on utilise une classe en se servant du constructeur

rdfs:range pour la spécifier.

3.2.4 Instance d’une classe

On déclare l’appartenance d’un individu (instance) à une classe de la manière suivante :

hNomClasse rdf:ID="individuID"i où individuID est l’identifiant de l’instance et NomClasse

est le nom de la classe à laquelle on associe individuID. Exemple : hUniversité rdf:ID="UP"i

déclare UP comme instance de la classe Université. La propriété rdf:type est aussi utilisée pour lier un individu à une classe dont il est membre.

Les instance sont identifiées par des URI et peuvent appartenir à plusieurs classes non liées par la relation de subsomption.

3.2.5 Constructeur d’axiomes

OWL offre la possibilité de préciser les cardinalités d’une propriété à l’aide des axiomes

owl:minCardinality, owl:cardinality et owl:maxCardinality. L’axiome owl:equivalentClass

in-dique que deux classes sont équivalentes, c’est-à-dire qu’elles possèdent les mêmes instances. L’axiome owl:disjointWith indique que deux classes données ne partagent aucune instance. L’axiome owl:equivalentProperty permet d’indiquer que deux propriétés sont équivalentes, c’est-à-dire qu’elles présentent les mêmes valeurs pour les mêmes instances. En OWL, l’hy-pothèse d’unicité des noms qui considère que les identifiants permettent d’identifier de manière unique les éléments dans une ontologie, n’est pas garantie. En effet, deux instances de différents identifiants peuvent être les mêmes. Pour gérer cela, OWL propose les axiomes owl:sameAs,

owl:differentFrom et owl:AllDifferent permettant d’indiquer l’égalité ou l’inégalité des

ins-tances.

Avec ces constructeurs, les raisonnements associés à OWL-DL restent décidables. Le pro-blème d’inférence en OWL DL est classé comme étant aussi difficile que ce propro-blème dans les langages des logiques de description de la famille SHOIN(D). Tobies [39] a montré que ces langages sont de complexité au pire des cas de temps exponentiel non déterministe (NExp-Time). Dans la pratique, OWL-Lite est souvent utilisé pour obtenir de bonnes performances [40]. Celui-ci n’autorise pas la création de classes par les opérations booléennes owl:unionOf et

owl:complementOf, par énumération de ses instances et par restriction de valeurs owl:hasValue.

Les axiomes de cardinalité owl:minCardinality, owl:cardinality et owl:maxCardinality sont li-mités à prendre la valeur 0 ou 1 en OWL-Lite. Dans la section suivante, nous présentons le formalisme PLIB qui a été conçu pour définir des ontologies canoniques pour le domaine de l’ingénierie.