20 Données semi-structurées et XML

Slides:



Advertisements
Présentations similaires
1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Advertisements

Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Classe : …………… Nom : …………………………………… Date : ………………..
Reconnaissance de la parole
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Les Prepositions.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Fonctionnalités des SGBD
Le Modèle Logique de Données
Directeur de Thèse : Pr. Witold Litwin
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
le langage les éléments
Domaines nominaux XSLT
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
TP 3-4 BD21.
Optimisation de Requêtes
Manipulation d’XML avec XSL
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
XML et les Bases de Données
Cours 3: Base de donnée XML
Contrôles d'accès aux données
L’utilisation des bases de données
Rappel sur les bases de données et le vocabulaire
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Chap 4 Les bases de données et le modèle relationnel
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Xpath XML Path language par Yves Bekkers
XSLT Langage de transformation darbre par Yves Bekkers.
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Notre calendrier français MARS 2014
Les concepts et les méthodes des bases de données
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 Couplage dun langage de contrôle de formatage avec un système de formatage existant DEA ISC : 1 avril 2003 Fateh Boulmaiz
Projet de Master première année 2007 / 2008
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève
Langages de requêtes XML
8 - XML Cours XML.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Introduction.
CALENDRIER-PLAYBOY 2020.
BD XML 1. Introduction 2. XML : Modèle de données
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les Chiffres Prêts?
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Programmation Web : Introduction à XML
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Acquisition d’information sur internet
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
XML fortement adopté en tant que format indépendant d’échange de données. Utilisation de XML pour la modélisation de données structurées et non structurées.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Module : Langage XML (21h)
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
20 Données semi-structurées et XML
Transcription de la présentation:

20 Données semi-structurées et XML 2017-03-30 20 Données semi-structurées et XML 30/03/2017 © Robert Godin. Tous droits réservés. © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Pourquoi XML HTML Langage de balisage pour la présentation Balise définit format XML (eXtensible Markup Language) Balisage flexible en fonction de l’application Balise peut servir à spécifier structure et sémantique des données Facilite l’interprétation des données (par programme ou humain) Présentation à part (XSL) Représentation de données semi-structurées Conformité optionnelle à un schéma Facilite le traitement informatique et humain Format normalisé d’échange couplage faible entre systèmes SOAP : sérialisation des objets en XML Schémas DTD, XML schéma 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20.1 Introduction à XML 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Références 30/03/2017 © Robert Godin. Tous droits réservés.

Intégrité d’un document XML Document XML bien formé (well-formed) entête correcte un seul élément racine balises sont correctement imbriquées éléments non vides doivent avoir une balise de début et de fin (contrairement à HTML) Document XML valide respecte sa grammaire 30/03/2017 © Robert Godin. Tous droits réservés.

20.2 Espace de nom XML (XML namespace) 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20.3 XML schema Limites des DTD Types de base Intégration faible de la notion d’espace de noms Support faible de clé et d’intégrité référentielle Ordre significatif Le nom d’un élément est global Syntaxe non conforme à XML 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple de schéma XML : http://www.info2.uqam.ca/~godin/XML/schemaCommandesXML.xsd 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple d’instance du schéma : http://www.info2.uqam.ca/~godin/XML/CommandesAvecSchema.xml 30/03/2017 © Robert Godin. Tous droits réservés.

20.4 Langage de requête XPath /CommandesXML/ListeCommandes/Commande[1] /child::CommandesXML/child::ListeCommandes/child::Commande[position()=1] 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20.5 XPointer 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20.6 Contraintes de clé 30/03/2017 © Robert Godin. Tous droits réservés.

Exemple d’instance valide 30/03/2017 © Robert Godin. Tous droits réservés.

20.7 Langage de requête XML Query (XQuery) Contient XPath Input : ensemble de documents XML Sources diverses Peut produire du XML en sortie 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Expressions XQuery Expression primaire litéral, variable, fonction Séquence « , » est le constructeur Expression XPath Expression FLWOR FOR, LET, WHERE, ORDER BY, RETURN Expression conditionnelle, arithmétique, relationnelle, régulière, quantifiée, … 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20.8 Traitement d’un document XML avec Java API for XML Processing (JAXP) http://java.sun.com/xml/jaxp/index.jsp Interface Document Object Model (DOM) instance XML -> arbre de Node Java 30/03/2017 © Robert Godin. Tous droits réservés.

Java Architecture for XML Binding (JAXB) http://java.sun.com/xml/jaxb/ Schéma XML -> classes métier Java Java binding compiler Instance XML -> objets métier Java 30/03/2017 © Robert Godin. Tous droits réservés.

20.9 Système de Gestion de XML Application centrée donnée XML = format d’échange avec BD Application centrée document XML stocké dans SGXML SGXML natif Modèle BD = XML Extension SGBD Au dessus du modèle relationnel 30/03/2017 © Robert Godin. Tous droits réservés.

20.10 Oracle et XML : Oracle XML DB Application centrée données Mécanismes de transformation SQL<->XML XML SQL Utility (XSU) : API Java/JDBC SQL/XML Type XMLType avec stockage objet-relationnel Conversion selon annotations du schéma XML Application centrée documents (SGXML) XMLType avec conformité facultative à un schéma XML Stockage CLOB ou binaire (11g, après parsage) ou hybride Requêtes sur XMLType Fonctions SQL pour XPath et XQuery XML DB repository Vue des documents sous forme de répertoire hiérarchique Accès HTTP, FTP, WebDAV APIs Java/JDBC, PL/SQL, .NET/C# 30/03/2017 © Robert Godin. Tous droits réservés.

XML SQL Utility (XSU) : exemple de transformation SQL->XML 30/03/2017 © Robert Godin. Tous droits réservés.

Fonctions SQL/XML (SQLX) de génération de XML 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Fonctions SGXML Stockage natif CLOB par défaut - requêtes traitées par conversion DOM à la volée 30/03/2017 © Robert Godin. Tous droits réservés.

Requête XPath sur XMLType avec extractValue() Fonction qui retourne la valeur de l’élément XML sélectionné (conversion en scalaire SQL) Instance XMLType Expression XPath SQL> SELECT extractValue(value(C),'/Commande/noCommande') 2 FROM CommandesXML C 3 WHERE extractValue(value(C),'/Commande/noClient') = 10 4 /   EXTRACTVALUE(VALUE(C),'/COMMANDE/NOCOMMANDE') -------------------------------------------------------------------------------- 1 5 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Fonction extract() SQL> SELECT extract(value(C),'/Commande/noCommande/text()') 2 FROM CommandesXML C 3 WHERE extract(value(C),'/Commande/noClient/text()').getnumberval() = 10 4 /   EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE/TEXT()') -------------------------------------------------------------------------------- 1 5 30/03/2017 © Robert Godin. Tous droits réservés.

Fonction existsNode() SQL> SELECT extract(value(C),'/Commande/noCommande/text()') 2 FROM CommandesXML C 3 WHERE existsNode(value(C),'/Commande[noClient="10"]') = 1 4 /   EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE/TEXT()') -------------------------------------------------------------------------------- 1 5 SQL> SELECT extract(value(C),'/Commande/noCommande') EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE') <noCommande>1</noCommande> <noCommande>5</noCommande> 30/03/2017 © Robert Godin. Tous droits réservés.

Fonction SQL/XML : XMLQuery Séquence XQuery SQL> SELECT XMLQuery('(1,2+3,"ABC",<tag>blabla</tag>)' RETURNING CONTENT) AS Output FROM DUAL 2 / OUTPUT -------------------------------------------------------------------------------- 1 5 ABC<tag>blabla</tag> 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Requête FLWOR La variable $c itère sur chacun des éléments spécifiés par le chemin (ici un seul élément Commande) Contexte de la requête est la valeur de l’objet XMLType de la table d’objets SQL> SELECT XMLQuery( 2 'for $c in /Commande 3 where $c/noClient = "10" 4 return $c/noCommande' 5 PASSING OBJECT_VALUE RETURNING CONTENT) AS Output 6 FROM CommandesXML 7 / OUTPUT -------------------------------------------------------------------------------- <noCommande>1</noCommande> <noCommande>5</noCommande> 30/03/2017 © Robert Godin. Tous droits réservés.

Itération sur les éléments ligneCommande SQL> SELECT XMLQuery( 2 'for $l in /Commande/ligneCommande 3 where $l/noArticle > 20 4 return $l/noArticle' 5 PASSING OBJECT_VALUE RETURNING CONTENT) 6 FROM CommandesXML 7 / XMLQUERY('FOR$LIN/COMMANDE/LIGNECOMMANDEWHERE$L/NOARTICLE>20RETURN$L/NOARTICLE'P -------------------------------------------------------------------------------- <noArticle>70</noArticle><noArticle>90</noArticle> <noArticle>70</noArticle> 30/03/2017 © Robert Godin. Tous droits réservés.

Construction explicite de XML en output SQL> SELECT XMLQuery( 2 'for $l in /Commande/ligneCommande 3 where $l/noArticle > 20 4 return <numeroArticle>{$l/noArticle/text()}</numeroArticle>' 5 PASSING OBJECT_VALUE RETURNING CONTENT) 6 FROM CommandesXML 7 / XMLQUERY('FOR$LIN/COMMANDE/LIGNECOMMANDEWHERE$L/NOARTICLE>20RETURN<NUMEROARTICLE -------------------------------------------------------------------------------- <numeroArticle>70</numeroArticle><numeroArticle>90</numeroArticle> <numeroArticle>70</numeroArticle> {} demande l’évaluation 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Où est l’erreur ? SQL> SELECT XMLQuery( 2 'for $c in /Commande 3 where $c/ligneCommande/noArticle > 20 4 return $c/ligneCommande/noArticle' 5 PASSING OBJECT_VALUE RETURNING CONTENT) 6 FROM CommandesXML 7 / XMLQUERY('FOR$CIN/COMMANDEWHERE$C/LIGNECOMMANDE/NOARTICLE>20RETURN$C/LIGNECOMMAN -------------------------------------------------------------------------------- <noArticle>10</noArticle><noArticle>70</noArticle><noArticle>90</noArticle> <noArticle>10</noArticle><noArticle>70</noArticle><noArticle>20</noArticle> 30/03/2017 © Robert Godin. Tous droits réservés.

Indexage avec stockage CLOB ou binaire Plusieurs types d’index supportés Indexage sur chemin XPath particulier create unique index IndexNoCommande on CommandesXML (extractValue(object_value,'/Commande/NoCommande')) la balise doit être unique dans le document Indexage systématique de tous les chemins create index IndexCommandesXML on CommandesXML (object_value) indextype is CTXSYS.CTXXPATH réécriture en HASPATH/INPATH (voir indexage Context au chap.21) plus coûteux que sur fonction XPath Indexage plein texte des valeurs textuelles (voir chap. 21) 11g : XMLIndex remplace CTXXPATH 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Support de schéma XML 30/03/2017 © Robert Godin. Tous droits réservés.

Stockage objet-relationnel Annotations XML pour stockage objet-relationnel Vue XMLType sur stockage objet-relationnel Attributs xdb:SQLName, xdb:SQLType dans le schéma XML Réécriture des requêtes XPath par l’optimiseur Exploitation de l’optimiseur relationnel 30/03/2017 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. BD de documents Modèle (clé, document) API de base Put(clé, document), Get(clé), Update(clé), Delete(clé) Document semi-structuré Sans schéma Attribut : valeur, XML, JSON, … Requêtes simples sur le contenu Support d’index Scalabilité élastique Transactions limitées CouchDB, MongoDB, Simple DB, … 30/03/2017 © Robert Godin. Tous droits réservés.