| Guide Utilisateur AROM v2.0 | ||||
|---|---|---|---|---|
| Précédent | Arrière rapide | Chapitre 4. Représentation des entités du système | Avance rapide | Suivant |
Les facettes permettent de représenter des propriétés dans AROM. Elles peuvent apparaître à différents niveaux dans AROM :
La facette de documentation peut être définie par toute entité AROM.
La facette de type permet de décrire les slots.
La facette d'inférence permet de spécifer des valeurs ou méthodes d'inférence pour les variables.
La facette de contrôle d'instanciation permet de controler l'instanciation des structures AROM.
Par conséquent, les facettes peuvent être liées à des entités spécialisables, comme les types des slots, ou non spécialisables comme la documentation des instances. L'état d'une facette liée à une entités spécialisable dépend donc non seulement des modificateurs qui lui ont été appliqués, mais également de l'état des facettes dont elle est la spécialisation (la figure du chapitre Spécialisation d'une facette de type illustre cela dans le cas d'une facette de type).
La modification de l'état d'une facette se fait en appliquant ou en annulant un modificateur de facette. La facette, si elle reconnaît ce modificateur, modifie son état interne pour refléter la modification demandée.
Un slot est décrit par un ensemble de facettes (type, inférence, documentation, etc ...). Ainsi, une variable AROM est décrite par trois facettes : une facette de documentation, une facette de type et une facette d'inférence, alors que le role n'est définit que par les facettes de documentation et de type. Les slots sont décrits par des descripteurs organisés selon la même hiérarchie que les structure pour lesquelles ils décrivent le slot. Par conséquent, une facette étant liée à la description d'un slot, il existe alors plusieurs objets facettes différents pour un même slot : un pour chaque description du slot (donc un pour chaque niveau de la hiérarchie des structures où le slot apparaît).
La modification de la description d'un slot se fait donc par l'application (l'annulation) de modificateurs de facette. La facette ne fait que modifier son état interne, par contre, il est possible d'obtenir la liste des modificateurs appliqués auprès des descripteurs.
Pour résumer la situation on peut dire que c'est le slot qui décide s'il est possible ou non de spécialiser sa description en spécialisant ses facettes, mais chaque facette dicte les règles qui régissent cette spécialisation. Ces règles de spécialisation des facettes dépendent naturellement de la nature des facettes.
La documentation d'une entité AROM peut-être divisée en deux parties. Une première partie au format texte et une seconde au format URL. Seul l'un des deux formats, ou les deux simultanément, peuvent être spécifiés pour une seule et même facette. Dans tous les cas, les modificateurs et les règles de spécialisation sont identiques.
Pour les entités spécialisables, La facette de documentation peut être différente d'une niveau à un autre. Ceci permet d'attribuer une documentation de plus en plus précise tout au long de la hiérarchie de spécialisation. La règle de spécialisation de la facette de documentation impose qu'une facette de documentation masque la ou les documentations qu'elle spécialise. [lorsqu'un modificateur lui est appliqué.]
Il serait pourtant intéressant de permettre à l'utilisateur du système AROM de choisir pour chaque facette (ou pour chaque entité (ex : pour le slot x, mais pas pour le slot y) ou encore pour chaque type d'entité spécialisable (ex : pour les slots, pour les classes mais pas pour les associations) s'il souhaite qu'une facette de documentation masque les documentations dont elle hérite ou s'il souhaite au contraire qu'une facette de documentation se comporte comme un complément de la documentation dont elle hérite. Dans le second cas, la documentation d'une entité serait alors la concaténation des documentations héritées par cette entité.
L'état d'une facette de type dépend de la facette héritée et des modificateurs de facettes appliqués localement. Ainsi dans la figure ci dessous, l'état de la facette de type du slot x pour la structure B dépends non seulement de l'état de cette même facette pour la structure A mais aussi du modificateur appliqué à x pour B.
L'application d'un modificateur de facette de type est acceptée même s'il n'a pas de réelle conséquence sur l'état de la facette. En effet, si l'on considère l'exemple ci-dessus et que l'on applique le modificateur [-1..100] à x pour B, la facette de Type résultante pour B sera la même que celle pour A: [0..10]. Les cas qui entraînent un refus de l'application d'un modificateur de facette de type sont décrits ici.
La facette de Type résultante est l'ensemble vide. Il faut également que cette règle soit vérifiée après répercution de l'application du modificateur aux facettes des sous-structures.
La valeur du slot considéré pour une instance existante devient invalide.
Cette facette est liée aux Structures AROM. En effet, elle définit des règles premettant de contrôler les instanciations des classes et associations. On trouve dans cette facette, entre autres, la multiplicité. La multiplicité, bien qu'associé aux rôles, permet de contrôler l'instanciation des associations. En effet, une multiplicité de 1 pour un role r1, signifie qu'une seule valeur est possible pour r1 lorsque tous les autres rôles sont valués. Par conséquent, la création d'un tuple peut être interdite aux vues de la multiplicité associée à un des rôles de son association. Plus d'information est donné dans le chapitre Représenter des connaissances avec AROM. Par la suite, d'autres aspects, tel que le singleton, pourraient venir enrichir cette facette.
L'état de cette facette, plus précisement de la multiplicité, dépend de la facette héritée et des modificateurs de facettes appliqués localement. L'application de modificateurs de multiplicité est acceptée même si elle n'a pas de réelle conséquence sur l'état de la facette. Ainsi, si une multiplicité de [1..5] est définit à un niveau n, l'application d'un modificateur de multiplicité [1..10] à un niveau n+1 n'entraînera aucune modification de la multiplicité, même au niveau n+1. Par contre, l'application d'un modificateur de multiplicité [8..10] provoque un erreur puisque la multiplicité résultante est invalide.
L'état de la facette d'inférence dépend de la facette héritée et des modificateurs appliqués localement. Une facette d'inférence définit actuellement 2 modes d'inférences : la valeur par défaut et l'attachement.
Chacun des modes de la facette d'inférence masque le même mode d'inférence dont elle a hérité lorsqu'un modificateur de facette lui est appliqué. Ainsi, si l'on considère un descripteur qui hérite d'une facette d'inférence définissant les deux modes et si un modificateur pour l'attachement lui est appliqué, la facette résultante définira toujours les deux modes d'inférences: la valeur par défaut héritée et l'attachement procédural redéfinit.