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