ACCARY-BARBIER / CNAM - Cycle C ème partie : Gestion de contenus Web CHAPITRE 1 : XML Dynamique CHAPITRE 2 : XQUERY et les BD CHAPITRE 3 : Web sémantique et ontologies
ACCARY-BARBIER / CNAM - Cycle C 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Données Semi-structurées Généralités Données sans schéma ou auto descriptives Associations de paire ex : {nom:"Toto", tel:81212, Représentation : arcs labelés nom tel Toto 81212
ACCARY-BARBIER / CNAM - Cycle C Structures imbriquées Valeurs peuvent être d'autres structures {nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212, nom tel prénom patronyme Thomas Toto
ACCARY-BARBIER / CNAM - Cycle C Syntaxe 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, {personne:{nom:{prénom:"Sophie", patronyme:"Soso"}, tel:82222, De structure voisine {personne:{nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212, {personne:{nom:{patronyme:"Soso"}, tel:81212,
ACCARY-BARBIER / CNAM - Cycle C BD relationnelles Représentation adaptée à des données structurées a1 b1 c1 A B C a2 b2 c2 A B C R1 C2 d2 C D R2 R1 R2 C3 d3 C D R1ABC a1b1c1 a2b2c2 R2CD c2d2 c3d3
ACCARY-BARBIER / CNAM - Cycle C BD 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 Fragment du graphe associé Partage de sous-structures Présence de cycles &01&02&03 personne enfant nom age famille pays mère soeur Mary CA John Jane
ACCARY-BARBIER / CNAM - Cycle C OEM : 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 Repré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 XML et DSS arborescentes Les arbres XML peuvent facilement être convertis en expressions de DSS et réciproquement XML Prélude à fondation Asimov Isaac Pocket 6 DSS {livre: {année:2002, titre:Prélude à fondation, auteur: {nom:Asimov, prénom:Isaac}, éditeur:Pocket, prix:6} }
ACCARY-BARBIER / CNAM - Cycle C Graphes 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. Pierre Jean Marie
ACCARY-BARBIER / CNAM - Cycle C Différence de représentation En XML les nœuds sont nommés Jean 25 Dans l'approche BD, les arcs sont nommés {personne &123 {nom:'Jean', age:'25'}} nomage Jean25 personne nom age Jean25 personne
ACCARY-BARBIER / CNAM - Cycle C DTD comme schémas de BD DTD : grammaire "context-free" Peuvent être considérées comme des schémas de BD Devient en XML R1ABC a1b1c1 a2b2c2 R2CD c2d2 c3d3 a1 b1 c1 a2 b2 c2 c2 d2 c3 d3
ACCARY-BARBIER / CNAM - Cycle C Exemple de DTD Une DTD possible est : <!DOCTYPE bd [ ]> Pour permettre l'ordre (D,C) : Pour permettre le mélange des n-upplets de R1 et R2 :
ACCARY-BARBIER / CNAM - Cycle C Limites 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 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 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Langages 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 XQL 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 XQUERY 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 Un 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 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 XML-QL (2/5) Exemple de DTD Requête : Auteurs des livres ayant au moins un nom, un titre édités chez Springer WHERE Springer $t $a IN " CONSTRUCT $a
ACCARY-BARBIER / CNAM - Cycle C XML-QL (3/5) Structuration du résultat sous forme XML WHERE Springer $t $a IN " CONSTRUCT $a $ln Le résultat est une structure XML Smith English Dupond Francais
ACCARY-BARBIER / CNAM - Cycle C XML-QL (4/5) Conservation de la structure par CONSTRUCT imbriqués Evite l'éclatement des auteurs sur les titres WHERE Springer $t CONTENT_AS $p IN " CONSTRUCT $t WHERE $a IN $p CONSTRUCT $a
ACCARY-BARBIER / CNAM - Cycle C 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 $f $l CONTENT_AS $a IN " $f $l IN " $ln="anglais" CONSTRUCT $a
ACCARY-BARBIER / CNAM - Cycle C 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C A 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 Exemples 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 BilanAuditLettreContratMatérielLogiciel
ACCARY-BARBIER / CNAM - Cycle C Difficulté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 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 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 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 Les 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 Solution 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 Solution 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 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Interrogation 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 Historique 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 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 2. XQuery 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C XQuery : 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 Le 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 noeudvaleur atomique item valeur *
ACCARY-BARBIER / CNAM - Cycle C Rè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’, ) On ne peut pas trouver de séquences imbriquées : (1, ("titi","toto"), 5) = (1,titi,toto,5)
ACCARY-BARBIER / CNAM - Cycle C Valeurs des expressions Expressions (requêtes) simples : Valeurs atomiques 1, ‘‘titi’’ Valeurs construites true(), date(‘‘ ’’) Expressions complexes : Chemins XPath Expressions FLWR (for-let-where-return) Expressions conditionnelles (if-then-else) Constructeurs.
ACCARY-BARBIER / CNAM - Cycle C 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 2. XQuery 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Expression 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 Expressions 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 Exemples 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")//livre let $a := $b/auteur return { $a } 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")//livre where $a/auteur[1]/nom eq "Asimov" return $a/titre
ACCARY-BARBIER / CNAM - Cycle C Expressions 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")//livre Return if > 2000) then 'récent' else 'ancien'
ACCARY-BARBIER / CNAM - Cycle C 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é. { document("biblio.xml")//livre[2]/auteur/nom } 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 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 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 2. XQuery 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Fonctions 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 Opé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 Sé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 Synthè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 Résumé Syntaxique de XQuery Type d'expressionSyntaxe Séquenceexpression, … Variable$a, $variable Constante'titi', 100 Numérique+, -, *, div, idiv, mod Comparaison générale=, !=, = Comparaison de valeurseq, ne, lt, le, gt, ge Comparaison de nœudsis, isnot Comparaison d’ordre > Logiqueand, or Conditionnelleif, then, else Quantitativesome/every $variable in expr1 satisfies expr2 Ensembleunion, intersect, except FLWRfor, let, where, return Validationvalidate {expr1}
ACCARY-BARBIER / CNAM - Cycle C 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C document exemple : biblio.xml Prélude à fondation Asimov Isaac Pocket 6 La marche des millénaires Asimov Isaac White Frank Flammarion 8.45 Avant Dune Anderson Kevin J. Herbert Brian Pocket 12.3
ACCARY-BARBIER / CNAM - Cycle C Diffé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 avec tous les éléments du premier nœud livre du document source sauf les nœuds auteur. Requête Tous les sous-éléments sauf les auteurs: { document("biblio.xml")//livre[1]/(* except auteur) } Résultat Tous les sous-éléments sauf les auteurs: Prélude à fondation Pocket 6
ACCARY-BARBIER / CNAM - Cycle C Concaté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 Le prix suivi des auteurs: { document("biblio.xml")//livre[2]/(prix,auteur) } Résultat Le prix suivi des auteurs: 8.45 Asimov Isaac White Frank
ACCARY-BARBIER / CNAM - Cycle C Comparaison 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 White Frank
ACCARY-BARBIER / CNAM - Cycle C Comparaison 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 Comparaisons 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 La marche des millénaires […] Avant Dune […]
ACCARY-BARBIER / CNAM - Cycle C Comparaisons par la position Opérateurs > 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 La marche des millénaires
ACCARY-BARBIER / CNAM - Cycle C Fonction 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 { for $b in document("biblio.xml")//livre return { $b/titre, } sort } Résultat Avant Dune Prélude à fondation La marche des millénaires
ACCARY-BARBIER / CNAM - Cycle C Fonctions 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 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. Prélude à fondation X […]
ACCARY-BARBIER / CNAM - Cycle C 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
ACCARY-BARBIER / CNAM - Cycle C Exemples 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 Prélude à fondation La marche des millénaires Avant Dune
ACCARY-BARBIER / CNAM - Cycle C 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 2. XQUERY 2.1. Syntaxe XQuery Expressions XQuery Fonctions et opérateurs 2.2. Usages et exemples de fonctions En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Pour 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
ACCARY-BARBIER / CNAM - Cycle C Pour en savoir plus... Site du W3C sur XQuery : P. Wadler, XQuery : a typed functional language for querying XML J. Siméon et P. Wadler, The Essence of XML Galax :