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 :
Un C-type (Classe de types) représente l'ensemble, fini ou non, des valeurs partageant une même structure, tel que l'ensemble des réels ou l'ensemble des chaînes de caractères. Chaque C-type définit des opérations qui lui sont applicables.
Les δ-types, quant à eux, permettent de représenter des sous-ensembles des C-types. Chaque δ-type est associé à un C-type qui représente le type principal de celui-ci. Les informations relatives aux données se trouvent donc dans le C-type. Par contre, les δ-types contiennent des informations concernant la restriction du domaine défini par le C-type. Pour un même C-type il peut donc exister plusieurs, voire une infinité, de δ-types. Pour les opérations concernant les δ-types, celles-ci dépendent du type principal des valeurs manipulées, c'est pourquoi ces opérations sont définies au niveau du C-type et non au niveau du δ-type. Par exemple, les méthodes d'intersection ou d'union entre deux δ-types sont définies au niveau des C-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.
A un premier niveau les C-types sont divisés en C-types basics et construits. On retrouve ensuite :
Les C-types de structures qui permettent de représenter les Structures AROM.
Les C-types ordonnés qui représentent les C-types acceptant des valeurs ordonnées. On peut distinguer les C-types ordonnés discrets et les C-types ordonnés continus.
Les C-types multivalués, eux-même divisés en C-types List et C-types Set, qui représentent des collections de valeurs de même type.
Les C-types records qui représentent des ensembles de couples étiquettes/types.
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 :
string qui représente l'ensemble des chaînes de caractères.
boolean qui représente l'ensemble des booléens.
float qui représente l'ensemble des réels.
integer qui représente l'ensemble des entiers.
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}.