UNIVERSITE DE M SILA BDDA 2014/2015. XQuery



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

BASE DE DONNÉES XML NATIVE

BASE DE DONNÉES XML NATIVE

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

Bases de données avancées Introduction

Langage SQL : créer et interroger une base

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

OCL - Object Constraint Language

Le langage SQL Rappels

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

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

NFE204 Bases de données avancées

BD et XML : Exercices

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

Le Langage SQL version Oracle

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

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

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

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

Document Object Model (DOM)

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

Algorithmique et Programmation, IMA

1 Introduction et installation

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)

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

Les bases de données

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

STAGE IREM 0- Premiers pas en Python

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Arbres binaires de recherche

Présentation du langage et premières fonctions

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

Génie Logiciel avec Ada. 4 février 2013

Cours Bases de données

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

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

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

Information utiles. webpage : Google+ : digiusto/

Sécurité des applications web. Daniel Boteanu

Cours de Génie Logiciel

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

Création d objet imbriqué sous PowerShell.

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

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

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

Table des matières. Avant-propos

Bases de Données NoSQL

Évaluation d une architecture de stockage RDF distribuée

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

données en connaissance et en actions?

Les structures de données. Rajae El Ouazzani

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Groupe Eyrolles, 2004 ISBN :

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

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

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

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Algorithmique & programmation

XML et recherche d information

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

16H Cours / 18H TD / 20H TP

Cours 4 : Agrégats et GROUP BY

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

Programmation Web. Madalina Croitoru IUT Montpellier

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

OASIS Date de publication

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

Base de données relationnelle et requêtes SQL

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

A QUOI SERVENT LES BASES DE DONNÉES?

Algorithmique et programmation : les bases (VBA) Corrigé

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

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Gestion Electronique de Document (ECM/GED)

LES TYPES DE DONNÉES DU LANGAGE PASCAL


Utilisation d objets : String et ArrayList

Recherche dans un tableau

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

Cours SQL. Base du langage SQL et des bases de données

Optimisation SQL. Quelques règles de bases

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Bases de données élémentaires Maude Manouvrier

Cours de Programmation 2

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

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

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

Compétences Business Objects

Premiers Pas en Programmation Objet : les Classes et les Objets

MEMORANDUM POUR UNE DEMANDE DE BOURSE DE RECHERCHE DOCTORALE DE LA FONDATION MARTINE AUBLET

Créer le schéma relationnel d une base de données ACCESS

BUSINESS INTELLIGENCE

Transcription:

XQuery 1- Historique 1998 : W3C organise un workshop sur XML Query 1999 : W3C lance le XML Query Working Group (39 membres, 25 companies) 2000 : publication des objectifs, des cas d utilisation et du modèle de données. 2001 : draft de la spécification du langage 2002 : mises à jour périodiques de cette draft 2003 : rédaction complète des objectifs et des cases d utilisation -W3C Candidate Recommendation 03 November 2005 - W3C Proposed Recommendation 21 November 2006 - W3C Recommendation 23 January 2007 2- Définition XQuery = langage fonctionnel typé Requête = composition d expressions (fonctions) Chaque expression retourne une valeur (typée) ou une erreur Expressions sans effets de bord (sans modification des données). 3- 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, qui fournit une représentation abstraite de document XML -Valeur Atomique : une valeur de type atomique (booléen, entier, flottant,.. : les types atomiques de XML-schema). - un nœud : 7 types (1. Document Node 2. Element Node 3. Attribute Node 4. Text Node 5. Comment Node 6. ProcessingInstruction node 7. Namespace Node ) -Item : un nœud ou une valeur atomique. Séquence : Collection ordonnée d items, éventuellemnt vide. Une valeur d une expression (requête) XQUERY est une séquence ordonnée de zéro ou plusieurs items. Il n y a pas de distinction entre un item et une séquence de longueur 1 Il n y a pas de séquence imbriquée : (1, (2,3),(4)) pareil que 1,2,3,4 Une séquence peut être vide (notée () ) Une séquence peut contenir des données hétérogènes. -Résultat d une requête XQuery = valeur = séquence d'items 4- 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). En XQUERY des expressions de chemins (XPATH) sont utilisées pour localiser des nœuds : La fonction d entrée doc() renvoie un document (le document node). Exemple : doc( books.xml ) Elle sert à indiquer le document XML interrogé. doc( books.xml )/bib/book: renvoie la séquence des nœuds qui sont des livres (dans l ordre du document). Elle est équivalente à : doc( books.xml )//book 5-1 Expressions XQuery simples :

Valeurs atomiques -Littéraux chaînes de caractères Ils s écrivent entre guillemets simples ou entre guillemets doubles : "Vallon des Muandes" 'Vallon des Muandes' La valeur d une littérale chaîne de caractères est de type xs:string. - Littéraux numériques Ils s écrivent classiquement : 2005 3.14 1.602e-19 1.602E-19 - La valeur d un littéral numérique sans. et sans e ou E est de type xs:integer. - La valeur d un littéral numérique avec. et sans e ou E est de type xs:decimal. - La valeur d un littéral numérique avec. et avec e ou E est de type xs:double. - Il n y a pas de littéraux booléens. Les valeurs vrai et faux sont obtenues par l appel des fonctions prédéfinies fn:true() et fn:false() qui retournent des valeurs de type xs:boolean. Référence à une variable $v v est un nom de variable : un nom qualifié. $v : valeur de la variable v dans le contexte courant Valeurs construites Les valeurs de type atomique peuvent être construites en utilisant les fonctions prédéfinies de construction. A chaque type atomique t de XML Schema, il correspond une fonction de construction t qui appliquée à la chaîne de caractères représentant une valeur atomique retourne cette valeur atomique. Par exemple : xs:integer("12") : valeur atomique 12 de type xs:integer xs:date("1789-07-14") : valeur atomique de type xs:date représentant le 14 juillet 1789 5-2Expressions Complexes -Expressions de chemins (XPath 2.0) : FILM//ACTEUR -Expressions FLOWR (for-let-where-return) -Tests (if-then-return-else-return) -Fonctions 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, nœuds et séquences -Opérations booléennes: $x=2 and $y=4 or not($z) Document exemple : En se basant sur le document exemple bib.xml suivant : <bib> <book title="comprendre XSLT"> <author><la>amann</la><fi>b.</fi></author> <publisher>o Reilly</publisher> <price>28.95</price>

</book> <book year="2001" title="spatial Databases"> <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> 5.2.1 Expressions de chemins document("bib.xml")//author <author><la>amann</la><fi>b.</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> a) Construction de noeuds XML - 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> - 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"/> a) Différence de séquences de nœuds 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> b) Concaténation de séquences 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> c) Transformation nœud-valeur "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). d) Comparaison de valeurs atomiques 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 L expression author/la dans le prédicat ne retourne pas une valeur atomique mais une séquence de valeurs. e) Comparaison de séquences Comparaison de séquences : S1= S2 S il existe au moins un élément dans S1 qui est égal à un élément dans S2 count(document("bib.xml")//book[author/la = ("Scholl", "Rigaux")]) 2 f) Comparaisons de nœuds Comparaison de l identité de deux nœuds :n1 is n2 n1 est identique à n2

document("bib.xml")//book[author[2] is author[last()]] <book title="comprendre XSLT"> <author><la>amann</la><fi>b.</fi></author> <publisher>o Reilly</publisher> <price>28.95</price> </book> g) Comparaisons par la position Comparaison de la position de deux nœuds : n1<<n2 n1 apparaît avant (après) n2 dans le document. { document("bib.xml")//book[author[la="abiteboul"] << author[la="suciu"]]/@title } <livre title="data on the Web"/> 5.2.2 Expression FLWOR: a) 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. 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> b) 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). { 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"/> 5.2.3 Tests: if-then-else <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> a) 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 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 b) 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. <livres>{ for $b in document("bib.xml")//book return { $b/@title, $b/@year } sort by(@year) } </livres> <livres> <livre title="data on the Web" year="2000"/> <livre title="spatial Databases" year="2001"/> <livre title="comprendre XSLT"/> </livres> c) 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> 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} } } <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"/> 5.2.4 Fonctions et opérateurs Les nombreux fonctions et opérateurs permettent : 3 l accès au type et le nom d un noeud, 4 la construction, la comparaison et la transformation de valeurs, 5 l agrégation des valeurs d une séquence. -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,... Exemple : Fonction avg 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"/> Exemple: index-of

<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> 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.