Les ontologies et la représentation des connaissances

Julien Plu

Cet article vous servira à savoir comment fonctionne et comment concevoir une ontologie et tout ce qui se cache derrière au travers de ce que l'on appelle la représentation des connaissances. Commentez ici cet article Commentez

- Titre : Les ontologies et la représentation des connaissances

- Auteur : Julien Plu

- Parution : 29 avril 2011

- Mise à jour : 6 janvier 2016

- Public visé :

- Licence : Copyright ® 2011-2016 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Classes et propriétés

- III. Système et programmation à base de connaissances

- IV. Différents types de raisonnement

- IV-A. Déductif

- IV-B. Inductif

- IV-C. Abductif

- V. Quel est le rôle de la logique en représentation des connaissances ?

- VI. Monde ouvert et monde clos

- VII. Différences entre base de données et base de connaissances

- VIII. Les ontologies dans le Web sémantique

- IX. Comment concevoir une ontologie ?

- IX-A. Étape 1 : Déterminer le domaine et la portée de l'ontologie

- IX-B. Réutiliser des ontologies déjà existantes

- IX-C. Énumérer les termes importants de l'ontologie

- IX-D. Définir les classes et la hiérarchie des classes

- IX-E. Définir les propriétés de l'ontologie

- X. Remerciements

I - Introduction

Dans mon article précédent, que vous pouvez voir ici, j'avais très vite introduit la notion d'ontologie, mais pas assez pour savoir réellement ce que cela peut être. Nous allons donc ici voir beaucoup plus en détail ce que peut être une ontologie avec un domaine que l'on nomme la représentation des connaissances. Je vous conseille donc avant de lire cet article de lire le précédent.

La représentation des connaissances est un système définissant une série de classes et une série de propriétés qui relient les classes. On peut aussi voir ça comme une algèbre : on a des éléments entre lesquels on définit des opérations. Petit rappel supplémentaire dans le domaine du Web sémantique, un concept correspond à une classe et une relation correspond à une propriété.

II - Classes et propriétés

Dans mon article précédent, je m'étais arrêté sur le fait qu'il était possible de faire de la recherche de données basée sur des connaissances.

Admettons que nous ayons les assertions suivantes :

- A1 : un homme fait un match de tennis contre son frère ;

- A2 : une femme fait un match de tennis contre la fille de son frère.

Avec ces deux assertions, nous allons essayer de répondre à quelques requêtes :

- requête 1 : « un homme et un homme » ;

- requête 2 : « un homme en relation avec une femme » ;

- requête 3 : « une fille en relation avec un adulte » ;

- requête 4 : « une personne fait un match de tennis avec une autre » ;

- la requête 1 renvoie : A1 ;

- la requête 2 renvoie : rien ;

- la requête 3 renvoie : peut-être A2, mais pour afficher cela nous aurions besoin de plus de connaissances du domaine que l'on a introduit ;

- la requête 4 renvoie : A1 et A2.

Vous avez pu voir que nous avons la possibilité de raisonner en fonction des réponses.

Après ce petit exemple de rappel, nous pouvons revenir dans le vif du sujet. Sachant que ce tutoriel est orienté Web sémantique il faut savoir que sur le Web sémantique, toutes les données ne sont pas contenues dans une base de données relationnelle, mais dans une base de connaissances, mais voyons ce qui compose ces bases de connaissances :

- un ensemble de classes ;

- un ensemble de propriétés ;

- ces ensembles sont en général ordonnés (ou préordonnés) par « spécialisation ». C'est-à-dire du terme le plus général au plus spécifique.

Tout ceci forme une ontologie. Par exemple, les classes et propriétés que j'ai pu donner dans mon article précédent pour la famille Simpson.

Dans le Web sémantique, on peut dire que l'ontologie représente toute la base de connaissances, car une ontologie = un domaine. Mais qu'est-ce que ça veut dire ?

III - Système et programmation à base de connaissances

En règle générale comment fonctionne un système à base de connaissances ?

Et bien c'est simple, nous avons d'un côté une base de connaissances, qui échange des informations avec un moteur d'inférences (une inférence est un mode de raisonnement consistant à aller d'une connaissance à une autre qui lui est liée) et qui lui-même échange des données avec une base de faits, pour le Web sémantique, le moteur d'inférence classique est SPARQL. Par exemple, toujours pour le Web sémantique, dans la recherche de données, pour réaliser un système à base de connaissances il nous faut :

- une ontologie correspondant au domaine des données ;

- des règles complétant l'ontologie ;

- des faits qui sont des annotations (ou des données sur des données ou plus couramment appelées métadonnées).

Voyons maintenant un autre exemple, un programme qui, étant donné un arbre hiérarchique, sait retrouver les chefs/subalternes d'une hiérarchie. En règle générale, on aurait développé ce programme en représentant l'arbre hiérarchique par un graphe et l'on aurait écrit des algorithmes de manipulation de ce graphe correspondant à chaque type de l'arbre hiérarchique (chefs, subalternes, etc.) Afin de les détecter.

Mais si l'on procède de cette manière, cela peut poser plusieurs problèmes, car il faudrait comprendre le fonctionnement de ces algorithmes et il aurait aussi fallu créer un algorithme pour chaque autre type dans l'arbre hiérarchique comme collègue ou bien associé ou même DRH. C'est pour cette raison qu'il est préférable de faire un programme qui prenne en compte les bases de connaissances. C'est-à-dire qu'à la place d'écrire des algorithmes pour trouver les différents types de l'arbre hiérarchique, on écrit des prédicats qui représentent le sens de ces types. Par exemple :

- si chef(x,y) alors subalterne(y,x) ;

- si PDG(x,y) alors chef(x,y) ;

- si PDG(x,y) ou patron(x,y) alors chef(x,y)

- si chef(x,y) et chef(y,z) alors chef(x,z).

De cette manière afin de comprendre ces résultats, il suffit d'assimiler la signification des prédicats. On peut ainsi rajouter autant de règles qu'on le souhaite à condition de garder la même base de connaissances.

Les moteurs d'inférences contrôlent la cohérence des données contenues dans la base de connaissances et peuvent ainsi répondre à des requêtes.

IV - Différents types de raisonnement

IV-A - Déductif

Dans le raisonnement déductif, on part d'une idée générale, d'un principe, d'une loi pour en tirer une conséquence particulière. Par exemple : tout homme mange, or je suis un homme donc je mange.

IV-B - Inductif

Dans le raisonnement inductif, on part d'un ou de plusieurs faits particuliers pour en tirer un principe, une loi, une idée générale. Ce raisonnement est l'inverse du raisonnement par déduction. Par exemple : tout homme, que je connais, mange, donc tout homme mange.

IV-C - Abductif

C'est un raisonnement déductif qui tire une conclusion de deux propositions (ou prémisses) présentées comme vraies. On appelle ça aussi un syllogisme. Par exemple : tout homme mange, or je mange, donc je suis un homme.

Il existe aussi le raisonnement par analogie, où l'on compare la thèse par une situation comparable et ceci pour défendre cette thèse. Par exemple : la raquette est au tennisman ce que le clavier est à l'informaticien.

V - Quel est le rôle de la logique en représentation des connaissances ?

Prenons le réseau sémantique suivant :

On peut voir que la vue de ce genre de schéma favorise beaucoup la compréhension de ce que l'on veut représenter, ici un réseau sémantique représentant le genre masculin et féminin d'un humain, mais malheureusement c'est insuffisant. La logique ici servira donc à décrire de manière formelle et structurée la connaissance d'un domaine. Nous aurons ainsi une ontologie bien plus précise avec cet outil de description et donc il n'y aura plus de confusion dans la compréhension d'une ontologie.

VI - Monde ouvert et monde clos

Admettons un certain nombre de cours dans une université quelconque. Chaque cours est identifié par un numéro.

- FMIN200 ;

- FMIN201 ;

- FMIN202 ;

- FMIN209.

Nous voulons savoir combien de cours il existe dans cette université :

- version base de données : 4 (count * from cours ---> 4) ;

- version logique de prédicat : c'est au moins 1, car rien ne dit que ces cours sont différents ou qu'il n'y en a pas d'autres ;

- version représentation des connaissances : au moins 4, car on suppose que ces cours sont différents, mais rien ne dit qu'il n'y en a pas d'autres.

Je pense que vous avez pu entrevoir ce que pouvait être un peu le monde clos et ouvert, mais l'on va préciser ces deux choses.

D'abord il faut savoir ce qu'est l'hypothèse du nom unique, qui signifie que chaque constante représentant une entité est différente, on a donc par exemple : FMIN200 != FMIN201. Ceci est admis dans tous les domaines (base de données et représentation des connaissances) sauf en logique.

Ensuite, il y a l'hypothèse du monde clos, c'est lorsqu'une chose est considérée comme fausse si pendant un certain temps il est impossible de montrer que cette chose est vraie. Mais il n'y a que pour les bases de données que ça marche, car dans une base de données on sait où se situe chaque donnée et donc il est possible de toujours la trouver dans un laps de temps défini.

Par opposition il y a donc ce que l'on appelle l'hypothèse du monde ouvert, qui est tout l'inverse du monde clos. Mais plus précisément dans ce monde ouvert, on ne peut pas dire qu'une chose n'existe pas tant qu'il n'a pas été explicitement statué qu'elle n'existait pas. Dit autrement, si une proposition n'a pas le statut « Vrai », on ne peut pas en déduire qu'elle est fausse. On dira que son cas n'a pas été statué, ou que l'on ne dispose pas des connaissances nécessaires pour statuer. De fait, c'est bien utile lorsqu'on réalise une ontologie, car cela permet de rendre compte du fait que certaines connaissances sont indisponibles sans pour autant rendre impossible la formalisation des connaissances d'un domaine. On sait que « l'on ne sait pas », et le modèle ne vous somme pas de prendre une décision. Le revers de la médaille, c'est que nous modélisons souvent en ayant une pensée binaire. Cela implique que nous raisonnons sur des choses en pensant qu'elles deviendront explicites « par défaut ».

VII - Différences entre base de données et base de connaissances

Il faut savoir une chose à ce moment-là, les bases de données sont pour le Web classique (de documents) que l'on connaît actuellement alors que les bases de connaissances sont pour le Web sémantique.

Une base de données est un lot de données stockées. Actuellement elles permettent d'organiser et de structurer ces données de manière à pouvoir plus facilement manipuler et stocker ces données et surtout en très grande quantité. On peut ainsi retrouver rapidement les données que l'on cherche. Mais malgré les progrès de l'informatique, quelques problématiques sont toujours d'actualités :

- les bases de données contiennent des règles en plus des tables, elles sont donc déductives ;

- le Web sémantique publie des bases de données converties en base de connaissances, mais ces connaissances sont incomplètes, car les bases ne contiennent pas toutes les connaissances existantes sur un domaine. Mais heureusement ce problème peut être très facilement contourné avec ce que l'on appelle l'interconnexion. Ce point sera vu dans un futur tutoriel.

VIII - Les ontologies dans le Web sémantique

Les ontologies font partie intégrante des normes du W3C pour le Web sémantique, dans lequel elles sont utilisées pour spécifier la norme des vocabulaires conceptuels et dans lequel l'échange de données entre différents systèmes a pour but de fournir :

- des services pour répondre aux requêtes ;

- de publier des bases de connaissances réutilisables ;

- d'offrir des services pour faciliter l'interopérabilité entre plusieurs systèmes hétérogènes et bases de données.

Le rôle clé des ontologies par rapport aux systèmes de base de données est de spécifier une représentation de modélisation des données à un niveau d'abstraction au-dessus des schémas d'une base de données spécifique (logique ou physique), afin que les données puissent être exportées, traduites, interrogées et unifiées pour tous les systèmes développés de manière indépendante.

IX - Comment concevoir une ontologie ?

Nous allons maintenant voir comment concevoir (et non développer, ce qui sera le thème d'un prochain article) une ontologie. L'ontologie que j'ai choisie est celle que l'on trouve sur le site du W3C sur la nourriture et le vin.

IX-A - Étape 1 : Déterminer le domaine et la portée de l'ontologie

Pour déterminer le domaine et la portée de l'ontologie, nous pouvons commencer par répondre à quelques questions et donc de schématiser une liste de questions auxquelles la base de connaissances fondée sur cette ontologie devrait être capable de répondre. Exemple de questions auxquelles notre base de connaissances doit pouvoir répondre :

- quel est le domaine que l'ontologie couvrira ? Représentation des mets et des vins ;

- dans quel but allons-nous utiliser cette ontologie ? Pour une application suggérant par exemple quel vin va le mieux avec tel type de nourriture ;

- à quels types de questions l'information dans l'ontologie doit-elle répondre ? Et qui va utiliser et maintenir l'ontologie ?

1. Si l'ontologie que nous concevons sera utilisée pour aider dans le traitement du langage naturel d'un programme dans les vins, il peut être important d'inclure des synonymes comme concepts dans l'ontologie.

2. Si l'ontologie sera utilisée pour aider les clients d'un restaurant à décider du vin qu'ils peuvent choisir, nous devons inclure le prix des vins.

3. Si elle est utilisée pour les acheteurs de vin pour leur cave à vin, le prix de gros et la disponibilité peuvent être nécessaires.

Et maintenant voici une liste de questions sur des compétences auxquelles doit pouvoir répondre notre ontologie :

- quelles caractéristiques je dois considérer quand je choisis un vin ?

- le Bordeaux est-il un vin blanc ou un vin rouge ?

- le Cabernet Sauvignon est-il un vin qui va bien avec les fruits de mer ?

- quel est le meilleur choix de vin pour les viandes grillées ?

- quels ont été les bons millésimes pour le Merlot ?

À en juger par cette liste de questions, l'ontologie doit inclure les renseignements sur les caractéristiques du vin et divers types de vins, millésimes, bonnes et mauvaises classifications des aliments qui comptent pour le choix d'un vin approprié puis recommander des combinaisons de vin et de nourriture. On peut bien entendu imaginer beaucoup plus de questions. Tout dépend de tout ce que vous voulez représenter avec votre ontologie.

IX-B - Réutiliser des ontologies déjà existantes

Réutiliser des ontologies existantes peut être une obligation si notre système a besoin d'interagir avec d'autres applications qui utilisent déjà des ontologies particulières dans le domaine que nous voulons représenter. Il est aussi inutile de refaire ce qui a déjà été fait, assurez-vous aussi avant de commencer qu'il n'existe pas une ontologie qui ressemble à celle que vous voulez faire, quitte à la modifier en l'étendant avec d'autres classes et propriétés.

IX-C - Énumérer les termes importants de l'ontologie

Il faut aussi faire une liste de tous les termes existants, puisqu'il serait bien de pouvoir faire des déclarations au sujet d'un vin afin d'expliquer toutes les facettes techniques d'un vin à une personne, sans se soucier du chevauchement entre les classes que les termes représentent, les relations entre les termes, ou les propriétés que les classes peuvent avoir.

Par exemple : raisin, cave, emplacement, couleur du vin, corps, saveur, teneur en sucre, différents types d'aliments comme le poisson et la viande rouge, les sous-types de vin comme le vin blanc et le rosé, etc.

IX-D - Définir les classes et la hiérarchie des classes

Dans cette étape, nous définissons les classes. Pour définir la hiérarchie des classes, il y a trois approches :

- de haut en bas : définir le concept général (super-classe) et ensuite définir la sous-classe ;

- de bas en haut : définir la sous-classe d'abord, puis la super-classe ;

- combinaison de haut en bas et de bas en haut : nous définissons les classes les plus importantes d'abord, puis les généraliser et les spécialiser de façon appropriée au fur et à mesure de la conception. Cette approche est la plus facile à suivre.

Nous organisons les classes dans une taxonomie hiérarchique pour se demander si en étant une instance d'une classe, l'objet sera nécessairement (i.e. par définition) une instance d'une autre classe.

Une classe A est une super-classe de la classe B si et seulement si chaque instance de B est également une instance de A. En d'autres termes, la classe B représente une classe qui est une « sorte de » A.

Par exemple, chaque vin Pinot noir est nécessairement un vin rouge. Par conséquent, la classe Pinot noir est une sous-classe de la classe Vin rouge.

IX-E - Définir les propriétés de l'ontologie

Chaque classe a des propriétés. Les propriétés d'une classe sont rattachées à cette classe. En général, il existe plusieurs types de propriétés qui peuvent se trouver dans une base de connaissances :

- propriétés intrinsèques : la propriété intrinsèque d'une chose est une propriété qui est essentielle à la chose, qui perd son identité lorsque la propriété change. Exemple: le goût du vin ;

- propriétés extrinsèques. Exemple: le secteur de production du vin, etc. ;

- relations : quelles sont des relations entre les membres individuels de la classe. Par exemple : le fabricant d'un vin, ce qui représente une relation entre un vin et son producteur, le vin et le raisin qui le compose, le vin est fait à partir).

Voilà maintenant que vous savez comment concevoir une ontologie il ne vous reste plus qu'à représenter cette ontologie avec des outils comme Protégé. L'utilisation de cet outil fera l'objet d'un prochain article.

X - Remerciements

Merci à dourouc05 pour son aide à la rédaction de cet article. Ainsi qu'à ClaudeLELOUP pour la correction orthographique. Et à Marie Laure Mugnier pour son cours de représentation des connaissances.