Upload
coral
View
35
Download
3
Embed Size (px)
DESCRIPTION
2ème partie : Gestion de contenus Web. CHAPITRE 1 : XML Dynamique CHAPITRE 2 : XQUERY et les BD CHAPITRE 3 : Web sémantique et ontologies. Chapitre 5 : XQUERY et les BD. 1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML - PowerPoint PPT Presentation
Citation preview
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 1
2ème partie :2ème partie : Gestion de contenus Web Gestion de contenus Web
2ème partie :2ème partie : Gestion de contenus Web Gestion de contenus Web
CHAPITRE 1 : XML Dynamique CHAPITRE 1 : XML Dynamique
CHAPITRE 2 : XQUERY et les BDCHAPITRE 2 : XQUERY et les BD
CHAPITRE 3 : Web sémantique et ontologiesCHAPITRE 3 : Web sémantique et ontologies
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 2
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 3
Données Semi-structuréesDonnées Semi-structurées
Généralités Données sans schéma ou auto descriptives Associations de paire <label:valeur>
ex : {nom:"Toto", tel:81212, email:[email protected]}
Représentation : arcs labelésnom
tel
Toto [email protected]
81212
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 4
Structures imbriquéesStructures imbriquées
Valeurs peuvent être d'autres structures {nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212,
email:[email protected]}
nom
tel
prénom
patronyme
Thomas
Toto
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 5
Syntaxe IrrégulièreSyntaxe Irrégulière
La structure n'est pas figée : Représentation d'ensemble de même structure
{personne:{nom:{prénom:"Thomas", patronyme:"Toto"},
tel:81212, email:[email protected]}} {personne:{nom:{prénom:"Sophie", patronyme:"Soso"}, tel:82222, email:[email protected]}}
De structure voisine {personne:{nom:{prénom:"Thomas", patronyme:"Toto"},
tel:81212, email:[email protected]}} {personne:{nom:{patronyme:"Soso"}, tel:81212, email:[email protected]}}
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 6
BD relationnellesBD relationnelles
Représentation adaptée à des données structurées
a1 b1 c1
AB
C
a2 b2 c2
AB
C
R1
C2 d2
C D
R2R1 R2
C3 d3
C D
R1 A B C
a1 b1 c1
a2 b2 c2
R2 C D
c2 d2
c3 d3
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 7
BD ObjetBD Objet
Notion d'identité d'objet On lie des identificateurs aux structures Un identificateur peut être une valeur
{personne:&01{nom:"Mary", age:45, enfant:&02, enfant:&03},
personne:&02{nom:"John", age:17, famille:{mère:&01, sœur:&03}},
personne:&03{nom:"Jane", pays:"Canada", mère:&01}}
Structure de graphe cyclique avec racine Nœuds du graphe:
Objets complexes dont les valeurs sont des identifiants d'objets, Valeurs atomiques
Structures récursives autorisées
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 8
Fragment du graphe associéFragment du graphe associé
Partage de sous-structures
Présence de cycles
&01 &02 &03
perso
nne
personne
personne
enfant
enfant
nom
nom
nom
age
age
famille
pays
mère soeur
Mary 45 17 CAJohn Jane
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 9
OEM : Object Exchange ModelOEM : Object Exchange Model
Définit pour l'échange de données hétérogènes (projet TSIMMIS) Permet la description de données auto descriptives
objet OEM (label, oid, type, valeur) label : chaîne de caractères, oid : identifiant d'objet, type : atomique (entier, caractère,…) ou complexe
(oid), valeur : atomique ou oid
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 10
Représentation OEMReprésentation OEM
Un OEM est un graphe orienté et ordonné Nœud interne : objet complexe avec identifiant Feuille : objet atomique avec identifiant Etiquette attachés aux nœuds
Variantes de OEM les placent sur les arêtes Références explicites : graphe cyclique
Liste&12
Personne&15
Nom&34
Prénom&3
Personne&23
Bond James
conjoint
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 11
XML et DSS arborescentesXML et DSS arborescentes
Les arbres XML peuvent facilement être convertis en expressions de DSS et réciproquement
XML
<livre année="2002">
<titre> Prélude à fondation</titre>
<auteur>
<nom> Asimov </nom>
<prénom> Isaac </prénom>
</auteur>
<éditeur> Pocket </éditeur>
<prix>6</prix>
</livre>
DSS
{livre:
{année:2002,
titre:Prélude à fondation,
auteur:
{nom:Asimov,
prénom:Isaac},
éditeur:Pocket, prix:6}
}
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 12
Graphes XMLGraphes XML
Structures de graphes grâce aux références à XML On peut attacher des identifiants (id) à des éléments On peut désigner un identifiant avec une référence
(idref) ou plusieurs (idrefs) L'arbre devient un graphe avec des cycles et des
structures récursives comme dans les modèles objet.
<personne id="&01"><nom>Pierre</nom><enfant
idref="&03" /></personne><personne id="&03">
<nom>Jean</nom><parent idrefs="&01 &02" /></personne><personne id="&02">
<nom>Marie</nom><enfant idref="&03" /></personne>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 13
Différence de représentationDifférence de représentation
En XML les nœuds sont nommés <personne id="123">
<nom>Jean</nom><age>25</age>
</personne>
Dans l'approche BD, les arcs sont nommés {personne &123 {nom:'Jean', age:'25'}}
nom age
Jean 25
personne
nom
age
Jean 25
person
n
e
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 14
DTD comme schémas de BDDTD comme schémas de BD
DTD : grammaire "context-free" Peuvent être considérées comme des schémas de BD
Devient en XML
R1 A B C
a1 b1 c1
a2 b2 c2
R2 C D
c2 d2
c3 d3
<bd>
<R1><A>a1</A><B>b1</B><C>c1</C></R1>
<R1><A>a2</A><B>b2</B><C>c2</C></R1>
<R2><C>c2</C><D>d2</D></R2>
<R2><C>c3</C><D>d3</D></R2>
</bd>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 15
Exemple de DTDExemple de DTD
Une DTD possible est :<!DOCTYPE bd [
<!ELEMENT bd (R1+,R2+)><!ELEMENT R1 (A,B,C)><!ELEMENT R2 (C,D)><!ELEMENT A (#PCDATA)><!ELEMENT B (#PCDATA)><!ELEMENT C (#PCDATA)><!ELEMENT D (#PCDATA)> ]>
Pour permettre l'ordre (D,C) : <!ELEMENT R2 ((C,D) | (D,C))>
Pour permettre le mélange des n-upplets de R1 et R2 : <!ELEMENT bd (R1 | R2)+>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 16
Limites des DTDLimites des DTD
Limitations des DTD Pas de notion de type de données (PCDATA
seulement) Pas de possibilité de définition de domaine de valeur
(ex. un age entre 7 et 77 ans)
Avec les schémas, plus de limitations
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 17
XML vs OEM (Oracle Enterprise Manager)XML vs OEM (Oracle Enterprise Manager)
Points communs entre XML et OEM Décrits tous les deux par des graphes Description incluse dans les données Facile de passer de l'un a l'autre
Avantages de XML sur OEM XML est ordonné, pas OEM XML permet de mélanger texte, éléments, images Autres possibilités dans XML (instructions,
commentaires,…)
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 18
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées1.2. Langages de requêtes 1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 19
Langages de requête pour XMLLangages de requête pour XML
Langages destinés à : Extraire des contenus de documents XML Restructurer les résultats
Pas de standards définis
De nombreux langages QUILT, STRUQL, XQL (extension de XSL), TQL XML-QL, XML-GL langage graphique de requête sur
des graphes labelés XML, XSL (Extensible Stylesheet Language)
XQUERY, XSQL, W3QL WebLog, WebSQL
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 20
XQL et QUILTXQL et QUILT
XQL Extension de la syntaxe XPath Sélection et filtrage des nœuds d'un graphe XML Syntaxe simple et compacte mais puissance
expressive réduite
QUILT Unification de concepts Combine l'info de plusieurs sources de données dans
un résultat de requête avec une nouvelle structure propre
Requêtes exprimées sous forme d'expressions
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 21
XQUERY et XSQLXQUERY et XSQL
XQUERY Langage standard développé par le W3C En cours de développement Dérivé de QUILT (principes, syntaxe)
XSQL Approche en extension avec SQL Construit sur l'algèbre relationnelle, nombreuses
fonctionnalités superflues pour un langage de requêtes XML
Fonctionne très bien sur des documents avec une structure relationnelle
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 22
Un standard : XML-QLUn standard : XML-QL
XML-QL Étend le langage SQL Expression de requêtes d'interrogation et de
transformation pour l'intégration de données XML provenant de sources différentes
Spécifie de façon déclarative La sélection de données à partir d'un document XML La création d'un document XML résultat
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 23
XML-QL (1/5)XML-QL (1/5)
Langage destiné à Interroger des structures XML Faire des sous schémas pour l'export (XML format
d'échange) Définir des expressions régulières sur les tags XML Utiliser des variables définies par leur position dans la
requête Structurer des requêtes en formes de patterns:
WHERE …structure XML IN …nom du document XML CONSTRUCT
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 24
XML-QL (2/5)XML-QL (2/5)
Exemple de DTD<!ELEMENT book (author+,title,publisher)>
<!ATTLIST book language CDATA>
<!ELEMENT article (author+,title,year?,(short|long))><!ATTLIST article type CDATA>
<!ELEMENT author (firstname?,lastname)>
<!ELEMENT publisher (name,adresse)>
Requête : Auteurs des livres ayant au moins un nom, un titre édités chez Springer
WHERE
<book language $ln>
<publisher><name>Springer</name></publisher>
<title>$t</title><author>$a</author>
</book>
IN "www.ztu.bib.xml"
CONSTRUCT $a
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 25
XML-QL (3/5)XML-QL (3/5)
Structuration du résultat sous forme XMLWHERE
<book language $ln>
<publisher><name>Springer</name></publisher>
<title>$t</title><author>$a</author>
</book>
IN "www.ztu.bib.xml"
CONSTRUCT<result><author>$a</author><language>$ln</language></result>
Le résultat est une structure XML<result><author>Smith</author><language>English</language>
</result><result><author>Dupond</author><language>Francais</language>
</result>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 26
XML-QL (4/5)XML-QL (4/5)
Conservation de la structure par CONSTRUCT imbriqués Evite l'éclatement des auteurs sur les titres
WHERE
<book>
<publisher><name>Springer</name></publisher>
<title>$t</title>
</book>
CONTENT_AS $p IN "www.ztu.bib.xml"CONSTRUCT
<result>
<title >$t</ title>
WHERE <author >$a</ author> IN $p
CONSTRUCT <author >$a</ author>
</result>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 27
XML-QL (5/5)XML-QL (5/5)
Jointure d'éléments contenant des valeurs communes Ex : articles dont un auteur au moins a écrit un livre en anglais
depuis 1998 Jointure sur nom et prénom par utilisation de variables
WHERE
<article><author>
<firstname>$f</forstname>
<lastname>$l</lastname>
</author></article>
CONTENT_AS $a IN "www.xyz.bib.xml",
<book language=$ln><author>
<firstname>$f</forstname>
<lastname>$l</lastname>
</author></book>
IN "www.xyz.bib.xml", $ln="anglais"
CONSTRUCT <article>$a</article>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 28
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 29
A l'heure actuelleA l'heure actuelle
Des DTD sont normalisées DTD AAP (American Association of Publishing) DTD ATA (Aeronotic Transport Association) DTD CALS (Défense US)
De grandes entreprises françaises définissent leurs DTD EDF, SNCF, …
Vue orientée objet : Hiérarchisation des modèles de documents
Une DTD par entreprise (groupe, metier, …) Notion de spécialisation par les sous-DTD
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 30
Exemples de hiérarchie des DTDExemples de hiérarchie des DTD
Document de l'entreprise
Document Bureautique
Document Technique
Document Financier
Document Administratif
Manuel Maintenance
Rapport d'anomalie
Manuel d'utilisation
Bilan Audit Lettre Contrat Matériel Logiciel
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 31
Difficultés de gestionDifficultés de gestion
Triple dépendance Schéma de la base / DTD Schéma de la base / Instance DTD / Instance
Choix de l'outil d'interrogation Interrogation type SQL Recherche "full-text" Interrogation de données non textuelles (images)
Reconnaissance de formes ?
Navigation hypertexte (en gardant le contrôle – ne pas se perdre)
Recherche et filtrage de l'information Silence (pas d'info pertinente retrouvée) Bruit (info non pertinente fournie à l'utilisateur)
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 32
Choix du stockage (1/3)Choix du stockage (1/3)
Où stocker les DTD et les instances ?
Dans un SGBD Orienté Objet Avantages
Conceptuellement assez bien adaptés Inconvénients
Trop hiérarchique Peu performants Pas assez fiable Chers Démodés Nécessité pour l'entreprise de maintenir 2 types de SGBD
– Relationnel– Objet
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 33
Choix du stockage (2/3)Choix du stockage (2/3)
Dans un SGBD semi-structuré Avantages
Très bien adaptés conceptuellement– Structure en graphe– Stockage d'une partie du modèle comme des données– Conçus en particulier pour les hyperdocuments XML
Inconvénients Peu performants Chers Peu fiable Nécessité pour l'entreprise de maintenir 2 types de SGBD
– Relationnel– Semi-structuré
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 34
Choix du stockage (3/3)Choix du stockage (3/3)
Dans un SGBD relationnel Avantages
Puissants et fiables L'entreprise en possède déjà au moins un Moins cher que les autres Facilité pour établir des liaisons avec les BD du SI de
l'entreprise Inconvénients
Modèle pauvre– Contraintes d'intégrité– Trigger, …
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 35
Les SGBD RelationnelsLes SGBD Relationnels
2 approches Relationnelle classique
Données extraites des fichiers XML puis stockées dans une BD classique
XML-native Documents XML stockés dans leur intégrité et gérés par le
SGBD
Choix du stockage Bases centrées données
XML est un support, la donnée est importante stockage relationnel avec middleware de transformation en
XML
Bases centrés documents Importance du contenu stockage natif XML
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 36
Solution relationnelle classiqueSolution relationnelle classique
Caractéristiques : Données extraites du fichier XML puis stockées dans
une BD Données gérées par un SGBD classique, et
accessibles par des requêtes SQL Document XML non conservé (reconstituable)
Avantages (ceux des SGBD) Contrôle d'intégrité, index Stockage des procédures
Inconvénients Document XML extrait de la base différant de l'original Le document doit être valide pour que les données
soient insérées
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 37
Solution XML-nativeSolution XML-native
Caractéristiques : Document XML stocké dans son intégrité Le SGBD gère la façon dont sont stockées les
documents Accès aux données par requêtes XPath, XSQL, … Données retournées sous forme de documents XML
Avantages (ceux des SGBD) Document XML extrait de la base identique à l'original Rapidité d'extraction
Inconvénients Accès indirect aux données. Passage par le document
XML
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 38
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 39
Interrogation de documents XMLInterrogation de documents XML
Comment interroger des documents XML ?
Solutions :
SQL : il faut stocker XML dans une BD relationnel
Expressions XPath : extraction de fragments
Règles XSLT : extraction + transformation (règles)
Langage de requêtes pour XML XQuery
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 40
Historique des langages de requêtes pour XMLHistorique des langages de requêtes pour XML
Langages de requêtes pour données semi-structurées POQL de l’INRIA (1996), UnQL de Penn. Univ. (1996), Lorel de Stanford Univ. (1997)
1998 : Workshop Query Languages’98 (QL’98)
Langages de requêtes pour XML: XOQL (Xyleme), XML-QL, XQL, Lore, ...
XQuery : W3C Working Draft 02 May 2003
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 41
Chapitre 5 : XQuery et les BDChapitre 5 : XQuery et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQuery2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 42
XQuery : définitionXQuery : définition
XQuery : sur-ensemble de SQL avec des extensions de fonctionnalités pour supporter des opérations similaires sur les forêts (collections d’arbres). Projections d’arbres sur des sous-arbres, Sélections d’arbres et de sous-arbres en utilisant des
prédicats sur les valeurs des feuilles, Utilisation de variables dans les requêtes pour
mémoriser un arbre ou pour itérer sur des collections d’arbres,
Combinaison des arbres extraits en utilisant des jointures d’arbres,
Ré-ordonnancement des arbres, Imbrication de requêtes, Calculs d’agrégats Utilisation possible de fonctions définies par l'utilisateur
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 43
Le modèle de données de XQueryLe modèle de données de XQuery
Requête composée d'expressions (simples et complexes) associées à des opérateurs et à des fonctions.
Une expression a une valeur ou retourne une erreur.
Une valeur est une séquence ordonnée d’items,
Un item est un nœud ou une valeur atomique (feuille) de l'arbre XML.
Chaque nœud et chaque valeur est typé.
item
noeud valeur atomique item
valeur
*
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 44
Règles sur les valeurs et séquencesRègles sur les valeurs et séquences
Ces séquences répondent à certaines règles : Une séquence peut être vide Les séquences sont triées :
(1,5) n'est pas (5,1). Une séquence de longueur 1correspond à un item :
12 = (12) Une séquence peut contenir des valeurs hétérogènes :
(1, ‘‘titi’, <noeud/>) On ne peut pas trouver de séquences imbriquées :
(1, ("titi","toto"), 5) = (1,titi,toto,5)
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 45
Valeurs des expressionsValeurs des expressions
Expressions (requêtes) simples : Valeurs atomiques
1, ‘‘titi’’ Valeurs construites
true(), date(‘‘2002-10-23’’)
Expressions complexes : Chemins XPath
//examen/note[@num=$a]/text()
Expressions FLWR (for-let-where-return)
Expressions conditionnelles (if-then-else)
Constructeurs.
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 46
Chapitre 5 : XQuery et les BDChapitre 5 : XQuery et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQuery 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 47
Expression de chemins XPathExpression de chemins XPath
Expression de chemin avec XPath Désigne le type et l'adresse des nœuds recherchés.
Ex: Une requête qui permet très simplement de renvoyer tous les nœuds auteur du document biblio.xml. Aucune mise en forme n'étant pratiquée, les nœuds
renvoyés le sont avec leurs balises et leur contenu tel qu'il s'exprime dans le document.
document("biblio.xml")//auteur
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 48
Expressions FLWRExpressions FLWR
Expressions FLWR proches des mécanismes utilisés dans les requêtes de type SQL.
4 clauses possibles : for, let, where et return for $var in exp
Affecte la variable $var successivement avec chaque item dans la séquence retournée par exp.
let $var := exp Affecte la variable $var avec la séquence “entière” retournée
par exp.
where exp Permet de filtrer le résultat par rapport au résultat booléen de
l’expression exp (= prédicat dans l’expression de chemin). return
Permet de générer le résultat de l'expression.
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 49
Exemples de requêtes FLWRExemples de requêtes FLWR
Ex1 : requête FLWR qui permet d'affecter la variable $b successivement avec le contenu des nœuds livre du document biblio.xml (clause for) et d'affecter $a avec l'ensemble des nœuds auteur contenus dans chaque itération de $b (clause let).
for $b in document("biblio.xml")//livrelet $a := $b/auteurreturn <livre nb_auteurs="{count($a)}"> { $a } </livre>
Ex2 : requête FLWR pour extraire le titre des livres dont le
premier nœud fils auteur contient comme valeur de nom Asimov.
for $a in document("biblio.xml")//livrewhere $a/auteur[1]/nom eq "Asimov"return $a/titre
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 50
Expressions conditionnellesExpressions conditionnelles
Structure if - then - else if : teste une condition. then : opération en cas de réponse positive au test. else : opération en cas de réponse négative au test.
Ex : Requête qui va tester pour chaque élément livre de biblio.xml si la valeur de son attribut année est supérieure à 2000 et renvoyer
la valeur 'récent' si c'est la cas et 'ancien' sinon.for $b in document("biblio.xml")//livreReturnif ($b/@année > 2000)then 'récent'else 'ancien'
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 51
Constructeurs de nœuds XML (1/2)Constructeurs de nœuds XML (1/2)
Résultat peut contenir éléments prédéfinis et expressions à évaluer. Construction d'une structure XML autour d'un résultat
évaluée. lors de l'exécution de la requête
Structure xml recopiée, Partie située entre accolades { } calculée.
Ex : Contexte défini "manuellement" et contenu calculé.
<auteurs>
{ document("biblio.xml")//livre[2]/auteur/nom }
</auteurs> Construction d'un élément auteurs pour encadrer la partie
calculée de la requête. Partie calculée (entre accolades) renvoie les nœuds nom de
l'élément livre parcouru en deuxième position dans le document biblio.xml.
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 52
Constructeurs de nœuds XML (2/2)Constructeurs de nœuds XML (2/2)
Contexte calculé : construction d'éléments et d'attributs element { expr-nom } { expr-contenu } attribute { expr-nom } { expr-contenu } expr-nom : chemin pour calculer le nom de l'élément expr-contenu : contenu du nouvel élément (a évaluer)
Ex : Création d'un élément dans lequel le nom et le contenu sont calculés :
element { document("biblio.xml")//livre[1]/name(*[1]) }
{attribute
{ document("biblio.xml")//livre[1]/name(*[3]) }
{ document("biblio.xml")//livre[1]/*[3] }
}
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 53
Chapitre 5 : XQuery et les BDChapitre 5 : XQuery et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQuery 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery
2.1.2. Fonctions et opérateurs 2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 54
FonctionsFonctions
Fonctions et opérateurs prédéfinis : XQuery 1.0 Functions and Operators XPath 2.0 Functions and Operators
Fonctions racines (permettant l'accès au document xml) : input, collection(\url00), doc(\url00), …
Fonctions utilisateurs Définition de fonctions personnelles Ex : Fonction qui permet de renvoyer le nombre de fils auteur d'un élément. Le résultat est typé xsd:integer.
define function NombreAuteurs(livre $b)returns xsd:integer { return count($b/auteur) }
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 55
OpérateursOpérateurs
Opérateurs permettent d'effectuer les traitements courants sur les valeurs, séquences et nœuds. Arithmétiques :
Opérateurs courants (+, -, mod, …) De manipulation de séquences :
Concaténation, union, intersection, différence De comparaison pour valeurs atomiques, nœuds et
séquences Booléens
and, or, not
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 56
Séquences et valeurs typéesSéquences et valeurs typées
Fonctions et opérateurs sont typés et manipulent des Types mathématiques (entiers, …) Chaînes de caractères, Dates, Expressions régulières, …
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 57
SynthèseSynthèse
En synthèse, il faut retenir que les fonctions et opérateurs XQuery permettent : L'accès au type et au nom d’un nœud, La construction, la comparaison et la transformation de
valeurs, L’agrégation des valeurs d’une séquence, La manipulation des chaînes de caractères, La conversion de types
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 58
Résumé Syntaxique de XQueryRésumé Syntaxique de XQuery
Type d'expression Syntaxe
Séquence expression, …
Variable $a, $variable
Constante 'titi', 100
Numérique +, -, *, div, idiv, mod
Comparaison générale =, !=, <=, >=
Comparaison de valeurs eq, ne, lt, le, gt, ge
Comparaison de nœuds is, isnot
Comparaison d’ordre << >>
Logique and, or
Conditionnelle if, then, else
Quantitative some/every $variable in expr1 satisfies expr2
Ensemble union, intersect, except
FLWR for, let, where, return
Validation validate {expr1}
Chemin $variable/livre[@année=’2005’]/auteur
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 59
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 60
document exemple : biblio.xml document exemple : biblio.xml <bibliothèque>
<livre année="2002">
<titre> Prélude à fondation </titre>
<auteur><nom> Asimov </nom><prénom> Isaac </prénom></auteur>
<éditeur> Pocket </éditeur>
<prix>6</prix>
</livre>
<livre année="1995">
<titre> La marche des millénaires </titre>
<auteur><nom> Asimov </nom><prénom> Isaac </prénom></auteur>
<auteur><nom> White </nom><prénom> Frank </prénom></auteur>
<éditeur> Flammarion </éditeur>
<prix>8.45</prix>
</livre>
<livre année="2005">
<titre> Avant Dune </titre>
<auteur><nom> Anderson </nom>
<prénom> Kevin J. </prénom></auteur>
<auteur><nom> Herbert </nom><prénom> Brian </prénom></auteur>
<éditeur> Pocket </éditeur>
<prix>12.3</prix>
</livre>
</bibliothèque>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 61
Différence de séquences de nœudsDifférence de séquences de nœuds Différences et des concaténations de nœuds
Différence avec l'opérateur except Exclusion de la recherche d'un type de nœud.
Ex : Construction d'un noeud <livre> avec tous les éléments du premier nœud livre du document source sauf les nœuds auteur.
Requête
<livre> Tous les sous-éléments sauf les auteurs:
{ document("biblio.xml")//livre[1]/(* except auteur) }
</livre>
Résultat
<livre> Tous les sous-éléments sauf les auteurs:
<titre> Prélude à fondation </titre>
<éditeur> Pocket </éditeur>
<prix>6</prix>
</livre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 62
Concaténation de séquences de nœudsConcaténation de séquences de nœuds Concaténation avec la syntaxe (noeud1,noeud2)
Renvoie les noeud1 puis les noeud2 du doc source.
Ex : Concaténation dans le document résultat des éléments prix et auteur du document source. ≠ union de nœuds (ordre des éléments ≠ dans les 2 documents)
Requête
<livre> Le prix suivi des auteurs:
{ document("biblio.xml")//livre[2]/(prix,auteur) }
</livre>
Résultat
<livre> Le prix suivi des auteurs:
<prix>8.45</prix><auteur><nom> Asimov </nom>
<prénom> Isaac </prénom></auteur><auteur><nom> White </nom>
<prénom> Frank </prénom></auteur>
</livre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 63
Comparaison de valeurs atomiquesComparaison de valeurs atomiques
Opérateurs eq, ne, lt, le, gt, ge
Ex : Extraction des nœuds auteur dont le fils nom vaut "White".
Attention, cette comparaison n'est possible que si les deux protagonistes sont de type atomique. La requête
document("biblio.xml")//livre[auteur/nom eq "White"] renverra une erreur car auteur/nom renvoie une séquence de valeurs.
Requête
document("biblio.xml")//livre/auteur[nom eq "White"]
Résultat
<auteur><nom> White </nom><prénom> Frank </prénom></auteur>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 64
Comparaison de séquencesComparaison de séquences
Opérateurs =, !=, <=, >= S1 = s2 s’il existe au moins un élément dans s1 qui est
égal à un élément dans s2
Ex : Comptage du nombre d'éléments livre dont les fils nom contiennent au moins un des 2 noms Herbert ou White.
Requête
count(document("biblio.xml")//livre[auteur/nom = ("Herbert", "White")])
Résultat
2
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 65
Comparaisons de noeudsComparaisons de noeuds
Comparaison d'identité avec l'opérateur is, isnot n1 is n2 signifie que n1 est identique à n2.
Ex : Extraction des nœuds livre qui ont exactement 2 fils auteur.
Requête
document("biblio.xml")//livre[auteur[2] is auteur[last()]]
Résultat
<livre année="1995">
<titre> La marche des millénaires </titre> […]
</livre>
<livre année="2005">
<titre> Avant Dune </titre> […]
</livre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 66
Comparaisons par la positionComparaisons par la position
Opérateurs << et >> n1 << n2 signifie que n1 apparaît avant n2 dans le
document. n1 >> n2 signifie que n1 apparaît après n2 dans le
document.
Ex : Extraction du fils titre des éléments livre dans lesquels la valeur "Asimov" apparaît avant la valeur "White".
Requête
document("biblio.xml")//livre[auteur[nom="Asimov"] << auteur[nom="White"]]/titre
Résultat
<titre> La marche des millénaires </titre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 67
Fonction de TriFonction de Tri
Expr1 sort by Expr2 (ascending | descending)
Trie les éléments de la séquence retournée par l’expression Expr1 par les valeurs retournées par Expr2.
Ex: Extraction du fils titre et l'attribut année de tous les nœuds livre du document ordonnée par rapport à la valeur de année.
Requête
<livres>{ for $b in document("biblio.xml")//livre
return <livre> { $b/titre, $b/@année } </livre>
sort by(@année) }
</livres>
Résultat<livres> <livre année="2005"><titre> Avant Dune </titre></livre>
<livre année="2002"><titre> Prélude à fondation </titre></livre>
<livre année="1995"><titre> La marche des millénaires </titre></livre>
</livres>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 68
Fonctions de QuantificationFonctions de Quantification some $var in expr1 satisfies expr2
Il existe au moins un nœud retourné par l’expression expr1 qui satisfait l’expression expr2.
every $var in expr1 satisfies expr2 Tous les nœuds retournés par l’expression expr1
satisfont l’expression expr2.
Ex : Extraction des seuls éléments nom dont tous les ancêtres livre ont un fils éditeur qui a pour valeur "Pocket".
Requête
for $a in document("biblio.xml")//auteur
where every $b in document("biblio.xml")//livre
[auteur/nom = $a/nom]
satisfies $b/éditeur=" Pocket "
return string($a/nom)
Résultat
"Anderson, Herbert "
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 69
Jointure entre fichiers (1/2)Jointure entre fichiers (1/2)
Pas de fonction prédéfinie mais mécanisme simple.
Soit un autre fichier ISBN.xml qui contient des titres de livres et les codes ISBN correspondant à ces ouvrages.
Ex : Création d'un document résultat contenant pour chaque livre à la fois son titre, sa référence ISBN et le nom de ses auteurs.
<ISBN>
<ouvrage>
<titre> Prélude à fondation </titre>
<ref>2-266-15253-X </ref>
</ouvrage>
[…]
</ISBN>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 70
Jointure entre fichiers (2/2)Jointure entre fichiers (2/2)
Construction élément livre avec attributs titre et ISBN Valeurs des nœuds titre et ref de ISBN.xml.
Construction fils auteur avec un attribut nom Valeur : jointure des titre de biblio.xml et ISBN.xml
Requête
for $a in document("ISBN.xml")//ouvrage
return element livre {
attribute titre {$a/titre}, attribute ISBN {$a/ref} ,
for $b in document("biblio.xml")//livre
where $a/titre = $b/titre
return element auteur { attribute nom {$b/auteur/nom} }}
Extrait du résultat
<livre titre=" Prélude à fondation " ISBN="2-266-15253-X ">
<auteur nom="Asimov" />
</livre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 71
Exemples de fonctionsExemples de fonctions
Transformation nœud -> valeur : xf:string()
Index : index-of()
Requête
"Le titre du premier livre est",document("biblio.xml")//livre[1]/xf:string(titre)
Résultat
Le titre du premier livre est Prélude à fondation
Requête
let $bl := document("biblio.xml")//livre
for $b in $bl
return {$b/title {attribute no {index-of($bl, $b)}}}
Résultat
<titre no="1"> Prélude à fondation </titre>
<titre no="2"> La marche des millénaires </titre>
<titre no="3" > Avant Dune </titre>
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 72
Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD
1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
2. XQUERY 2.1. Syntaxe XQuery
2.1.1. Expressions XQuery 2.1.2. Fonctions et opérateurs
2.2. Usages et exemples de fonctions
En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 73
Pour le TP : GalaxPour le TP : Galax
Le logiciel Galax est une implantation de XQuery développé par les laboratoires Bell Labs et AT&T.
Requêtes stockées dans des fichiers xxx.xq qui sont passés comme argument à l'interpréteur galax (sous une invite dos) galax exemple1.xq
Pour envoyer le résultat produit par l'exécution de la requête dans un fichier xml, il faut utiliser l'option -output-xml. galax exemple1.xq -output-xml toto.xml
Liste des options de la commande : galax –help
Documentation sur le site de Galax pour plus de détails http://www.cise.ufl.edu/research/mobility/
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 74
Pour en savoir plus...Pour en savoir plus...
Site du W3C sur XQuery : http://www.w3.org/XML/Query
P. Wadler, XQuery : a typed functional language for querying XML
J. Siméon et P. Wadler, The Essence of XML
Galax : http://www.galaxquery.org/