• Aucun résultat trouvé

Algorithme de d´ecomposition

3.5 XQuery vers TGV

4.1.2 Algorithme de d´ecomposition

La d´ecomposition de l’op´erateur eval de l’alg`ebre abstraite repose sur les propri´et´es des motifs d’arbre. Celle-ci commence par le motif d’arbre r´esultat du TGV (unique) qui ne poss`ede pas d’hyperlien de projection sortant, donc ind´ependant. Le tableau 4.2 montre la d´ecomposition r´ecursive de cette fonction. Elle est compos´ee de neuf r`egles de d´ecomposition que nous d´etaillons par la suite. La d´ecomposition d´ebute par la r`egle n˚1 (motif d’arbre r´esultat).

R`egle D´ecomposition

1 evaltgv(τ ) ⇔ evalrtp(σrtp(τr)) 2 evalrtp(τ ) ⇔ βrtp(πrtp(τ )) 3 evaltgv−rtp(τ ) ⇔ evalE1 ∪... ∪ En(τ )

⇔ evalE1(τ ) ∪ ... ∪ evalEn(τ ) 4 evalEx(τ ) ⇔ evalatpx(σatp(τx))

5 evalatp(τ ) ⇔ evalrtpa(αatp(τ )) 6 evalE−atp(τ ) ⇔ evalE1 ∪... ∪ En(τ )

⇔ evalE1(τ ) ∪ ... ∪ evalEn(τ ) 7 evalstp(τ ) ⇔ φstp(τ )

8 evalitps(τ ) ⇔ evalitp(evaltps(τ )) 9 evalitp(τ ) ⇔ φitp(πitp(τ ))

Tab. 4.2 – R`egle de d´ecomposition des motifs d’arbre

Nous d´etaillons maintenant les r`egles d´efinies dans le tableau 4.2 :

R`egle 1 D´ecomposition avec un motif d’arbre r´esultat. Le motif d’arbre r´esultat est retir´e de l’ensemble des motifs d’arbres tgv pour produire un op´erateur lui correspondant. L’op´eration σ utilise les hyperliens de contraintes provenant du rtp pour restreindre l’ensemble τr utilis´e dans evaltgv(τ ). τr correspond `a l’´evaluation de de τ par le groupement des motifs d’arbre restant dans «tgv − rtp» : τr = evaltgv−rtp(τ ). Ainsi les arbres de τr qui ne v´erifient pas σrtpr) sont supprim´es, les autres sont projet´es dans l’op´erateur π de la r`egle n˚2 ; R`egle 2 Projection des valeurs et construction de r´esultat. A partir de la r`egle

n˚1, nous d´ecomposons l’op´erateur eval dont le param`etre est un motif d’arbre r´esultat (rtp). Ce motif d’arbre se d´ecompose sous la forme d’un op´erateur de projection (π) obtenu grˆace aux hyperliens directionnels (li´es `a rtp) et d’un op´erateur de construction de document (β) grˆace au motifs d’arbre de rtp ; R`egle 3 D´ecomposition avec tgv − rtp. Grˆace `a la propri´et´e de distributivit´e de

l’op´erateur eval sur les motifs d’arbre disjoints, le groupement tgv − rtp peut ˆetre d´ecompos´e en ensembles disjoints de motifs d’arbre (E1∪...∪En). Chaque groupe de motifs d’arbre Excontient un ensemble de stp, itp et atp reli´es entre eux par des hyperliens (non encore trait´es). Deux groupes de motifs d’arbre Ex et Ey sont dits disjoints s’il n’existe aucun hyperlien directionnel (non encore trait´es) les reliant. Ainsi, nous pouvons d´eduire grˆace `a la distributivit´e de l’op´erateur eval sur les groupes Ex l’expression suivante : evalE1(τ ) ∪ ... ∪ evalEn(τ ) ;

R`egle 4 D´ecomposition avec un groupe de motifs d’arbre contenant un motif d’arbre d’agr´egation. La d´ecomposition de l’op´erateur eval avec un groupe de motifs d’arbre Excontenant un motif d’arbre d’agr´egation est ´equivalente `a la d´ecomposition de la r`egle n˚1. En effet, un motif d’arbre d’agr´egat h´erite des propri´et´es du motif d’arbre r´esultat. Ainsi, le sous-ensemble associ´e au motif d’arbre atp est donn´e par l’expression : Ex− atp. L’ensemble des contraintes li´ees au motif d’arbre d’agr´egation par les hyperliens de contraintes restreint l’ensemble τx produit par l’´evaluation de τ avec le groupe de motifs d’arbre Ex− atp.

R`egle 5 D´ecomposition avec un motif d’arbre d’agr´egation. La d´ecomposition de l’op´erateur eval avec un motif d’agr´egation seul donne l’´evaluation de l’op´e-rateur α sur τ . Alors, α effectue un agr´egat des valeurs de τ avec la fonction

4.4.1 Alg`ebre Abstraite pour TGV 109

d’agr´egat contenue dans atp. De plus, grˆace `a l’h´eritage du motif d’arbre r´e-sultat, la d´ecomposition g´en`ere l’op´erateur evalrtpa `a partir du motif d’arbre r´esultat contenu dans atp (puis d´ecompos´e dans la r`egle n˚ 2).

R`egle 6 D´ecomposition avec E − atp. Grˆace `a la propri´et´e de distributivit´e de l’op´e-rateur eval nous pouvons d´ecomposer en ensembles distincts Ex disjoints (de la mˆeme mani`ere que la r`egle n˚3, mais avec un atp). Le groupe Excorrespond `

a un ensemble de motifs d’arbre reli´es `a un motif d’arbre d’agr´egation (qui a ´et´e d´ecompos´e). Chaque groupe de motifs d’arbre disjoint Ex de E contient un nouveau sous ensemble motifs d’arbre li´es entre eux et pouvant ˆetre d´ecom-pos´e. Ainsi, comme pour la r`egle n˚3, l’op´erateur eval avec le groupe de motifs d’arbre E − atp donne l’expression alg´ebrique : evalE1(τ ) ∪ ... ∪ evalEn(τ ). R`egle 7 D´ecomposition avec un motif d’arbre source. L’op´erateur eval avec un

motif d’arbre source sur τ se d´ecompose en un op´erateur de filtrage φ sur τ . Le motif d’arbre source filtre les arbres pr´esents dans l’ensemble τ pour produire un r´esultat contenant la hi´erarchie des ´el´ements d´efinie par l’association des nœuds et des liens de nœuds contenus dans le motif d’arbre.

R`egle 8 D´ecomposition avec un motif d’arbre interm´ediaire li´e `a un motif d’arbre. L’op´erateur eval avec un motif d’arbre interm´ediaire (itps) li´e `a un autre motifs d’arbre se d´ecompose en un op´erateur de eval avec un motif d’arbre interm´ediaire ind´ependant (itp). Il s’applique sur la d´ecomposition de l’op´erateur eval avec le motif d’arbre li´e (tps). Cet op´erateur est d´ecompos´e dans la r`egle n˚9.

R`egle 9 D´ecomposition avec un motif d’arbre interm´ediaire ind´ependant. L’op´erateur eval associ´e `a un motif d’arbre interm´ediaire ind´ependant se d´e-compose en un op´erateur de filtrage φ appliqu´e sur un op´erateur de projection π. Le filtrage est donn´e par le motif d’arbre de itp, tandis que la projection des fragments de τ provient de l’hyperlien d’exploration de itp.

Les r`egles de d´ecomposition permettent de d´efinir la transformation de l’op´erateur eval en fonction des motifs d’arbre qui lui sont associ´ee. L’algorithme 35 donne la fonction de d´ecomposition r´ecursive d’un TGV `a l’aide des r`egles de d´ecomposition. L’algorithme 35 d´etaille l’utilisation des r`egles de d´ecomposition du tableau 4.2. Cette fonction r´ecursive utilise un ensemble de motifs d’arbre tps sur un ensemble de document XML «τ ». Dans cet algorithme, nous avons besoin de trois fonctions particuli`eres : existsGroups, exists et getT P .

La fonction exists permet de savoir s’il existe un motif d’arbre ”racine” (aucun hyperlien directionnel ne part de ce motif d’arbre) dont le type est ´equivalent au mot donn´e. La fonction getT P permet de retourner le motif d’arbre ”racine” requit par le type donn´e. La fonction existsGroups permet de d´eterminer s’il existe des groupes de motifs d’arbre contenant une ”racine”.

L’algorithme d´etaille les d´ecompositions en fonction du motif d’arbre ”racine” d´e-termin´e par la fonction exists. Ainsi, la premi`ere condition (ligne 1 `a 6) permet de voir s’il existe plusieurs ensembles de motifs d’arbre racine (ligne 1), alors le r´esultat retourn´e (ligne 6) est l’union des d´ecompositions de chacun de ces ensembles (ligne

Algorithme 35 composeOperations (tps, τ )

1: if existsGroups (tps) == true then 2: r := ;

3: for all distinct group E from tps do 4: r := r ∪ composeOperations(E, τ ) ; 5: end for

6: return r ;

7: else if exists (tps, ”rtp”) then 8: rtp := getTP (tps, ”rtp”) ;

9: r := composeOperations (tgv - rtp, τ ) ; 10: return βrtp(πrtp(σrtp(r))) ;

11: else if exists (tps, ”atp”) then 12: atp := getTP (tps, ”atp”) ;

13: r := composeOperations (tps - atp, τ ) ; 14: a := αatp(σatp(r)) ;

15: return βatp(πatp(a)) ; 16: else if exists (tps, ”itp”) then 17: itp := getTP (tps, ”itp”) ;

18: r := composeOperations (tps - itp, τ ) ; 19: return φitp(πitp(r) ;

20: else if exists (tps, ”stp”) then 21: stp := getTP (tps, ”stp”) ; 22: return φstp(τ ) ;

23: end if

3 et 4). La seconde condition (ligne 7) correspond au motif d’arbre r´esultat, la d´e-composition de la r`egle n˚1 est appliqu´ee (ligne 9) et donne le r´esultat r, puis la r`egle n˚2 (ligne 10) est appliqu´ee `a r. La troisi`eme condition d´ecompose les motifs d’arbre d’agr´egation avec la r`egle n˚4 (ligne 13) et donne le r´esultat r, la r`egle n˚5 est ap-pliqu´ee (ligne 14) puis retourn´ee. Puis le motif d’arbre interm´ediaire est d´ecompos´e grˆace `a la r`egle n˚8 (ligne 18), puis transform´ee `a l’aide de la r`egle n˚9 (ligne 19). Pour finir, les motifs d’arbre source sont transform´es par la r`egle n˚7 (ligne 22). Ainsi, nous avons d´efini une m´ethode r´ecursive permettant de g´en´erer un arbre alg´ebrique. Cet algorithme utilise les r`egles de d´ecomposition de l’op´erateur eval. L’entr´ee de cet algorithme est un ensemble de motifs d’arbre, provenant `a l’origine d’une TGV. Cette expression alg´ebrique est utile pour d´efinir le plan physique et son coˆut d’´evaluation par op´erateur. De plus, les r`egles de transformation ´equiva-lentes (section 4.3.2.1) doivent utiliser cette ´evaluation pour v´erifier l’´equivalence des r´esultats.