Chapitre 5. Module de types

Table des matières
5.1. C-Types et δ-Types
5.2. Domaines associés aux δ-Types
5.3. Relation de sous-typage dans le module de types
5.4. Nommage des C-types
5.5. C-types et Valeurs
5.6. API relative aux types

5.1. C-Types et δ-Types

Le module de types définit l'ensemble des types de données qui pourront être utilisés dans une base de connaissances AROM, pour décrire l'intention d'une structure par exemple. Des opérations sur ces types de données sont également proposées par le module de types. De la même manière que dans le système de types METEO [Cap95], le module de types d'AROM considère deux niveaux de représentation des types :

Des classes de C-types sont prédéfinies et organisées hiérarchiquement afin de regrouper les C-types selon leurs caractéristiques.

Figure 5-1. Hiérarchie des classes de CTypes

A un premier niveau les C-types sont divisés en C-types basics et construits. On retrouve ensuite :

Par défaut, seuls les C-types simples, en couleur dans le diagramme ci-dessus, suivants sont définis dans le module de types et peuvent être utilisés afin de typer les variables AROM. Ils n'acceptent qu'une seule instance de C-type, c'est pourquoi ils peuvent êtr prédéfinis et qu'ils sont accessibles via leur nom :

Des C-types construits peuvent également être utilisés dans AROM. Les C-types construits principaux sont les ListCT et les SetCT qui représentent respectivement des listes et des ensembles de δ-types. En effet, les C-types construits le sont sur des δ-types et non sur des C-types afin d'affiner les C-types offerts et de simplifier les tests d'appartenance. En effet, pour représenter une Date, le C-type record <jour/integer [0..30]; mois/integer [0..11]; année/integer> est plus précis que <jour/integer; mois/integer; année/integer>.

A une variable est donc associé un C-type qui permet de spécifier le comportement et la structure de celle-ci. Mais afin de décrire l'ensemble des valeurs autorisées pour la variable, c'est le δ-type qui est utilisé. Si aucune restriction n'a été appliquée à la variable, l'ensemble dénoté par le δ-type sera le même que celui dénoté par le C-type. Par contre, lorsqu'une restriction des valeurs est réalisée auprès de la variable, le C-type reste inchangé, c'est le δ-type qui est modifié.

La restriction d'un ensemble de valeurs est réalisée par l'intermédaire de deux descripteurs: set ou interval. Le nouvel ensemble de valeurs associé à une variable correspondra au domaine spécifié par le decripteur d'intervalle ou d'ensemble. Un seul de ces descripteurs est pris en compte. L'application d'un descripteur entraînera la suppression du descripteur précédent.

Dans l'exemple qui suit, le salaire d'un ingénieur niveau 2 est compris entre 175037,44 Fr et 288378,74 Fr. Si l'on applique à cette variable le descripteur set : {153691,25; 175037,44; 186321,45; 21035678 } le nouveau domaine sera l'ensemble {153691,25; 175037,44; 186321,45; 21035678} et non l'union de cet ensemble et de l'intervalle [175037,44..288378,74].

Exemple 5-1. Resctriction de domaine


     Class: Ingenieur_niveau_2
     variables:
      variable: salaire
        type: float
        domain: [175037,44..288378,74]
    

Par contre, dans le cadre d'une hiérarchie de Structures AROM, une variable peut se voir restreinte par l'application de plusieurs descripteurs. En effet, dans l'exemple du schéma Application de descripteurs, l'ensemble des valeurs de la variable var_x pour la structure Class_B est le résultat de l'application des descripteurs interval [0..130] et interval [12..150] soit l'intervalle [12..130]. Maintenant, si au niveau de la structure Class_B le descripteur set {-2, 12,65,119,456} était appliqué, le descripteur interval [12..150] serait annulé et le résultat serait l'ensemble {12,65,119}.

Figure 5-2. Application de descripteurs