800 likes | 959 Views
2ème partie : Gestion de contenus Web. CHAPITRE 1 : XML Dynamique CHAPITRE 2 : XQUERY et les BD CHAPITRE 3 : Web sémantique et ontologies. Chapitre 5 : XQUERY et les BD. 1. XML et données semi structurées 1.1. Bases de Données semi structurées 1.2. Langages de requêtes 1.3. BD XML
E N D
2ème partie : Gestion de contenus Web CHAPITRE 1 : XML Dynamique CHAPITRE 2 : XQUERY et les BD CHAPITRE 3 : Web sémantique et ontologies ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQUERY et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQUERY • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
nom email tel toto@ici.la Toto 81212 Données Semi-structurées • Généralités • Données sans schéma ou auto descriptives • Associations de paire <label:valeur>ex : {nom:"Toto", tel:81212, email:toto@ici.la} • Représentation : arcs labelés ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
nom email tel toto@ici.la prénom 81212 patronyme Thomas Toto Structures imbriquées • Valeurs peuvent être d'autres structures • {nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212, email:toto@ici.la} ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Syntaxe Irrégulière • La structure n'est pas figée : • Représentation d'ensemble de même structure • {personne:{nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212, email:toto@ici.la}} • {personne:{nom:{prénom:"Sophie", patronyme:"Soso"}, tel:82222, email:soso@ici.la}} • De structure voisine • {personne:{nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212, email:toto@ici.la}} • {personne:{nom:{patronyme:"Soso"}, tel:81212, email:toto@ici.la}} ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
R1 R2 R1 R2 A D D C C C B a2 c2 C3 C2 d2 d3 b2 A C B a1 c1 b1 BD relationnelles • Représentation adaptée à des données structurées ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
BD Objet • Notion d'identité d'objet • On lie des identificateurs aux structures • Un identificateur peut être une valeur {personne:&01{nom:"Mary", age:45, enfant:&02, enfant:&03}, personne:&02{nom:"John", age:17, famille:{mère:&01, sœur:&03}}, personne:&03{nom:"Jane", pays:"Canada", mère:&01}} • Structure de graphe cyclique avec racine • Nœuds du graphe: • Objets complexes dont les valeurs sont des identifiants d'objets, • Valeurs atomiques • Structures récursives autorisées ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
personne personne personne enfant &01 &02 &03 enfant nom age nom pays nom age famille soeur mère Fragment du graphe associé • Partage de sous-structures • Présence de cycles Jane Mary John 17 CA 45 ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
OEM : Object Exchange Model • Définit pour l'échange de données hétérogènes (projet TSIMMIS) • Permet la description de données auto descriptives • objet OEM (label, oid, type, valeur) • label: chaîne de caractères, • oid : identifiant d'objet, • type : atomique (entier, caractère,…) ou complexe (oid), • valeur : atomique ou oid ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Liste&12 Personne&15 Personne&23 Nom&34 Prénom&3 Représentation OEM • Un OEM est un graphe orienté et ordonné • Nœud interne : objet complexe avec identifiant • Feuille : objet atomique avec identifiant • Etiquette attachés aux nœuds • Variantes de OEM les placent sur les arêtes • Références explicites : graphe cyclique conjoint James Bond ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML et DSS arborescentes • Les arbres XML peuvent facilement être convertis en expressions de DSS et réciproquement DSS {livre: {année:2002, titre:Prélude à fondation, auteur: {nom:Asimov, prénom:Isaac}, éditeur:Pocket, prix:6} } XML <livre année="2002"> <titre> Prélude à fondation</titre> <auteur> <nom> Asimov </nom> <prénom> Isaac </prénom> </auteur> <éditeur> Pocket </éditeur> <prix>6</prix> </livre> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Graphes XML • Structures de graphes grâce aux références à XML • On peut attacher des identifiants (id) à des éléments • On peut désigner un identifiant avec une référence (idref) ou plusieurs (idrefs) • L'arbre devient un graphe avec des cycles et des structures récursives comme dans les modèles objet. <personne id="&01"> <nom>Pierre</nom><enfant idref="&03" /> </personne> <personne id="&03"> <nom>Jean</nom><parent idrefs="&01 &02" /> </personne> <personne id="&02"> <nom>Marie</nom><enfant idref="&03" /> </personne> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
personne nom age Jean 25 Différence de représentation • En XML les nœuds sont nommés • <personne id="123"> <nom>Jean</nom> <age>25</age></personne> • Dans l'approche BD, les arcs sont nommés • {personne &123 {nom:'Jean', age:'25'}} personne nom age Jean 25 ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
DTD comme schémas de BD • DTD : grammaire "context-free" • Peuvent être considérées comme des schémas de BD Devient en XML <bd> <R1><A>a1</A><B>b1</B><C>c1</C></R1> <R1><A>a2</A><B>b2</B><C>c2</C></R1> <R2><C>c2</C><D>d2</D></R2> <R2><C>c3</C><D>d3</D></R2> </bd> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Exemple de DTD • Une DTD possible est : <!DOCTYPE bd [ <!ELEMENT bd (R1+,R2+)> <!ELEMENT R1 (A,B,C)> <!ELEMENT R2 (C,D)> <!ELEMENT A (#PCDATA)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> <!ELEMENT D (#PCDATA)> ]> • Pour permettre l'ordre (D,C) : • <!ELEMENT R2 ((C,D) | (D,C))> • Pour permettre le mélange des n-upplets de R1 et R2 : • <!ELEMENT bd (R1 | R2)+> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Limites des DTD • Limitations des DTD • Pas de notion de type de données (PCDATA seulement) • Pas de possibilité de définition de domaine de valeur (ex. un age entre 7 et 77 ans) • Avec les schémas, plus de limitations ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML vs OEM (Oracle Enterprise Manager) • Points communs entre XML et OEM • Décrits tous les deux par des graphes • Description incluse dans les données • Facile de passer de l'un a l'autre • Avantages de XML sur OEM • XML est ordonné, pas OEM • XML permet de mélanger texte, éléments, images • Autres possibilités dans XML (instructions, commentaires,…) ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQUERY et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQUERY • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Langages de requête pour XML • Langages destinés à : • Extraire des contenus de documents XML • Restructurer les résultats • Pas de standards définis • De nombreux langages • QUILT, STRUQL, XQL (extension de XSL), TQL • XML-QL, XML-GL langage graphique de requête sur des graphes labelés XML, XSL (Extensible Stylesheet Language) • XQUERY, XSQL, W3QL • WebLog, WebSQL ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XQL et QUILT • XQL • Extension de la syntaxe XPath • Sélection et filtrage des nœuds d'un graphe XML • Syntaxe simple et compacte mais puissance expressive réduite • QUILT • Unification de concepts • Combine l'info de plusieurs sources de données dans un résultat de requête avec une nouvelle structure propre • Requêtes exprimées sous forme d'expressions ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XQUERY et XSQL • XQUERY • Langage standard développé par le W3C • En cours de développement • Dérivé de QUILT (principes, syntaxe) • XSQL • Approche en extension avec SQL • Construit sur l'algèbre relationnelle, nombreuses fonctionnalités superflues pour un langage de requêtes XML • Fonctionne très bien sur des documents avec une structure relationnelle ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Un standard : XML-QL • XML-QL • Étend le langage SQL • Expression de requêtes d'interrogation et de transformation pour l'intégration de données XML provenant de sources différentes • Spécifie de façon déclarative • La sélection de données à partir d'un document XML • La création d'un document XML résultat ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML-QL (1/5) • Langage destiné à • Interroger des structures XML • Faire des sous schémas pour l'export (XML format d'échange) • Définir des expressions régulières sur les tags XML • Utiliser des variables définies par leur position dans la requête • Structurer des requêtes en formes de patterns: • WHERE …structure XML • IN …nom du document XML • CONSTRUCT ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML-QL (2/5) • Exemple de DTD <!ELEMENT book (author+,title,publisher)> <!ATTLIST book language CDATA> <!ELEMENT article (author+,title,year?,(short|long))> <!ATTLIST article type CDATA> <!ELEMENT author (firstname?,lastname)> <!ELEMENT publisher (name,adresse)> • Requête : Auteurs des livres ayant au moins un nom, un titre édités chez Springer WHERE <book language $ln> <publisher><name>Springer</name></publisher> <title>$t</title><author>$a</author> </book> IN "www.ztu.bib.xml" CONSTRUCT $a ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML-QL (3/5) • Structuration du résultat sous forme XML WHERE <book language $ln> <publisher><name>Springer</name></publisher> <title>$t</title><author>$a</author> </book> IN "www.ztu.bib.xml" CONSTRUCT<result><author>$a</author><language>$ln</language></result> • Le résultat est une structure XML <result> <author>Smith</author><language>English</language> </result> <result> <author>Dupond</author><language>Francais</language> </result> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML-QL (4/5) • Conservation de la structure par CONSTRUCTimbriqués • Evite l'éclatement des auteurs sur les titres WHERE <book> <publisher><name>Springer</name></publisher> <title>$t</title> </book> CONTENT_AS$p IN "www.ztu.bib.xml" CONSTRUCT<result> <title >$t</ title> WHERE <author >$a</ author> IN $p CONSTRUCT <author >$a</ author> </result> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XML-QL (5/5) • Jointure d'éléments contenant des valeurs communes • Ex : articles dont un auteur au moins a écrit un livre en anglais depuis 1998 • Jointure sur nom et prénom par utilisation de variables WHERE <article><author> <firstname>$f</forstname> <lastname>$l</lastname> </author></article> CONTENT_AS$aIN "www.xyz.bib.xml", <book language=$ln><author> <firstname>$f</forstname> <lastname>$l</lastname> </author></book> IN "www.xyz.bib.xml", $ln="anglais" CONSTRUCT <article>$a</article> ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQUERY et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQUERY • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
A l'heure actuelle • Des DTD sont normalisées • DTD AAP (American Association of Publishing) • DTD ATA (Aeronotic Transport Association) • DTD CALS (Défense US) • De grandes entreprises françaises définissent leurs DTD • EDF, • SNCF, … • Vue orientée objet : • Hiérarchisation des modèles de documents • Une DTD par entreprise (groupe, metier, …) • Notion de spécialisation par les sous-DTD ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Document de l'entreprise Document Bureautique Document Technique Document Financier Document Administratif Manuel Maintenance Manuel d'utilisation Rapport d'anomalie Bilan Audit Lettre Contrat Matériel Logiciel Exemples de hiérarchie des DTD ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Difficultés de gestion • Triple dépendance • Schéma de la base / DTD • Schéma de la base / Instance • DTD / Instance • Choix de l'outil d'interrogation • Interrogation type SQL • Recherche "full-text" • Interrogation de données non textuelles (images) • Reconnaissance de formes ? • Navigation hypertexte (en gardant le contrôle – ne pas se perdre) • Recherche et filtrage de l'information • Silence (pas d'info pertinente retrouvée) • Bruit (info non pertinente fournie à l'utilisateur) ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Choix du stockage (1/3) • Où stocker les DTD et les instances ? • Dans un SGBD Orienté Objet • Avantages • Conceptuellement assez bien adaptés • Inconvénients • Trop hiérarchique • Peu performants • Pas assez fiable • Chers • Démodés • Nécessité pour l'entreprise de maintenir 2 types de SGBD • Relationnel • Objet ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Choix du stockage (2/3) • Dans un SGBD semi-structuré • Avantages • Très bien adaptés conceptuellement • Structure en graphe • Stockage d'une partie du modèle comme des données • Conçus en particulier pour les hyperdocuments XML • Inconvénients • Peu performants • Chers • Peu fiable • Nécessité pour l'entreprise de maintenir 2 types de SGBD • Relationnel • Semi-structuré ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Choix du stockage (3/3) • Dans un SGBD relationnel • Avantages • Puissants et fiables • L'entreprise en possède déjà au moins un • Moins cher que les autres • Facilité pour établir des liaisons avec les BD du SI de l'entreprise • Inconvénients • Modèle pauvre • Contraintes d'intégrité • Trigger, … ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Les SGBD Relationnels • 2 approches • Relationnelle classique • Données extraites des fichiers XML puis stockées dans une BD classique • XML-native • Documents XML stockés dans leur intégrité et gérés par le SGBD • Choix du stockage • Bases centrées données • XML est un support, la donnée est importante • stockage relationnel avec middleware de transformation en XML • Bases centrés documents • Importance du contenu • stockage natif XML ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Solution relationnelle classique • Caractéristiques : • Données extraites du fichier XML puis stockées dans une BD • Données gérées par un SGBD classique, et accessibles par des requêtes SQL • Document XML non conservé (reconstituable) • Avantages (ceux des SGBD) • Contrôle d'intégrité, index • Stockage des procédures • Inconvénients • Document XML extrait de la base différant de l'original • Le document doit être valide pour que les données soient insérées ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Solution XML-native • Caractéristiques : • Document XML stocké dans son intégrité • Le SGBD gère la façon dont sont stockées les documents • Accès aux données par requêtes XPath, XSQL, … • Données retournées sous forme de documents XML • Avantages (ceux des SGBD) • Document XML extrait de la base identique à l'original • Rapidité d'extraction • Inconvénients • Accès indirect aux données. Passage par le document XML ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQUERY et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQUERY • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Interrogation de documents XML Comment interroger des documents XML ? Solutions : • SQL : il faut stocker XML dans une BD relationnel • Expressions XPath : extraction de fragments • Règles XSLT : extraction + transformation (règles) • Langage de requêtes pour XML • XQuery ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Historique des langages de requêtes pour XML • 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 ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQuery et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQuery • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
XQuery : définition • XQuery : sur-ensemble de SQLavec des extensions de fonctionnalités pour supporter des opérations similaires sur les forêts (collections d’arbres). • Projections d’arbres sur des sous-arbres, • Sélections d’arbres et de sous-arbres en utilisant des prédicats sur les valeurs des feuilles, • Utilisation de variables dans les requêtes pour mémoriser un arbre ou pour itérer sur des collections d’arbres, • Combinaison des arbres extraits en utilisant des jointures d’arbres, • Ré-ordonnancement des arbres, • Imbrication de requêtes, • Calculs d’agrégats • Utilisation possible de fonctions définies par l'utilisateur ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
* item noeud valeur atomique item valeur Le modèle de données de XQuery • Requête composée d'expressions(simples et complexes) associées à des opérateurs et à des fonctions. • Une expression a une valeur ou retourne une erreur. • Une valeur est une séquence ordonnée d’items, • Un itemest un nœud ou une valeur atomique (feuille) de l'arbre XML. • Chaque nœud et chaque valeur est typé. ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Règles sur les valeurs et séquences • Ces séquences répondent à certaines règles : • Une séquence peut être vide • Les séquences sont triées : • (1,5) n'est pas (5,1). • Une séquence de longueur 1correspond à un item : • 12 = (12) • Une séquence peut contenir des valeurs hétérogènes : • (1, ‘‘titi’, <noeud/>) • On ne peut pas trouver de séquences imbriquées : • (1, ("titi","toto"), 5) = (1,titi,toto,5) ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Valeurs des expressions • Expressions (requêtes) simples : • Valeurs atomiques • 1, ‘‘titi’’ • Valeurs construites • true(), • date(‘‘2002-10-23’’) • Expressions complexes : • CheminsXPath • //examen/note[@num=$a]/text() • Expressions FLWR • (for-let-where-return) • Expressions conditionnelles • (if-then-else) • Constructeurs. ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Chapitre 5 : XQuery et les BD • 1. XML et données semi structurées • 1.1. Bases de Données semi structurées • 1.2. Langages de requêtes • 1.3. BD XML • 2. XQuery • 2.1. Syntaxe XQuery • 2.1.1. Expressions XQuery • 2.1.2. Fonctions et opérateurs • 2.2. Usages et exemples de fonctions • En savoir plus… ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Expression de chemins XPath • Expression de chemin avec XPath • Désigne le type et l'adresse des nœuds recherchés. • Ex: Une requête qui permet très simplement de renvoyer tous les nœuds auteur du document biblio.xml. • Aucune mise en forme n'étant pratiquée, les nœuds renvoyés le sont avec leurs balises et leur contenu tel qu'il s'exprime dans le document. • document("biblio.xml")//auteur ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Expressions FLWR • Expressions FLWR proches des mécanismes utilisés dans les requêtes de type SQL. • 4 clauses possibles : for, let, where et return • for$var in exp • Affecte la variable $var successivement avec chaque item dans la séquence retournée par exp. • let $var := exp • Affecte la variable $var avec la séquence “entière” retournée par exp. • 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). • return • Permet de générer le résultat de l'expression. ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Exemples de requêtes FLWR • Ex1 : requête FLWR qui permet d'affecter la variable $b successivement avec le contenu des nœuds livre du document biblio.xml (clause for) et d'affecter $a avec l'ensemble des nœuds auteur contenus dans chaque itération de $b (clause let). for $b in document("biblio.xml")//livre let $a := $b/auteur return <livre nb_auteurs="{count($a)}"> { $a } </livre> • Ex2 : requête FLWR pour extraire le titre des livres dont le premier nœud fils auteur contient comme valeur de nom Asimov. for $a in document("biblio.xml")//livre where $a/auteur[1]/nom eq "Asimov" return $a/titre ACCARY-BARBIER / CNAM - Cycle C - 2007-2008
Expressions conditionnelles • Structure if - then - else • if : teste une condition. • then : opération en cas de réponse positive au test. • else : opération en cas de réponse négative au test. • Ex : Requête qui va tester pour chaque élément livre de biblio.xml si la valeur de son attribut année est supérieure à 2000 et renvoyer la valeur 'récent' si c'est la cas et 'ancien' sinon. for $b in document("biblio.xml")//livre Return if ($b/@année > 2000) then 'récent' else 'ancien' ACCARY-BARBIER / CNAM - Cycle C - 2007-2008