Les attributs composites

Afin de répondre à la problématique des profils multiples, SUPANN définit une syntaxe d'attributs dite attribut composite.

Les attributs composites contiennent des valeurs structurées, constituées d'une succession ordonnée de champs comportant chacun une clé et une valeur.

Leur usage principal est d'associer entre elles des valeurs d'autres attributs du même objet, dits élémentaires, lorsque ceux-ci contiennent plusieurs valeurs; chaque champ du composite correspondant à un attribut élémentaire.

Une valeur d'attribut composite obéit à la syntaxe suivante:

[cle1=valeur1][cle2=valeur2][cle3=valeur3]…

Chaque champ est composé des éléments suivants :

  • des délimiteurs encadrant le champ : ”[” en début de champ, ”]” en fin de champ,
  • une clé se rapportant à un attribut élémentaire, dont l'intitulé est proche mais plus court,
  • un séparateur ”=” entre la clé et la valeur,
  • une valeur reprenant une des valeurs de l'attribut élémentaire correspondant.

Règles:

  • Les clés peuvent contenir les caractères suivants: lettres minuscules non accentuées, chiffres et le tiret bas “_”.
  • Les valeurs peuvent contenir tous les caractères acceptés dans les attributs élémentaires correspondants, à l'exception des crochets “[” et “]”.
  • Chaque clé ne peut apparaître qu'une seule fois dans une valeur du composite.
  • Les noms et l'ordre des clés sont imposés par la définition de l'attribut composite.
  • Il n'y a pas d'espace entre les champs et leurs différents éléments.
  • Les attributs composites sont en général insensibles à la casse.
  • Certains champs, dits facultatifs, peuvent être omis. Ils sont en principe à la fin de l'attribut composite.
  • Les attributs composites sont multivalués, chaque valeur représentant une association différente des valeurs de champs.
  • Tous les champs clé=valeur présents dans les valeurs d'un composite doivent également être présents dans la même entrée, sous forme de valeurs des attributs élémentaires correspondants, sauf exceptions dûment documentées dans la définition du composite.

Un attribut composite peut évoluer, mais uniquement par:

  1. ajout de nouveaux champs en fin de valeur,
  2. ou insertion de nouveaux champs entre deux champs existants, sans en modifier l'ordre relatif.

Pour permettre le requêtage par champs comme montré ci-dessous dans de bonnes conditions, les attributs composites doivent être indexés en sub (sous-chaînes). Voir: Types d'indexation des attributs.

Dans un contexte LDAP, les attributs composites peuvent être utilisés en recherche, avec un filtre du type suivant :

(attributComposite=*[cleX=valeurX]*[cleY=valeurY]*[cleZ=valeurZ]*)

cleX, cleY et cleZ représentent les clés des champs utilisés comme critères pour recherche souhaitée. Il peut s'agir de champs contigus ou non contigus. Ils peuvent être en nombre quelconque, jusqu'à concurrence du nombre total de champs défini pour cet attribut.

L'ordre des champs (cleX=valeurX, cleY=valeurY, …) dans le filtre doit respecter celui imposé dans la définition de l'attribut composite: les champs ne sont pas commutatifs.

Le filtre doit impérativement comporter un joker “*” en début de valeur, en fin de valeur, et entre chaque champ recherché, même s'ils sont contigus, afin de respecter les critères d'évolutivité et de support des champs facultatifs du format composite.

Remarque: Contrairement aux règles applicables aux attributs “élémentaires”, du fait de la syntaxe utilisée il n'est pas possible de faire une recherche approximative (sous-chaînes) sur les champs d'un composite. Seule une recherche en égalité est possible.

Les mêmes règles peuvent être appliquées lors de la recherche de correspondances par expressions rationelles (regular expressions).

Exemple en Perl :

grep ( /\[cleX=valeurX\].*\[cleY=valeurY\].*\[cleZ=valeurZ\]/i, @attributComposite )

Les attributs SUPANN suivants sont basés sur le format composite:

  • documentation/supann/supann2018/recommandations2018/modele/composites.txt
  • Dernière modification : 2018/08/29 17:08
  • de Benoit.Branciard@univ-paris1.fr