# Ontoclean

OntoClean est, en informatique, une méthode d'analyse d'ontologie, développée par Nicola Guarino (en) et Chris Welty (en), basée sur des propriétés de classes formelles et indépendantes de tout domaine (les métapropriétés).

## Historique

OntoClean a été la première tentative de formalisation de notions d'analyse ontologique appliquée aux systèmes d'information. L'idée était d'offrir une justification aux décisions qu'un concepteur d'ontologie chevronné est typiquement amené à prendre, et d'expliquer les erreurs courantes des débutants. Alan Rector, dit, lors d'un débat à la conférence KR-2002 de Toulouse : « ces travaux m'ont permis de réduire le temps passé à argumenter avec les médecins ».
Les notions sur lesquelles se sont concentrées Guarino & Welty sont tirées d'ontologies philosophiques. Ils ne cherchaient pas l'ontologie universelle source d'éternels débats, mais plutôt les techniques utilisées par ces philosophes pour analyser, justifier et critiquer leurs ontologies. Ces techniques ont peu, voire aucune, adhérence à une ontologie particulière, mais mettent en évidence ce qui ne sont souvent que des distinctions subtiles.
Les idées sous-jacentes d'OntoClean sont d'abord apparues dans une série de trois articles publiés en 2000$^,$. Le nom OntoClean n'apparaît pas dans une publication avant 2002. Selon Thompson-ISI, le travail sur OntoClean fut le plus cité dans les articles académiques sur l'ontologie. OntoClean constitua un apport important car il s’agissait de la première méthode formelle de l'ingénierie ontologique, appliquant des principes scientifiques à un domaine où les pratiques relevaient jusque-là principalement de l'art.

## Terminologie

En logique, une propriété est un prédicat unaire en intention, ou dit autrement, une propriété incarne ce que veut dire être membre d'une classe. Nous dirons par exemple que les instances de la classe Personne ont une propriété « être une personne ». En web sémantique, une propriété est une relation binaire.
La distinction entre propriété et classe est subtile et n'est probablement pas vitale pour comprendre OntoClean, toutefois cet article, suit les publications sur OntoClean et utilise le terme « Propriété » dans son acceptation d'origine et en conséquence, « propriété » et « classe » pourront être considérés synonymes. Ainsi, une méta-propriété est la propriété d'une propriété ou classe.
Les bases d'OntoClean reposent sur des propriétés de classe indépendantes de tout domaine, initialement au nombre de quatre : Identité, Unité, Rigidité et Dépendance. Des travaux récents de Welty et Bill Andersen ont ajouté les méta-propriétés permanence et réalité (actuality en anglais).

### Identité

La notion d'identité est fondamentale en Ontologie, et tout particulièrement pour les ontologies de système d'information. L'identité est bien connue en métaphysique et en modélisation conceptuelle de base de données. Pour ce dernier, il est de bonne pratique de déclarer une clef primaire pour les lignes d'une table. Si deux lignes ont une même clef primaire, alors elles sont considérés être une même ligne.
Plus important en ontologie est la question des identités qui exposent l'existence, ou tout du moins le besoin de représenter, d'autres entités. La problématique est ici de trouver les cas où une entité serait à la fois identique et différente. L'exemple classique est celui d'une certaine quantité d'argile modelée en forme de statue. Si vous utilisez la même argile, mais en la remodelant en quelque chose d'autre qu'une statue, s'agit-il de la même entité ? Sinon, comment pourrait-il s'agir de la même entité ? En modélisation conceptuelle, il est entendu qu'il faut, lorsque ce genre d’ambiguïté survient, considérer qu'il y a deux entités différentes de manière à prendre en compte la situation où un élément change et un autre non.
Pour OntoClean, les critères d'identité (identity criteria) sont associés avec, ou portés par certaines classes d'entité appelées sortals qui sont une classe dont toutes les instances sont identifiées de la même manière. Dans les systèmes d'information, ces critères sont souvent extrinsèques, comme un numéro de sécurité sociale, ou un identifiant universellement unique, et ne sont pas intéressant du point vue ontologique. Les critères d'identités devraient être informatifs et aider à comprendre la signification d'une classe. Un triangle, par exemple, peut être identifié par la longueur de ses trois côtés, ou par deux côtés et un angle intérieur, ou etc. Cela nous dit beaucoup sur ce qu'on « entend » ici par la classe triangle, par exemple le même triangle peut être à différents endroits au même moment. Quelqu'un d'autre pourrait avoir une ontologie dans laquelle la classe triangle a d'autres critères d'identité, de telle manière que des dessins différents correspondent toujours à des triangles différents, même s'ils ont la même taille. Le critère d'identité (et OntoClean, sur ce point) ne vous dit pas si une de ces deux définitions est juste ou erronée, mais seulement qu'elles sont différentes et que donc les classes sont différentes.
Les critères d'identité et les sortals sont intuitivement conçus pour prendre en compte l'habitude linguistique consistant à associer l'identité à certaines classes. Dans l'exemple classique de la statue "de bronze", nous disons naturellement le même « bronze » ou la même statue, indiquant qu'il y a des critères d'identité spécifiques à chaque classe.
Être un sortal, la première des méta-propriétés d'OntoClean, est représenté selon la notation d'origine par +I en exposant (-I pour non-sortals) associé à une classe. +I (mais pas –I) se transmet par héritage de telle sorte que si une classe est un sortal alors toutes ses sous classes le sont également.

### Unité

Certaines propriétés ne s'appliquent qu'à des éléments qui sont un tout. En ontologie formelle, cette notion est souvent distinguée de celle de simple total (mere sums), correspondant à des entités dont les limites sont, d'une certaine manière, arbitraires. Considérons par exemple la classe Argile. Une instance de cette classe peut être n'importe quelle quantité de ce matériau (il ne s'agit bien sûr que d'une signification possible), de telle sorte que n'importe quel (en fait, tout) sous-ensemble arbitraire de cette quantité est une instance différente de la classe Argile. Par contraste, les instances de la classe Personne ne sont typiquement pas décomposables de cette manière.
Pour les besoins d'OntoClean, un tout est un élément dont toutes les parties sont reliées entre elles et seulement entre elles par une quelconque relation distinguée. Cette relation peut être vue comme une relation de « connexion généralisée ». Les simples totaux n'ont pas de telle relation étant donné que toute décomposition d'un simple total est connectée à toute plus grande somme, qui n'est pas un de ses constituants par la même relation.
La méta-propriété unité, représentée par +U, désigne les classes dont toutes les instances sont des « tout » par une même relation. Comme pour l'identité, OntoClean n'impose pas que la relation elle-même soit spécifiée, car il suffit souvent de savoir que la relation existe. De manière intuitive, une classe a la méta-propriété unité si toutes ses instances ont le même type de tout, ce qui est classiquement le cas pour tous les objets physiques. La Non-unité, représentée par -U, désigne les classes dont les instances ne sont pas toutes des tout, ou alors pas selon la même relation. La méta-propriété anti-unité, représentée par ~U, désigne les classes dont aucune instance n'est un tout, comme les classes de simple total. +U et ~U (mais pas -U) se transmettent entre classes par héritage.

### Rigidité

La loi de Leibniz semble de bons sens au premier abord, toutefois, il ne faut pas longtemps pour se rendre compte comment la prise en compte du temps pose des problèmes dans la plupart des ontologies (en particulier pour les ontologies du web sémantique) et la loi de Leibniz. Je pourrai, par exemple, avoir une barbe un jour et l'avoir rasée le lendemain, sans pour autant avoir changé d'identité. Comment est-il possible d'être le même si j'ai changé ?
Il y a de nombreuses approches logiques pour ce dilemme classique (incluant celle de simplement l'ignorer). La plus courante est de considérer certaines propriétés comme étant essentielles ; une propriété essentielle d'une entité est une propriété qui ne peut pas changer, et pour laquelle la loi de Leibniz s'applique. Les autres propriétés d'une entité, qui elles peuvent changer, sont non essentielles et ne sont pas impliquées dans l'identité.
Certaines propriétés sont essentielles pour toutes leurs instances. Pensez à la propriété "être une personne", habituellement représentée par la classe personne. Cette propriété est fondamentale pour toutes les entités ayant cette propriété. Donc au moins une des propriétés n'ayant pas changé à mon sujet quand je coupe ma barbe est que je suis une personne. Ces propriétés, qui sont essentielles à toutes leurs instances, sont des propriétés rigides.
Les propriétés rigides sont désignées par +R, et celles qui ne sont pas rigide par –R. Une spécialisation importante des propriétés non rigide est les propriétés anti-rigide (~R), qui sont les propriétés qui sont obligatoirement changeables. Pensez à "être un étudiant". Tous les étudiants doivent pouvoir ne pas être un étudiant. ~R (mais pas –R ou +R) est hérité dans une hiérarchie de classe.
Notez qu'il ne s'agit que d'exemples et qu’il est tout à fait possible d'avoir une ontologie où Personne est anti-rigide. Imaginez par exemple une ontologie des croyances mystiques où une entité Personne deviendrait une entité Esprit au moment de la mort. Pour qu'un individu soit le même lors de ce changement, être une personne devrait être non essentielle et même modifiable (c'est-à-dire anti-rigide)
Rigidité ne dois pas être confondue avec la notion de désignation rigide définie par Kripke, qui est particulière. OntoClean utilise le terme rigide pour décrire une instance de lien entre une instance et une classe rigide et ne peut être rompu.

### Dépendance

La notion de dépendance est variante. Dans les papiers fondateurs d'OntoClean, Guarino & Welty utilisent un type de dépendance capturant les méta-propriétés de certains rôles relationnels. Une propriété est dépendante si chaque instance implique l'existence d'une autre entité. La propriété Étudiant, par exemple, est dépendante, puisque pour être étudiant il doit y avoir un professeur ; pour chaque instance d'étudiant il y a au moins une instance de professeur. Dans des travaux postérieurs pour [Dolce] on dit qu'il subsume deux types de propriétés dépendantes: dépendance « spécifique » constante et dépendance « générique » constante. Ce dernier correspond au cas Étudiant/Professeur où toute instance de professeur convient.
Il existe beaucoup d'autres types de dépendance. Les adapter à OntoClean demeure un problème ouvert.
Être dépendant est indiqué par +D, et être indépendant par -D. +D (mais pas -D) est transmis par héritage.