140 likes | 236 Views
Description de documents XML multistructurés au moyen de nœuds retards. Jacques Le Maitre LSIS Université du Sud Toulon-Var. Représentations d’arbres concurrents. Une solution : par des couples d’attributs id / idref : Il y a dissymétrie dans la manipulation des arbres.
E N D
Description de documents XML multistructurés au moyen de nœuds retards Jacques Le Maitre LSIS Université du Sud Toulon-Var
Représentations d’arbres concurrents • Une solution : par des couples d’attributs id/idref : • Il y a dissymétrie dans la manipulation des arbres. • Proposition : au moyen de nœuds dits nœuds retard dont le contenu n’est activé que lorsque le contenu à ce noeud est nécessaire (évaluation paresseuse). • Application à la représentation d’un General-Orderd Descendant Directed Acyclic Graphs (GODDAG).
ligne ligne ligne phrase phrase Ecrit servant de preuve, d’information. Objet servant de preuve, de témoignage. Ce que l’on veut… • Petit Larousse • … • Document. Ecrit servant de preuve, • d’information. Objet servant de preuve, • de témoignage. • …
Nœuds retard • Le contenu d’un nœud retard est la représentation par une requête XQuery d’une sous-séquence des enfants de son nœud père. • L’extension d’un nœud retard est la valeur de cette expression, • Lors de l’évaluation d’une requête XQuery, un nœud retard est étendu lorsque l’accès aux enfants de son nœud père est nécessaire. • Similaires aux nœuds « appel de service » d’Active XML.
personne livre $b = $p = titre auteur année nom ville extension nœud retard $p := <personne> <nom>Durand</nom> <ville>Paris</ville> </personne> Nœud retard : exemple $b := <livre> <titre>XML</titre> <auteur> <delay expr="$p/personne/*"/> </auteur> <année>2000</année> </livre> <livre> <titre>XML</title> <auteur> <nom>Durand</naom> <ville>Paris</ville> </auteur> <année>2000</année> </livre>
GODDAGs • Introduits par Sperberg et Huitfeld pour représenter les documents SGML ou XML multistructurés. • Dekhtyar et Iacob ont par la suite élaboré • un compilateur pour traduire un document XML distribué en un GODDAG, • une extension de XPath pour naviguer dans cette structure. • Un document XML distribué (DXD) peut être vu comme un ensemble de documents XML qui partagent la même racine et le même contenu textuel.
Document XML distribué (DXD) • Petit Larousse … Document. Ecrit servant de preuve, d’information. Objet servant de preuve, de témoignage. … • DXD <définition id="7952"> <phrase>Ecrit servant de preuve, d’information.</phrase> <phrase>Objet servant de preuve, de témoignage.</phrase> </définition> <définition id="7952"> <ligne>Ecrit servant de preuve,</ligne> <ligne>d’information. Objet servant de preuve,</ligne> <ligne>de témoignage.</ligne> </définition>
Représentation d’un DXD par un GODDAG définition id="7952" phrase phrase T T Ecrit servant de preuve, d’information. Objet servant de preuve, de témoignage. T T T ligne ligne ligne définition id="7952"
Rédéfinition des axes d p1 p2 lig1 lig2 lig3 Feuilles (L) xdescendant(d) = (p1, p2, lig1, lig2, lig3); xdescendant(p1) = lig1; xdescendant(p1) = lig2 overlapping(p1) = lig2; overlapping(p2) = lig2; overlapping(lig2) = (p1, p2);
Interrogation en XPath étendu • Phrases qui s’étendent sur plusieurs lignes ? /xdescendant::ligne/overlapping::phrase
Représentation d’un GODDAG en XML + nœuds retard declare variable $def := <définition id="7952"> <phrase>{delay {$def/Ls/L[position() = 1 to 2]}</phrase> <phrase>{delay {$def/Ls/L[position() = 3 to 4]}</phrase> <ligne>{delay {$def/Ls/L[1]}</ligne> <ligne>{delay {$def/Ls/L[position() = 2 to 3]}</ligne> <ligne>{delay {$def/Ls/L[4]}</ligne> <Ls> <L>Ecrit servant de preuve,</L> <L>d’information.</L> <L>Objet servant de preuve, de</L> <L>témoignage.</L> </Ls> </définition>
Prédicats de position declare function xdescendant($n1, $n2) { fn:not($n1/descendant::L except $n2/descendant::L) }; declare function overlapping($n1, $n2) { $n1/descendant::L intersect $n2/descendant::L and $n1/descendant::L except $n2/descendant::L and $n2/descendant::L except $n1/descendant::L };
Interrogation • Phrases ? $def//phrase • Lignes ? $def//ligne • Phrases qui s’étendent sur plusieurs lignes ? for $p in $def//phrase for $l in $def//ligne where overlapping($p, $l) return $p = <phrase><L>Ecrit servant de preuve,</L> <L>d’information.</L></phrase>, <phrase><L>témoignage.</L></phrase>
Perspectives • Déjà étendu au cas de documents multistructurés dont les arbres constituants partagent des sous-arbres.