XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON Condition_de_jointure; Problèmes Si des attributs de même nom.
L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.
Introduction aux Web Services Partie 1. Technologies XML
Approche graphique du nombre dérivé
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
« Les Mercredis du développement » Nouveau format de fichier Template Solution Présenté par Pierre Lagarde Relation Développeurs.
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
Le developpement web  Préparé par : ASSAL Lamiae JAMALI Zakarya
LIFE Fest – Paris – 13/06/ SCORM 2004 et LOMfr dans SCENARI Erik Gebers Université de Technologie de Compiègne Laboratoire HeuDiaSyC – UMR CNRS 6599.
Le Modèle Logique de Données
Xpath XPath is a language for finding information in an XML document.
XML et bases de données.
TP 3-4 BD21.
Optimisation de Requêtes
Bases de données orientées-objets
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
09/03/2014 EF Installations de suivi environnemental Draft data specification Version 2.0 TWG EF Facilitators: Franz Daffner, Sylvain Grellet.
Manipulation d’XML avec XSL
Optimisation de Requêtes
ANPE - Introduction 1. Contexte 2. Acteurs et documents 3. Fonctionnalités proposées 4. Site 5. Chiffrage.
Les Requêtes S.Q.L « Structured Query Language)
Système d’Information de Santé de la région Rhône-Alpes
Test intégré de composants basé sur les contrats Apinya TANGKAWANIT.
Intégration et visualisation de données liées sur un référentiel géographique IGN Encadré par: Nathalie Abadie & Fayçal Hamdi Abdelfettah Feliachi.
Interface Homme Machine IHM Pro
Base de données: Généralité
20 Données semi-structurées et XML
Développement d’applications web
Réseaux sociaux Rafik Alligui Laëtitia El Hakim Otakool.com 1.
XML et les Bases de Données
Cours 3: Base de donnée XML
Contrôles d'accès aux données
Eléments d ’algèbre relationnelle
L’utilisation des bases de données
Regrouper les Données avec les Fonctions de Groupe
2001 Prentice Hall, Inc. All rights reserved. Le langage XML:création de balises Plan 1.1Introduction 1.2Un premier document XML 1.3Analyseurs et documents.
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Principes de persistance dans les applications orienté objet
Langages du Web Sémantique
L’utilisation des bases de données
Cours N°2 Base de Données & Langage SQL
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
Xpath XML Path language par Yves Bekkers
Mise en œuvre du langage MDX
Mise en œuvre du langage MDX
ACTIVITES Les quotients (5).
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Base de données: Généralités IFT6800 – E 2008 Pierre Poulin.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
1 Couplage dun langage de contrôle de formatage avec un système de formatage existant DEA ISC : 1 avril 2003 Fateh Boulmaiz
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Initiation à XML Sebti Foufou.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
1 Modèle pédagogique d’un système d’apprentissage (SA)
PHP & My SQL.
Groupe de discussion CETIC - 15/12/ De l'indexation plein texte à l'indexation sémantique Le projet RetroWeb Fabrice Estiévenart (CETIC)
CALENDRIER-PLAYBOY 2020.
BD XML 1. Introduction 2. XML : Modèle de données
Techniques de R éé criture et Transformations Pierre-Etienne Moreau.
Mise en œuvre du langage MDX
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Indexation et Optimisation
Transcription de la présentation:

XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple 5. Conclusion

1. Introduction Générations de BD Web et BD Réseau et hiérarchique 70 - 80 Relationnel 80 - 90 Objet-Relationnel 90 - … Web et BD un rendez-vous manqué couplage faible par serveur d'applications le Web est une vaste BD distribuée la structuration est faible plutôt orienté documentaire ...

XML s'impose Intégration des données et méta-données Standard d’échange de données universel Les BD ne peuvent rester indifférentes : nécessité de stocker les documents XML nécessité de pouvoir interroger ces documents évolution ou révolution ? Quel modèle de données ? Quel langage d'interrogation ? Quelle intégration avec l'existant ?

Insuffisances des modèles classiques Modèle Relationnel Schéma fixe le plus complet possible Force une structure tabulaire Intégration objet difficile Modèle Objet Plus souple mais fortement typé Nécessite un schéma Définition de type union possible Mise en œuvre difficile

Limites de SQL Mauvais support de l'imbrication SQL3 trop complexe GROUP BY limités Généralement dans les éditeurs de rapports SQL3 trop complexe Requêtes imbriquées difficiles Méthodes en qualification coûteuse Références pas très claires SQL à 30 ans ! Inventé en 1970 pour la gestion XQuery le successeur ?

2. Modèle de données Schémas flexibles et irréguliers Optionnels, avec ou sans DTD Données auto-descriptives Balises et attributs Modèle de type hypertexte Support des références Éléments atomiques ou complexes Composition par agrégation Types de données variés et extensibles Textes, numériques, …, types utilisateur

Le modèle des schémas Déclaration des éléments et attributs Typage similaire à l'objet Spécification de types simples Grande variété de types Génération de types complexes Séquence (Sequence) Choix (Choice) ...

Exemple de documents <Restaurant type="francais" categorie ="**"> <Nom>La Licorne</Nom> <Adresse><Rue>Des Moines</Rue> <Ville>Paris</Ville> </Adresse> <Téléphone>0148253278</Téléphone> <Téléphone>0614105407</Téléphone> <Fax>0133445500</Fax> <Manager>Dupuis</Manager> <Comments>Bla Bla</Comments> </Restaurant> <Bar type = "anglais"> <Nom>Rose and Crown</Nom> </Bar> <Bar> </Guide> <?xml version="1.0" encoding="UTF-8"?> <Guide Version= "2.0"> <Restaurant type="francais" categorie="***"> <Nom>Le Moulin</Nom> <Adresse> <Rue>des Vignes</Rue> <Ville>Mougins</Ville> </Adresse> <Menu Nom="Mer" Prix="15"> <Entrée>Moules</Entrée> <Plat>Poisson frais </Plat> <Dessert>…</Dessert> </Menu> <Menu> … </Menu> <Manager>Denise Fabre</Manager> </Restaurant>

La puissance de XQuery XQUERY Questions tabulaires Recherche d'information Structure d'arbres

Expressions de chemins (XPath) Selector Selected nodes / Document root // Any sub-path * Any element name Element of tag name @* Any attribute @name Attribute of name name text() Any text node processing-instruction(‘name’) Processing instruction of given name comment() Any comment node node() Any node id(‘value’) Element of id value

Exemple 1 : XPath (Q1) Noms de tous les restaurants : collection(“Restaurants”)/Restaurant/Nom/text() collection(“Restaurants”)/Restaurant/Nom

Exemple 2 et 3 : XPath + Expression régulière Menu de tous les restaurants collection(“Restaurants”)//Menu Accès via index à attribut Donnez le nom des menus du premier restaurant collection(“Restaurants”)/Restaurant[1]/Menu/@Nom

Exemple 4 : Sélection Lister le nom des restaurants de Cabourg: collection(“Restaurants”)/Restaurant [Adresse/Ville= “Cabourg"] /Nom <resultat> FOR $R IN collection("Restaurants")/Restaurant WHERE $R/Adresse/Ville = “Cabourg” RETURN {$R/Nom} </resultat> Langages de requêtes

Exemple 5 : Jointure Lister le nom des Restaurants avec téléphone dans la rue de l'Hôtel Lutecia: FOR $R IN collection("Restaurants")/Restaurant, $H IN collection("Hotels")/Hotel WHERE $H//Rue = $R//Rue AND $H//Nom = "Le Lutecia" RETURN <Result> {$R/Nom} {$R/Téléphone} </Result>

Exemple 6 : Restructuration d'arbre Construire une liste de restaurants par Ville FOR $c IN distinct(collection(“Restaurants”)/Restaurant//Ville) RETURN <Ville>{$c}</Ville> <Restaurants> FOR $r IN collection(“Restaurants”)/Restaurant WHERE $r//Ville = $c RETURN {$r}

Exemple 7 : Imbrication Adresses des hotels dans des villes ayant des restaurants trois étoiles FOR $h IN collection(“Hotels”)/Hotel WHERE $h/Adresse/Ville IN FOR $r IN collection(“Restaurants”)/Restaurant WHERE $r/@categorie = "***" RETURN {$r/Adresse/Ville/text()} RETURN {$h/Adresse}

Exemple 8 : Agrégat simple Combien de restaurants y-a-t-il en collection ? LET $R := collection(“Restaurants”)/Restaurant RETURN <NombreRestaurant > count ($R) </NombreRestaurant>

Exemple 9 : Agrégat partitionné Lister le nom de chaque restaurant avec le prix moyens des menus proposés FOR $r IN collection(“Restaurants”)//Restaurant LET $a := avg(collection(“Restaurants”)// [Restaurant = $r]//Menu/@Prix) RETURN <resultat> {$r/Nom} <avgPrix>{$a}</avgPrix> </resultat>

Exemple 10 : recherche textuelle Lister les bons restaurants de Paris FOR $r IN collection(“Restaurants”)//Restaurant WHERE CONTAINS ($r/Comments, “Bon”) OR CONTAINS ($r/Comments, “Excellent”) AND $r/Adresse/Ville = “Paris” RETURN $r/Nom

Exemple 11 : ordre et désordre Lister les bons restaurants de Paris par ordre alphabétique FOR $r IN unordered(collection(“Restaurants”)//Restaurant) WHERE $r/Comments CONTAINS (“Excellent”, “Good”) AND $r/Adresse/Ville = “Paris” RETURN $r/Nom SORTBY ($r/Nom DESCENDING)

Exemple 12 : XML actif (AXP) Construire un document avec en-tête, titre, liste restaurants peu chers, titre, liste restaurants chers  <XML_document> <Very_Expensive_Restaurants> <Title>List of very expensive restaurants</Title> FOR $r IN collection(Restaurants”)//Restaurant WHERE EVERY p in $r/Menu/@Prix SATISFIES (p>100) RETURN {$r} </Very_Expensive_Restaurants> <Very_Inexpensive_Restaurants> <Title>List of very inexpensive restaurants</Title> FOR $r IN collection(“Restaurants”)//Restaurant WHERE SOME p in $r/Menu/@Prix SATISFIES (p<10) <Date>{date()}</Date> </Very_Inexpensive_Restaurants> </XML_document>

Bilan XQuery Véritable L4G XML Très puissant Restriction Projection Jointure Imbrication Restructuration Agrégation Tri Quantificateurs Mots-clés … Sur des forêts dont les arbres sont des documents