Validation incrémentale des contraintes dintégrité en XML Maria Adriana Abrão, Béatrice Bouchou, Mírian Halfeld-Ferrari, Dominique Laurent, Martin Musicante JIRC2005 – Premières Journées Informatique de la Région Centre
Plan Vue générale de lapproche Contraintes dintegrités: clef et clef étrangère en XML Validation dun document XML from scratch Validation incrémentale avec mises à jour multiples Résultats et conclusion M.A. Abrão – JIRC2005 1
Vue générale: Validation dun document XML (from scratch) Contraintes dintegrité oui / non (pour chaque contrainte) Structure qui regroupe les valeurs clefs trouvées dans le document XML Document XML KeyTrees Validation incrémentale des mises à jour Suite de mises à jour Contraintes dintegrité oui / non (pour chaque contrainte) Document XML KeyTrees Document XML + Mises à jour M.A. Abrão – JIRC2005 2
Préliminaires Un document XML est considéré comme un arbre darité non bornée. Une expression de chemin est un mécanisme pour naviguer et sélectionner des nœuds dun document XML. Expression / /toto //recipe /collection/category Résultat tout le document lensemble vide, puisqu'il n'y a pas de nœud toto tous les élémentsrecipe" du document où qu'ils soient tous les éléments category fils de collection Soups root collection category recipe ingredientnameauthor Shrimp Soup J.Fox name amount... Carrot1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... collection... M.A. Abrão – JIRC2005 3
Contraintes dintegrité en XML Une clef primaire K est représentée par lexpression de chemin: K = ( Q, ( Q, { P 1,..., P m })) où : Q est le chemin du contexte (context) Q est le chemin cible (target) P 1,..., P m sont les chemins composant la clef r n n... Q Q P1P1 Q Q PmPm Une clef peut être: Absolue: le contexte cest la racine du document XML Relative: le contexte nest pas la racine. M.A. Abrão – JIRC2005 4
Contraintes dintegrité en XML K 1 = (/, (./collection,{./category } )) clef absolue K 2 = (/collection, (.//recipe,{./name,./author } )) clef relative K 3 = (//recipe, (./ingredient,{./name } )) clef relative root collection category recipe ingredient Soups nameauthor Shrimp Soup J.Fox name amount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe 1 Mushroom Soup top_recipes M.Smith collection... M.A. Abrão – JIRC2005 5
Contraintes dintegrité en XML Soit une clef primaire K = ( Q, ( Q, { P 1,..., P m })). Une clef étrangère FK est représentée par : FK = ( Q 0, ( Q 0, { P 0 1,..., P 0 m })) K où : Q 0 = Q r n n... Q P1P1 Q Q PmPm n 0... P01P01 P0mP0m Q 0 M.A. Abrão – JIRC2005 6
Contraintes dintegrité en XML root collection category recipe ingredient Soups nameauthor Shrimp Soup J.Fox name amount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe 1 Mushroom Soup top_recipes M.Smith collection... FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name })) K 2 K 2 = (/collection, (.//recipe,{./name,./author } )) M.A. Abrão – JIRC2005 7
Validation dun document XML from scratch Contraintes dintegrité oui / non KeyTrees Validation from scratch Document XML K 2 = (/collection, (.//recipe,{./name,./author } )) e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author (pour chaque contrainte) M 2.e o est la configuration initiale pour la clef K 2. M.A. Abrão – JIRC2005 8
Le processus de vérification des contraintes dintégrité est formalisé par une grammaire dattributs où: les règles de production sont définies par le schéma, et les attributs décrivent des informations sur les contraintes dintégrité. À chaque règle de production sont associées des règles sémantiques, composées dactions et dattributs. E E + T { code } règle de productionrègle sémantique Grammaire dattributs M.A. Abrão – JIRC2005 9
Les règles sémantiques fournissent un mécanisme pour lannotation des nœuds avec des attributs, qui peuvent fonctionner de façon: A BC n mm A BC { n(A) = f (m(B), m(C)) } A BC n mm A BC { m(C) = f (m(B), n(A)) } Ascendante (attributs synthétisés): Parcours ascendant de l'arbre La valeur dun attribut synthétisé est déterminée à partir de valeurs d'attributs des fils de ce nœud. Descendante (attributs hérités): Parcours descendant de l'arbre La valeur dun attribut hérité est déterminée à partir de valeurs d'attributs du père et/ou des frères de ce nœud. Grammaire dattributs M.A. Abrão – JIRC
Direction descendante: Le parcours de haut en bas est utilisé pour déterminer le rôle de chaque nœud en ce qui concerne des clefs primaires et étrangères. Chaque nœud contient un attribut, appelé conf, pour chaque contrainte devant être verifiée. Lattribut conf garde la configuration (M.e) qui exprime le rôle du nœud par rapport à une contrainte. Grammaire dattributs M.A. Abrão – JIRC
root collection recipe nameauthor Mushroom Soup M.Smith... top_recipe recipe_name 1 Mushroom Soup top_recipes M.Smith … conf K 2 = { M 2.e 0 } conf FK 4 = { M 4.e 0 } conf K 2 = { M 2.e 1 } conf FK 4 = { M 4.e 1 } conf K 2 = { M 2.e 2, M 2.e 3 } conf FK 4 = { } conf K 2 = { M 2.e 2, M 2.e 5 } conf FK 4 = { } conf K 2 = { M 2.e 2, M 2.e 6 } conf FK 4 = { } conf K 2 = { } conf FK 4 = { M 4.e 3 } conf K 2 = { } conf FK 4 = { M 4.e 4 } conf K 2 = { } conf FK 4 = { M 4.e 7 } conf K 2 = { } conf FK 4 = { M 4.e 6 } e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author... e0e0 collection M 4 : e2e2 e3e3 top_recipes M4:M4: e5e5 e6e6 recipe_name M4:M4: e1e1 e7e7 author_name e4e4 top_recipe K 2 = (/collection, (.//recipe,{./name,./author})) FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name})) K 2 Grammaire dattributs Direction descendante: M.A. Abrão – JIRC
Direction ascendante: Dans cette direction, les valeurs liées a chaque clef sont portées jusquaux nœuds contexte. Pour chaque nœud, trois attributs peuvent être définis: k : tuple qui contient une valeur qui compose une clef t : ensemble qui réunit les tuples obtenus par les attributs k des nœuds fils. c : booléen qui représente le résultat de la vérification de tous les attributs t des noeuds fils. Grammaire dattributs M.A. Abrão – JIRC
Grammaire dattributs conf FK 4 = { M 4.e 7 } root collection …recipe name author Mushroom Soup M.Smith... top_recipe recipe_name 1 Mushroom Soup top_recipes M.Smith … conf K 2 = { M 2.e 1 } conf FK 4 = { M 4.e 1 } conf K 2 = { M 2.e 0 } conf FK 4 = { M 4.e 0 } conf K 2 = { M 2.e 2, M 2.e 3 } conf K 2 = { M 2.e 2, M 2.e 5 } conf K 2 = { M 2.e 2, M 2.e 6 } conf FK 4 = { M 4.e 3 } conf FK 4 = { M 4.e 4 } k 4 = conf FK 4 = { M 4.e 6 } c 2 = c 4 = c 2 K = c 4 FK = t 2 = { } t 4 = {< Mushroom Soup, M.Smith>} k 2 = t 4 = {< Mushroom Soup, M.Smith>} e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author e0e0 collection M 4 : e2e2 e3e3 top_recipes M4:M4: e5e5 e6e6 recipe_name M4:M4: e1e1 e7e7 author_name e4e4 top_recipe K 2 = (/collection, (.//recipe,{./name,./author})) FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name})) K 2 M.A. Abrão – JIRC2005 Direction ascendante: 14
keyTree K2K … context Shrimp Soup key J.Fox target Mushroom Soup key root collection recipe name author Shrimp Soup J.Fox... … c 2 K = c 4 FK = c 2 = c 4 = t 2 = { } k 2 = recipe name author Mushroom Soup M.Smith... t 2 = { } k 2 = category Soups Pendant que les attributs synthétisés sont calculés pour une clef primaire, son arbre keyTree correspondant est construit. M.A. Abrão – JIRC2005 Grammaire dattributs keyTree K2 : 15
Validation dun document XML from scratch Contraintes dintegrité oui / non KeyTrees Validation from scratch Document XML Structures Auxiliaires: (i)CONF: pile pour stocker les attributs hérités. (ii)SYNT: pile pour stocker les attributs synthétisés CONFSYNT (pour chaque contrainte) M.A. Abrão – JIRC
Résultat de la validation dun document XML from scratch Soit un ensemble de clefs primaires et étrangères qui doivent être respectées par un sous-arbre T : K j (1 j m) FK j (m+1 j n) Le résultat de la vérification iniciale appliqué sur T est un tuple, > Oú: est un n-uplet de tuples de la forme. est un m-uplet qui contient un keyTree pour chaque clef primaire. M.A. Abrão – JIRC
Validation incrémentale avec mises à jour multiples Suite de mises à jour KeyTrees Contraintes dintegrité oui / non (pour chaque contrainte) KeyTrees Structures Auxiliaires: (i) CONF: pile pour stocker les attributs hérités. (ii) SYNT: pile pour stocker les attributs synthétisés CONFSYNT Validation Incrémentale Document XML M.A. Abrão – JIRC
Seulement les parties affectées par les mises à jour sont re-vérifiées. Si la suite de mises à jour viole les contraintes dintegrités, alors la suite est rejetée, et le document nest pas changé. Les opérations de mise à jour sont: Insertion Suppression Remplacement Validation incrémentale avec mises à jour multiples M.A. Abrão – JIRC
Opérations de mise à jour M.A. Abrão – JIRC
Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position La suppression de la position La suppression de la position root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe recipe_name 1 Mushroom Soup top_recipes M.Smith collection M.A. Abrão – JIRC
Validation incrémentale de K2 et K2K2 0 target 0 … context Broccoli Soup key D.Simon target 01 0 Shrimp Soup key target 02 1 Mushroom Soup key 2. KeyTreeK 2 après linsertion dans la position 0.1: Insertion de la nouvelle recette dans la position 01: recipe ingredientnameauthor Broccoli Soup D.Simonnameamount... onion 1 medium T : 1. Résultat de la vérification initiale de T :, { }, >,, { }, > >, > target 0Broccoli Soup key D.Simon M.A. Abrão – JIRC
Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position La suppression de la position La suppression de la position root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe recipe_name 1 Mushroom Soup top_recipes M.Smith collection M.A. Abrão – JIRC
keyTree K2K2 0 target 0 … context Broccoli Soup key D.Simon target 01 0 Shrimp Soup key target 02 1 Mushroom Soup yes Suppression de la position 02: Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position 0.2: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position 0.2 :, { }, >,, { }, > >, > M.A. Abrão – JIRC
Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position La suppression de la position La suppression de la position root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe recipe_name 1 Mushroom Soup top_recipes M.Smith collection M.A. Abrão – JIRC
Suppression de la position 030: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position :, { }, >,, { }, > >, > Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position K2K2 0 target 0 … context Broccoli Soup key D.Simon target 01 0 Shrimp Soup key target 02 1 Mushroom Soup yes 0 M.A. Abrão – JIRC
Suppression de la position 030: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position : Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position K2K2 0 target 0 … context Broccoli Soup key D.Simon target 01 0 Shrimp Soup key { }, >,, { }, > >, > M.A. Abrão – JIRC
Opérations de mise à jour Si une opération de mise à jour est acceptée, alors les valeurs clefs rencontrées sont inserées ou supprimées des KeyTrees. Lopération peut être temporairement acceptée, et les violations de contraintes sont annotées dans la KeyTree : Insertion ( duplication de valeurs clefs ) Suppression ( les valeurs clefs à supprimer sont référencées par une clef étrangère ) Test de validité: vérifier si les KeyTrees résultants nont pas de marques de violation. M.A. Abrão – JIRC
Résultats expérimentaux Validation from scratch: Nombre fixe de contraintes: 2 clefs primaires et 1 clef étrangère Quatre documents XML ( à nœuds) (nombre de nœuds) (temps en seconds) M.A. Abrão – JIRC
Résultats expérimentaux Validation from scratch: Un document XML ( nœuds) Le nombre de clefs primaires et clefs étrangères a varié de 1 à (nombre de clefs) (temps en seconds) 5 M.A. Abrão – JIRC
Complexité La complexité de la validation incrémentale est considerée selon les opérations: Insertion: O(n. v kval. c) n : nombre de contraintes dintégrité v kval : nombre maximum des valeurs de clef dans un contexte dun keyTree c : nombre maximum de composants dune clef. Suppression: O( |t del |. n. v kval. c) |t del | : taille du sous-arbre Complexité pour la validation incrémentale avec m opérations de mise à jour: O(m 1. n. v kval. c) + O(m 2. |t del |. n. v kval. c) M.A. Abrão – JIRC
Conclusions La formalisation de la vérification de contraintes d'intégrité a été faite par une grammaire dattributs. Nous pouvons considérer l'utilisation des keyTrees pour évaluer efficacement des requêtes basées sur les valeurs clefs. Notre approche est plus complète que celle proposée par (Chen et al.): mises à jour multiples sur n'importe quel nœud de l'arbre vérification de clefs étrangères integration de la validation du schéma et des contraintes dintegrité. Y. Chen, S. Davidson, and Y. Zheng. Validating constraints in XML. Technical Report, University of Pennsylvania, 2002 [Chen et al.] M.A. Abrão – JIRC