Interrogation de documents XML. ENST - Bases de données avancées - 2003/04 - B. Amann



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

Les bases de données

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

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

Le langage SQL Rappels

BD et XML : Exercices

Information utiles. webpage : Google+ : digiusto/

Langage SQL : créer et interroger une base

XML et recherche d information

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

Le Langage SQL version Oracle

OCL - Object Constraint Language

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

Cours Bases de données

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

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

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

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

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

Master d Informatique Corrigé du partiel novembre 2010

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

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

Gestion de données incertaines et de leur provenance

Sécurité des applications web. Daniel Boteanu

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

Business Intelligence avec Excel, Power BI et Office 365

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)

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données élémentaires Maude Manouvrier

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

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

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

16H Cours / 18H TD / 20H TP

BUSINESS INTELLIGENCE

1 Introduction et installation

INTRODUCTION AU DATA MINING

Document Object Model (DOM)

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

Architectures d'intégration de données

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

Évaluation et optimisation de requêtes

données en connaissance et en actions?

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

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

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

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

OpenPaaS Le réseau social d'entreprise

Arbres binaires de recherche

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

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

4. SERVICES WEB REST 46

Bases de données relationnelles

Bases de Données NoSQL

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

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.

Table des matières. Avant-propos

Business Intelligence

Centre Génie Industriel et Informatique (G2I) RECHERCHE D INFORMATION DANS LES DOCUMENTS XML RAPPORT DE RECHERCHE

Données semi-structurées Actives

Développement d un interpréteur OCL pour une machine virtuelle UML.

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

Optimisation SQL. Quelques règles de bases

TP Bases de données réparties

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

SQL Historique

XML : documents et outils

Mysql avec EasyPhp. 1 er mars 2006

Manuel Viadeis CRM Connecteur intégration L100 étendue.

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

CREATION WEB DYNAMIQUE

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

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

BIRT (Business Intelligence and Reporting Tools)

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Introduction aux concepts d ez Publish

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

Intégration de données hétérogènes et réparties. Anne Doucet

Les ontologies pour l intégration sémantique : enjeux et défis

Les structures de données. Rajae El Ouazzani

Module BD et sites WEB

Bases de Données Avancées

Bases de données - Modèle relationnel

Transcription:

1 Interrogation de documents XML

2 Interrogation de documents XML Comment interroger des documents XML? Solutions : SQL : il faut stocker XML dans une BD relationnel XPath : extraction de fragments d arbres XQuery : vrai langage de requêtes pour XML XSLT : extraction + transformation (règles)

3 XPath : Résumé XPath est un langage pour extraire des noeuds dans un arbre XML : On navigue dans l arbre grâce à des axes de navigation. Un chemin de navigation est une séquence d étapes. Dans chaque étape on choisi un axe, un filtre et éventuellement des prédicats. Le résultat d une étape (d une séquence d étapes) est un séquence de noeuds.

4 XSLT : Résumé XPath est un langage pour transformer des arbres XML : On définit des règles de transformation qui transforme un fragment d arbre en un autre fragment (copie). Les fragments à transformer sont choisis par des expressions XPath. Les règles de transformations à appliquer à un fragment est choisie par une expression XPath. Le résultat d une transformation est un document XML.

5 Exemple: Requête SQL/XML avec extraction XPath SQL> select P.PODOCUMENT.extract( 2 /PurchaseOrder//User).getClobVal() 3 from PURCHASEORDER P 4 where P.PODOCUMENT.extract( 5 /PurchaseOrder//Date/text() 6 ).getstringval() = 12/11/02 P.PODOCUMENT.Extract( /PurchaseOrder//User ).GETClobVal() ---------------------------------------- <User>KING</User>

6 XQuery

7 Langages de requêtes pour XML Un petit historique : 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

8 La place de XQuery dans le monde XML Modèles et Langages: Groupes de travail: XML Schema XQuery XPath XML Schema XQuery XPath 2.0 XSLT (Don Chamberlin)

9 Besoin d un modèle de données On a besoin d un modèle de données pour définir le sens (la sémantique) des expressions XQuery: Requête: document("bib.xml")/bib/book[1]/(editor union author) La requête retourne une séquence d éléments de type (editeur auteur) qui sont des enfants du premier élément de type book dans le document bib.xml.

10 Le modèle de données de XQuery Une valeur est une séquence ordonnée d items. Un item est un noeud ou une valeur atomique. Chaque noeud et chaque valeur a un type. item valeur noeud valeur atomique * item

11 Valeurs/Séquences 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/>) Pas de séquences imbriqués : (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).

12 Expressions XQuery Une requête XQuery est une composition d expressions. Chaque expression a une valeur ou retourne une erreur. Les expressions n ont pas d effets de bord (par exemple, pas de mise-à-jour). Expressions (requêtes) simples : Valeurs atomiques: 46, Salut Valeurs construites: true(), date( 2002-10-23 )

13 Expressions Complexes Expressions de chemins (XPath 2.0) : FILM//ACTEUR Expressions FLWR (for-let-where-return) Tests (if-then-return-else-return) Fonctions Racines :,, Fonctions prédéfinies : XQuery 1.0 and XPath 2.0 Functions and Operators Fonctions utilisateurs

14 Opérations Opérateurs arithmétiques: 1+2, 3.4-6.5, $y mod 2 Opérations sur les séquences : concaténation : union, intersection, différence de séquences de noeuds Opérateurs de comparaison pour valeurs atomiques, noeuds et séquences Opérations booléennes: $x=2 and $y=4 or not($z)

15 DTD Exemple: bib.dtd <!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)>

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>

17 Expressions de chemins Requête: document("bib.xml")//author Résultat: <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>

18 Expressions de chemins Chaque étape est une expression XQuery (XPath 2.0) : doc( bib.xml )/bib/book/author doc( bib.xml )/bib//book[1]/publisher doc( bib.xml )//book/(author, publisher) : résultat? doc( bib.xml )/(descendant::author, descendant::publisher) : résultat? doc( bib.xml )//book/(@title union publisher) doc( bib.xml )//book[position() lt last()]

19 Construction de noeuds XML Le nom est connu, le contenu est calculé par une expression expr Requête: <auteurs> { document("bib.xml")//book[2]/author/la } </auteurs> Résultat: <?xml version="1.0"?> <auteurs> <la>rigaux</la> <la>scholl</la> <la>voisard</la> </auteurs>

20 Construction de noeuds XML Le nom et le contenu sont calculés: element { expr-nom } { expr-contenu } attribute { expr-nom } { expr-contenu } Requête: element { document("bib.xml")//book[1]/name(@*[1]) } { attribute { document("bib.xml")//book[1]/name(*[3]) } { document("bib.xml")//book[1]/*[3] } } Résultat: <title publisher="o Reilly"/>

21 Différence de séquences de noeuds Requête: <livre> Tous les sous-elements sauf les auteurs: { document("bib.xml")//book[1]/(* except author) } </livre> Résultat: <livre> Tous les sous-elements sauf les auteurs: <publisher>o Reilly</publisher> <price>28.95</price> </livre>

22 Concaténation de séquences Requête: <livre> Le prix suivi des auteurs: { document("bib.xml")//book[1]/(price,author) } </livre> Résultat: <livre> 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> </livre> On a changé l ordre des noeuds ( union)

23 Transformation noeud valeur Requête: "Les auteurs du premier livre sont", document("bib.xml")//book[1]/author/xf:string(la) Résultat: Les auteurs du premier livre sont, Amann, Rigaux (xf:string est une fonction prédéfinie).

24 Comparaison de valeurs atomiques Requête: document("bib.xml")//book/author[la eq "Scholl"] Résultat: <author><la>scholl</la><fi>m.</fi></author> Requête: document("bib.xml")//book[author/la eq "Scholl"] Résultat: ERROR L expression author/la dans le prédicat ne retourne pas une valeur atomique mais une séquence de valeurs.

25 Comparaison de séquences Comparaison de séquences : = s il existe au moins un élément dans qui est égal à un élément dans. Requête: count(document("bib.xml")//book[author/la = ("Scholl", "Rigaux")]) Résultat: 2

is est identique à 26 Comparaisons de noeuds Comparaison de l identité de deux noeuds :. Requête: document("bib.xml")//book[author[2] is author[last()]] Résultat: <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>

<< << 27 Comparaisons par la position Comparaison de la position de deux noeuds : avant (après) apparaît dans le document. Requête: ( ) <livre> { document("bib.xml")//book[author[la="abiteboul"] << author[la="suciu"]]/@title } </livre> Résultat: <livre title="data on the Web"/>

28 Affectation de variables: for et let La clause for $var in exp affecte la variable $var successivement avec chaque item dans la séquence retournée par exp. La clause let $var := exp affecte la variable $var avec la séquence entière retournée par exp. Requête: for $b in document("bib.xml")//book[1] let $al := $b/author return <livre nb_auteurs="{count($al)}"> { $al } </livre> Résultat: <livre nb_auteurs="2"> <author><la>amann</la><fi>b.</fi></author> <author><la>rigaux</la><fi>p.</fi></author> </livre>

29 Sélection: where 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). Requête: <livre> { for $a in document("bib.xml")//book where $a/author[1]/la eq "Abiteboul" return $a/@title } </livre> Résultat: <?xml version="1.0"?> <livre title="data on the Web"/>

30 Tests: if-then-else Requête: <livres> { for $b in document("bib.xml")//book where $b/author/la = "Rigaux" return if ($b/@year > 2000) then <livre recent="true"> {$b/@title} </livre> else <livre> {$b/@title} </livre> } </livres> Résultat: <?xml version="1.0"?> <livres> <livre title="comprendre XSLT"/> <livre recent="true" title="spatial Databases"/> </livres>

31 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 expr satisfies expr tous les nœuds retournés par l expression expr1 satisfont l expression expr2 Requête: 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) Résultat: Scholl, Voisard, Abiteboul, Buneman, Suciu

32 Trier avec sort by Expr1 sort 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. Requête: <livres>{ for $b in document("bib.xml")//book return <livre> { $b/@title, $b/@year } </livre> sort by(@year) } </livres> Résultat: <livres> <livre title="data on the Web" year="2000"/> <livre title="spatial Databases" year="2001"/> <livre title="comprendre XSLT"/> </livres>

33 Jointure 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>

34 Jointure: Requête Requête: 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} } }

35 Jointure: Résultat Résultat: <livre titre="comprendre XSLT"> <auteur nom="amann" institut="cnam"/> <auteur nom="rigaux"/> </livre>, <livre titre="spatial Databases"> <auteur nom="rigaux"/> <auteur nom="scholl" institut="cnam"/> <auteur nom="voisard" institut="fu Berlin"/> </livre>, <livre titre="data on the Web"> <auteur nom="abiteboul"/> <auteur nom="buneman"/> <auteur nom="suciu"/> </livre>

36 Fonctions et opérateurs Les nombreux fonctions et opérateurs permettent : 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.

37 Fonctions et opérateurs Les fonctions et opérateurs sont typées (XML schema) et manipulent des séquences et des valeurs typées (XML schema) : entiers, chaînes de caractères, dates,...

38 Exemple : Fonction avg Requête: 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"/>

39 Exemple: index-of Requête: <books> { let $bl := document("bib.xml")//book for $b in $bl return <book> { $b/@title, attribute no {index-of($bl, $b)}} </book> } </books> Résultat: <?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>

40 Définition de Fonctions XQuery permet à l utilisateur de définir ses propres fonctions. define function NombreAuteurs(book $b) returns xsd:integer { return count($b/author) } Le résultat est de type xsd:int.

41 Modèle abstrait d un traitement XML Document XML Schéma XML XQuery Parseur XML XML Infoset Validateur PSV Infoset Modèle de données Remplacement entités Insertion de valeurs par défaut Document bien formé Document valide PSV: Post schema validated Infoset (avec annotations de types) Résultat

42 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 : type XML Schema : element a {()} type inconnu ( anysimpletype )

43 Exemples de valeurs et de leur type 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} () () ERROR ERROR

44 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