Interrogation de documents XML. Interrogation XML. XQuery. Comment interroger des documents XML?



Documents pareils
Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

BASE DE DONNÉES XML NATIVE

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

BASE DE DONNÉES XML NATIVE

Bases de données avancées Introduction

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

NFE204 Bases de données avancées

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le langage SQL Rappels

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Les bases de données

Langage SQL : créer et interroger une base

XML et Bases de données. Les bases de données XML natives.

Cours Bases de données

Le Langage SQL version Oracle

XML et recherche d information

BD et XML : Exercices

Master d Informatique Corrigé du partiel novembre 2010

Information utiles. webpage : Google+ : digiusto/

OCL - Object Constraint Language

SQL Parser XML Xquery : Approche de détection des injections SQL

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Bases de données et sites WEB Licence d informatique LI345

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

1 Introduction et installation

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Évaluation et optimisation de requêtes

Document Object Model (DOM)

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de données élémentaires Maude Manouvrier

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

BUSINESS INTELLIGENCE

TD n 10 : Ma première Base de Données

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Les structures de données. Rajae El Ouazzani

Introduction au Système de Gestion de Base de Données et aux Base de Données

Présentation du langage et premières fonctions

Bases de données relationnelles

16H Cours / 18H TD / 20H TP

STAGE IREM 0- Premiers pas en Python

Sécurité des applications web. Daniel Boteanu

SQL Historique

données en connaissance et en actions?

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données documentaires et distribuées Cours NFE04

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

INTRODUCTION AU DATA MINING

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Gestion de données incertaines et de leur provenance

Table des matières. Avant-propos

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

INTRODUCTION : Données structurées et accès simplifié

Architectures d'intégration de données

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Business Intelligence avec Excel, Power BI et Office 365

Optimisation SQL. Quelques règles de bases

Cours de Génie Logiciel

Bases de Données NoSQL

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Bases de programmation. Cours 5. Structurer les données

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Master I Génie Logiciel

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

4. SERVICES WEB REST 46

Arbres binaires de recherche

Données semi-structurées Actives

Programmation des Applications Réparties. Parsers XML DOM et SAX

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

A QUOI SERVENT LES BASES DE DONNÉES?

Méthodologie de conceptualisation BI

Gestion des bases de données

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Paginer les données côté serveur, mettre en cache côté client

UE 8 Systèmes d information de gestion Le programme

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Bases de données - Modèle relationnel

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Perl Orienté Objet BioPerl There is more than one way to do it


Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Transcription:

1 3 Interrogation de documents XML Interrogation XML Valeur C - Module Données et Services sur le Web Bernd Amann 2003/04 Comment interroger des documents XML? XPath : extraction de fragments d arbres par des expressions de chemins SQL : il faut transformer le document XML en relations SQL + XPath : on stocke les documents sous forme d attributs de type XML et on manipule deux langages d interrogation XSLT : un programme XSLT crée une copie transformée d un document; le langage n est pas conçu pour le traitement de grands volumes de données; XQuery : vrai langage de requêtes pour l interrogration de grands ensembles de documents XML 2 4 Interrogation de documents XML XQuery

5 7 Langages de requêtes pour XML Expressions XQuery Des langages semi-structurées vers le langage XQuery : 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 est un langage fonctionnel (typé) : Une requête XQuery est une composition d expressions. Chaque expression retourne une valeur (ou une erreur). Les expressions n ont pas d effets de bord (mises-à-jour). Remarque : XQuery est très proche du langage OQL par son approche fonctionnel. XQuery : W3C Working Draft 02 May 2003 6 8 La place de XQuery dans le monde XML Expressions simples Modèles et Langages: Groupes de travail: Expressions (requêtes) simples : XML Schema XQuery XPath XML Schema XQuery XPath 2.0 XSLT Valeurs atomiques: 46 est une requête qui retourne l entier 46 Salut est une requête qui retourne la chaîne de caractères Salut. (Don Chamberlin) Valeurs construites par une fonction: true() retourne la valeur booléene true date( 2002-10-23 ) retourne une date

9 11 Expressions Complexes Séquences Expressions de chemins (XPath 2.0) Expressions FLWR (For-Let-Where-Return) : définition de variables Tests (If-Then-Return-Else-Return) Fonctions Racines :,, Fonctions prédéfinies : XQuery 1.0 and XPath 2.0 Functions and Operators Fonctions utilisateurs XQuery ne fait pas de distinction entre un item et une séquence de longueur 1 : 47 = (47) Une séquence peut contenir des valeurs hétérogènes : (1, toto, <toto/>) On ne peut pas construire des séquences imbriquées : (1, (2, 6), "toto", <toto/>) = (1, 2, 6, toto, <toto/>) Une séquence peut être vide : () Les séquences sont triées : (1,2) (2,1). 10 12 Le modèle de données de XQuery Opérations dans XQuery XQuery a son propre modèle de données (différent de DOM) : Une valeur est une séquence ordonnée (liste) d items. Opérateurs arithmétiques: 1+2, 3.4-6.5, $y mod 2 Un item est un noeud (DOM) ou une valeur atomique. Chaque noeud et chaque valeur a un type (XML Schema). Opérations sur les séquences : concaténation : l expression retourne la valeur noeud item valeur atomique valeur Le résultat d une requête XQuery est une valeur qui peut être transformée en séquence de fragments XML. * item union, intersection, différence... Opérateurs de comparaison pour valeurs atomiques, noeuds et séquences Opérateurs booléens: $x=2 and $y=4 or not($z) ($x, $y, $z sont des variables)

13 15 DTD Exemple: bib.dtd Expressions de chemins <!ELEMENT bib (book*) > <!ELEMENT book ((author)+, publisher, price) > <!ATTLIST book year CDATA #IMPLIED title CDATA #REQUIRED> <!ELEMENT author (la, fi )> <!ELEMENT la (#PCDATA )> <!ELEMENT fi (#PCDATA )> <!ELEMENT publisher (#PCDATA)> <!ELEMENT price (#PCDATA)> document("bib.xml")//author <author><la>amann</la><fi>b.</fi></author>, <author><la>rigaux</la><fi>p.</fi></author>, <author><la>rigaux</la><fi>p.</fi></author>, <author><la>scholl</la><fi>m.</fi></author>, <author><la>voisard</la><fi>a.</fi></author>, <author><la>abiteboul</la><fi>s.</fi></author>, <author><la>buneman</la><fi>p.</fi></author>, <author><la>suciu</la><fi>d.</fi></author> Le résultat est une séquence de noeuds XML! 14 16 Document Exemple: bib.xml <bib> <book title="comprendre XSLT"> <author><la>amann</la><fi>b.</fi></author> <author><la>rigaux</la><fi>p.</fi></author> <publisher>o Reilly</publisher> <price>28.95</price> </book> <book year="2001" title="spatial Databases"> <author><la>rigaux</la><fi>p.</fi></author> <author><la>scholl</la><fi>m.</fi></author> <author><la>voisard</la><fi>a.</fi></author> <publisher>morgan Kaufmann Publishers</publisher> <price>35.00</price> </book> <book year="2000" title="data on the Web"> <author><la>abiteboul</la><fi>s.</fi></author> <author><la>buneman</la><fi>p.</fi></author> <author><la>suciu</la><fi>d.</fi></author> <publisher>morgan Kaufmann Publishers</publisher> <price>39.95</price> </book> </bib> Expressions de chemins XPath 1.0 et XPath 2.0 XPath 1.0 : une expression de chemin est une suite d étapes séparées par / une étape est composé d un axe, d un filtre et d une séquence de prédicats XPath 2.0 (fonctionnel) : une expression de chemin est une suite d expressions d étapes une expression d étape est soit une étape XPath 1.0 (composé d un axe, filtre et de prédicats) ou une expression XQuery (simplifié)

17 19 Expressions de chemins : exemples Construction de noeuds XML doc( bib.xml )/bib//book[1]/publisher doc( bib.xml )//(book union author union publisher) : tous les livres, auteurs et editeurs doc( bib.xml )//book/(* except price) : pour chaque livre tous les éléments fils sauf le prix. doc( bib.xml )//book[every $a in author satisfies contains($a/la, a )] : tous les livres dont tous les auteurs ont la lettre a dans leur nom. Le nom et le contenu sont calculés: element { expr-nom } { expr-contenu } attribute { expr-nom } { expr-contenu } element { document("bib.xml")//book[1]/name(@*[1]) } { attribute { document("bib.xml")//book[1]/name(*[3]) } { document("bib.xml")//book[1]/*[3] } } <title publisher="o Reilly"/> 18 20 Construction de noeuds XML Différence de séquences de noeuds Le nom est connu, le contenu est calculé par une expression expr <auteurs> { document("bib.xml")//book[2]/author/la } </auteurs> <?xml version="1.0"?> <auteurs> <la>rigaux</la> <la>scholl</la> <la>voisard</la> </auteurs> Tous les sous-elements sauf les auteurs: { document("bib.xml")//book[1]/(* except author) } Tous les sous-elements sauf les auteurs: <publisher>o Reilly</publisher> <price>28.95</price> La requête fait partie d un document XML fragment XML! le résultat est transformé en

21 23 Concaténation de séquences Comparaison de valeurs atomiques : eq Le prix suivi des auteurs: { document("bib.xml")//book[1]/(price,author) } Le prix suivi des auteurs: <price>28.95</price> <author><la>amann</la><fi>b.</fi></author> <author><la>rigaux</la><fi>p.</fi></author> On a changé l ordre des noeuds ( union) document("bib.xml")//book/author[la eq "Scholl"] <author><la>scholl</la><fi>m.</fi></author> document("bib.xml")//book[author/la eq "Scholl"] ERROR On obtient une erreur car l expression author/la (dans le prédicat) retourne une séquence de longueur! 22 24 Transformation noeud valeur Comparaison de séquences : = "Les auteurs du premier livre sont", document("bib.xml")//book[1]/author/xf:string(la) Les auteurs du premier livre sont, Amann, Rigaux (xf:string est une fonction prédéfinie). Comparaison de séquences : = s il existe au moins un élément dans qui est égal à un élément dans (quantification existentielle). count(document("bib.xml")//book[author/la = ("Scholl", "Rigaux", "Abiteboul")]) 3

25 27 Comparaisons de noeuds (identité) : is Itération : for Comparaison de l identité de deux noeuds : is est identique à. document("bib.xml")//book[author[2] is author[last()]] <book title="comprendre XSLT"> <author><la>amann</la><fi>b.</fi></author> <author><la>rigaux</la><fi>p.</fi></author> <publisher>o Reilly</publisher> <price>28.95</price> </book> La clause for $var in exp affecte la variable $var successivement avec chaque item dans la séquence retournée par exp. for $a in document("bib.xml")//author[la eq "Voisard"] return $a <author><la>voisard</la><fi>a.</fi></author> 26 28 Comparaisons par la position : Affectation d ensembles: let Comparaison de la position de deux noeuds :<< apparaît avant dans le document. { document("bib.xml")//book[author[la="abiteboul"] << author[la="suciu"]]/@title } <livre title="data on the Web"/> La clause let $var := exp affecte la variable $var avec la séquence entière retournée par exp. for $b in document("bib.xml")//book[1] let $al := $b/author return <livre nb_auteurs="{count($al)}"> { $al } <livre nb_auteurs="2"> <author><la>amann</la><fi>b.</fi></author> <author><la>rigaux</la><fi>p.</fi></author>

29 31 Sélection: where Quantification La clause 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). { for $a in document("bib.xml")//book where $a/author[1]/la eq "Abiteboul" return $a/@title } <?xml version="1.0"?> <livre title="data on the Web"/> 30 some $var in expr1 satisfies expr2 il existe au moins un nœud retourné par l expression expr1 qui satisfait l expression expr2 (quantification existentielle). every $var in expr satisfies expr tous les nœuds retournés par l expression expr1 satisfont l expression expr2 (quantification universelle) for $a in document("bib.xml")//author where every $b in document("bib.xml")//book[author/la = $a/la] satisfies $b/publisher="morgan Kaufmann Publishers" return string($a/la) Scholl, Voisard, Abiteboul, Buneman, Suciu 32 Tests: if-then-else Trier avec order by <livres> { for $b in document("bib.xml")//book where $b/author/la = "Rigaux" return if ($b/@year > 2000) then <livre recent="true"> {$b/@title} else {$b/@title} } </livres> <?xml version="1.0"?> <livres> <livre title="comprendre XSLT"/> <livre recent="true" title="spatial Databases"/> </livres> expr1 order by expr2 (ascending descending)? : trier les éléments de la séquence retournée par l expression expr1 par les valeurs retournées par expr2. <livres>{ for $b in document("bib.xml")//book order by $b/@year return { $b/@title, $b/@year } } </livres>

33 35 Jointure Jointure: Résultat Fichier d adresses: <addresses> <person> <name>amann</name> <country>france</country> <institution>cnam</institution> </person> <person> <name>scholl</name> <country>france</country> <institution>cnam</institution> </person> <person> <name>voisard</name> <country>germany</country> <institution>fu Berlin</institution> </person> </addresses> <livre titre="comprendre XSLT"> <auteur nom="amann" institut="cnam"/> <auteur nom="rigaux"/>, <livre titre="spatial Databases"> <auteur nom="rigaux"/> <auteur nom="scholl" institut="cnam"/> <auteur nom="voisard" institut="fu Berlin"/>, <livre titre="data on the Web"> <auteur nom="abiteboul"/> <auteur nom="buneman"/> <auteur nom="suciu"/> 34 36 Jointure: Requête Fonctions et opérateurs Les fonctions et opérateurs permettent : for $b in document("bib.xml")//book return element livre { attribute titre {$b/@title}, for $a in $b/author return element auteur { attribute nom {$a/la}, for $p in document("addr.xml")//person where $a/la = $p/name return attribute institut {$p/institution} } } l accès au type et le nom d un noeud, la construction, la comparaison et la transformation de valeurs, l agrégation des valeurs d une séquence. Les fonctions et opérateurs sont typés (XML schema) et manipulent des séquences et des valeurs typées (XML schema) : entiers, chaînes de caractères, dates,...

37 39 Exemple : Fonction avg Définition de Fonctions XQuery permet à l utilisateur de définir ses propres fonctions. for $p in distinct-values(document("bib.xml")//publisher) let $l := document("bib.xml")//book[publisher = $p] return element publisher { attribute name {string($p)}, attribute avg_price { xf:avg($l/price) }} Résultat : <publisher name="o Reilly" avg_price="28.95"/>, <publisher name="morgan Kaufmann Publishers" avg_price="37.48"/> define function NombreAuteurs(book $b) returns xsd:integer { return count($b/author) } Le résultat est de type xsd:int. 38 40 Exemple: index-of Modèle abstrait d un traitement XML <books> { let $bl := document("bib.xml")//book for $b in $bl return <book> { $b/@title, attribute no {index-of($bl, $b)}} </book> } </books> <?xml version="1.0"?> <books> <book title="comprendre XSLT" no="1"/> <book title="spatial Databases" no="2"/> <book title="data on the Web" no="3"/> </books> Document XML Schéma XML XML PSV Parseur XML Infoset Validateur Infoset Remplacement entités Insertion de valeurs par défaut Document bien formé Document valide PSV: Post schema validated Infoset (avec annotations de types) XQuery Modèle de données Résultat

41 Modèle abstrait d un traitement XML Les éléments et les attributs sont annotés par un type (XMLSchema). Chaque noeud a un type XML Schema ou inconnu ( anysimpletype ) Exemples de valeurs et de leurs types : 47 xsd:int (1, 2, 3) xsd:int, xsd:int, xsd:int (47, toto ) xsd:int, xsd:string <a/> element a {()} <a>toto</a> element a {text} 42 Plus d informations... 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: db.bell-labs.com/galax/ GMD IPSI XQuery