74
ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 1 2ème partie : 2ème partie : Gestion de contenus Web Gestion de contenus Web CHAPITRE 1 : XML Dynamique CHAPITRE 1 : XML Dynamique CHAPITRE 2 : XQUERY et les BD CHAPITRE 2 : XQUERY et les BD CHAPITRE 3 : Web sémantique et CHAPITRE 3 : Web sémantique et ontologies ontologies

2ème partie : Gestion de contenus Web

  • Upload
    coral

  • View
    35

  • Download
    3

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 1

2ème partie :2ème partie : Gestion de contenus Web Gestion de contenus Web

2ème partie :2ème partie : Gestion de contenus Web Gestion de contenus Web

CHAPITRE 1 : XML Dynamique CHAPITRE 1 : XML Dynamique

CHAPITRE 2 : XQUERY et les BDCHAPITRE 2 : XQUERY et les BD

CHAPITRE 3 : Web sémantique et ontologiesCHAPITRE 3 : Web sémantique et ontologies

Page 2: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 2

Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD

1. XML et données semi structurées1.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…

Page 3: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 3

Données Semi-structuréesDonné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:[email protected]}

Représentation : arcs labelésnom

tel

email

Toto [email protected]

81212

Page 4: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 4

Structures imbriquéesStructures imbriquées

Valeurs peuvent être d'autres structures {nom:{prénom:"Thomas", patronyme:"Toto"}, tel:81212,

email:[email protected]}

nom

tel

email

[email protected]

prénom

patronyme

Thomas

Toto

Page 5: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 5

Syntaxe IrrégulièreSyntaxe 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:[email protected]}} {personne:{nom:{prénom:"Sophie", patronyme:"Soso"}, tel:82222, email:[email protected]}}

De structure voisine {personne:{nom:{prénom:"Thomas", patronyme:"Toto"},

tel:81212, email:[email protected]}} {personne:{nom:{patronyme:"Soso"}, tel:81212, email:[email protected]}}

Page 6: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 6

BD relationnellesBD relationnelles

Représentation adaptée à des données structurées

a1 b1 c1

AB

C

a2 b2 c2

AB

C

R1

C2 d2

C D

R2R1 R2

C3 d3

C D

R1 A B C

a1 b1 c1

a2 b2 c2

R2 C D

c2 d2

c3 d3

Page 7: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 7

BD ObjetBD 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

Page 8: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 8

Fragment du graphe associéFragment du graphe associé

Partage de sous-structures

Présence de cycles

&01 &02 &03

perso

nne

personne

personne

enfant

enfant

nom

nom

nom

age

age

famille

pays

mère soeur

Mary 45 17 CAJohn Jane

Page 9: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 9

OEM : Object Exchange ModelOEM : 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

Page 10: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 10

Représentation OEMRepré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

Liste&12

Personne&15

Nom&34

Prénom&3

Personne&23

Bond James

conjoint

Page 11: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 11

XML et DSS arborescentesXML et DSS arborescentes

Les arbres XML peuvent facilement être convertis en expressions de DSS et réciproquement

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>

DSS

{livre:

{année:2002,

titre:Prélude à fondation,

auteur:

{nom:Asimov,

prénom:Isaac},

éditeur:Pocket, prix:6}

}

Page 12: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 12

Graphes XMLGraphes 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>

Page 13: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 13

Différence de représentationDiffé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'}}

nom age

Jean 25

personne

nom

age

Jean 25

person

n

e

Page 14: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 14

DTD comme schémas de BDDTD comme schémas de BD

DTD : grammaire "context-free" Peuvent être considérées comme des schémas de BD

Devient en XML

R1 A B C

a1 b1 c1

a2 b2 c2

R2 C D

c2 d2

c3 d3

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

Page 15: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 15

Exemple de DTDExemple 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)+>

Page 16: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 16

Limites des DTDLimites 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

Page 17: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 17

XML vs OEM (Oracle Enterprise Manager)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,…)

Page 18: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 18

Chapitre 5 : XQUERY et les BDChapitre 5 : XQUERY et les BD

1. XML et données semi structurées 1.1. Bases de Données semi structurées1.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…

Page 19: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 19

Langages de requête pour XMLLangages 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

Page 20: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 20

XQL et QUILTXQL 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

Page 21: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 21

XQUERY et XSQLXQUERY 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

Page 22: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 22

Un standard : XML-QLUn 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

Page 23: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 23

XML-QL (1/5)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

Page 24: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 24

XML-QL (2/5)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

Page 25: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 25

XML-QL (3/5)XML-QL (3/5)

Structuration du résultat sous forme XMLWHERE

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

Page 26: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 26

XML-QL (4/5)XML-QL (4/5)

Conservation de la structure par CONSTRUCT imbriqué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>

Page 27: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 27

XML-QL (5/5)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 $a IN "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>

Page 28: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 28

Chapitre 5 : XQUERY et les BDChapitre 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êtes1.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…

Page 29: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 29

A l'heure actuelleA 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

Page 30: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 30

Exemples de hiérarchie des DTDExemples de hiérarchie des DTD

Document de l'entreprise

Document Bureautique

Document Technique

Document Financier

Document Administratif

Manuel Maintenance

Rapport d'anomalie

Manuel d'utilisation

Bilan Audit Lettre Contrat Matériel Logiciel

Page 31: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 31

Difficultés de gestionDifficulté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)

Page 32: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 32

Choix du stockage (1/3)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

Page 33: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 33

Choix du stockage (2/3)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é

Page 34: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 34

Choix du stockage (3/3)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, …

Page 35: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 35

Les SGBD RelationnelsLes 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

Page 36: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 36

Solution relationnelle classiqueSolution 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

Page 37: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 37

Solution XML-nativeSolution 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

Page 38: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 38

Chapitre 5 : XQUERY et les BDChapitre 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…

Page 39: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 39

Interrogation de documents XMLInterrogation 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

Page 40: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 40

Historique des langages de requêtes pour XMLHistorique 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

Page 41: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 41

Chapitre 5 : XQuery et les BDChapitre 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. XQuery2.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…

Page 42: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 42

XQuery : définitionXQuery : définition

XQuery : sur-ensemble de SQL avec 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

Page 43: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 43

Le modèle de données de XQueryLe 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 item est un nœud ou une valeur atomique (feuille) de l'arbre XML.

Chaque nœud et chaque valeur est typé.

item

noeud valeur atomique item

valeur

*

Page 44: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 44

Règles sur les valeurs et séquencesRè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)

Page 45: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 45

Valeurs des expressionsValeurs des expressions

Expressions (requêtes) simples : Valeurs atomiques

1, ‘‘titi’’ Valeurs construites

true(), date(‘‘2002-10-23’’)

Expressions complexes : Chemins XPath

//examen/note[@num=$a]/text()

Expressions FLWR (for-let-where-return)

Expressions conditionnelles (if-then-else)

Constructeurs.

Page 46: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 46

Chapitre 5 : XQuery et les BDChapitre 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…

Page 47: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 47

Expression de chemins XPathExpression 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

Page 48: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 48

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

Page 49: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 49

Exemples de requêtes FLWRExemples 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")//livrelet $a := $b/auteurreturn <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")//livrewhere $a/auteur[1]/nom eq "Asimov"return $a/titre

Page 50: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 50

Expressions conditionnellesExpressions 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")//livreReturnif ($b/@année > 2000)then 'récent'else 'ancien'

Page 51: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 51

Constructeurs de nœuds XML (1/2)Constructeurs de nœuds XML (1/2)

Résultat peut contenir éléments prédéfinis et expressions à évaluer. Construction d'une structure XML autour d'un résultat

évaluée. lors de l'exécution de la requête

Structure xml recopiée, Partie située entre accolades { } calculée.

Ex : Contexte défini "manuellement" et contenu calculé.

<auteurs>

{ document("biblio.xml")//livre[2]/auteur/nom }

</auteurs> Construction d'un élément auteurs pour encadrer la partie

calculée de la requête. Partie calculée (entre accolades) renvoie les nœuds nom de

l'élément livre parcouru en deuxième position dans le document biblio.xml.

Page 52: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 52

Constructeurs de nœuds XML (2/2)Constructeurs de nœuds XML (2/2)

Contexte calculé : construction d'éléments et d'attributs element { expr-nom } { expr-contenu } attribute { expr-nom } { expr-contenu } expr-nom : chemin pour calculer le nom de l'élément expr-contenu : contenu du nouvel élément (a évaluer)

Ex : Création d'un élément dans lequel le nom et le contenu sont calculés :

element { document("biblio.xml")//livre[1]/name(*[1]) }

{attribute

{ document("biblio.xml")//livre[1]/name(*[3]) }

{ document("biblio.xml")//livre[1]/*[3] }

}

Page 53: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 53

Chapitre 5 : XQuery et les BDChapitre 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…

Page 54: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 54

FonctionsFonctions

Fonctions et opérateurs prédéfinis : XQuery 1.0 Functions and Operators XPath 2.0 Functions and Operators

Fonctions racines (permettant l'accès au document xml) : input, collection(\url00), doc(\url00), …

Fonctions utilisateurs Définition de fonctions personnelles Ex : Fonction qui permet de renvoyer le nombre de fils auteur d'un élément. Le résultat est typé xsd:integer.

define function NombreAuteurs(livre $b)returns xsd:integer { return count($b/auteur) }

Page 55: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 55

OpérateursOpérateurs

Opérateurs permettent d'effectuer les traitements courants sur les valeurs, séquences et nœuds. Arithmétiques :

Opérateurs courants (+, -, mod, …) De manipulation de séquences :

Concaténation, union, intersection, différence De comparaison pour valeurs atomiques, nœuds et

séquences Booléens

and, or, not

Page 56: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 56

Séquences et valeurs typéesSéquences et valeurs typées

Fonctions et opérateurs sont typés et manipulent des Types mathématiques (entiers, …) Chaînes de caractères, Dates, Expressions régulières, …

Page 57: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 57

SynthèseSynthèse

En synthèse, il faut retenir que les fonctions et opérateurs XQuery permettent : L'accès au type et au nom d’un nœud, La construction, la comparaison et la transformation de

valeurs, L’agrégation des valeurs d’une séquence, La manipulation des chaînes de caractères, La conversion de types

Page 58: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 58

Résumé Syntaxique de XQueryRésumé Syntaxique de XQuery

Type d'expression Syntaxe

Séquence expression, …

Variable $a, $variable

Constante 'titi', 100

Numérique +, -, *, div, idiv, mod

Comparaison générale =, !=, <=, >=

Comparaison de valeurs eq, ne, lt, le, gt, ge

Comparaison de nœuds is, isnot

Comparaison d’ordre << >>

Logique and, or

Conditionnelle if, then, else

Quantitative some/every $variable in expr1 satisfies expr2

Ensemble union, intersect, except

FLWR for, let, where, return

Validation validate {expr1}

Chemin $variable/livre[@année=’2005’]/auteur

Page 59: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 59

Chapitre 5 : XQUERY et les BDChapitre 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…

Page 60: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 60

document exemple : biblio.xml document exemple : biblio.xml <bibliothèque>

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

<livre année="1995">

<titre> La marche des millénaires </titre>

<auteur><nom> Asimov </nom><prénom> Isaac </prénom></auteur>

<auteur><nom> White </nom><prénom> Frank </prénom></auteur>

<éditeur> Flammarion </éditeur>

<prix>8.45</prix>

</livre>

<livre année="2005">

<titre> Avant Dune </titre>

<auteur><nom> Anderson </nom>

<prénom> Kevin J. </prénom></auteur>

<auteur><nom> Herbert </nom><prénom> Brian </prénom></auteur>

<éditeur> Pocket </éditeur>

<prix>12.3</prix>

</livre>

</bibliothèque>

Page 61: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 61

Différence de séquences de nœudsDifférence de séquences de nœuds Différences et des concaténations de nœuds

Différence avec l'opérateur except Exclusion de la recherche d'un type de nœud.

Ex : Construction d'un noeud <livre> avec tous les éléments du premier nœud livre du document source sauf les nœuds auteur.

Requête

<livre> Tous les sous-éléments sauf les auteurs:

{ document("biblio.xml")//livre[1]/(* except auteur) }

</livre>

Résultat

<livre> Tous les sous-éléments sauf les auteurs:

<titre> Prélude à fondation </titre>

<éditeur> Pocket </éditeur>

<prix>6</prix>

</livre>

Page 62: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 62

Concaténation de séquences de nœudsConcaténation de séquences de nœuds Concaténation avec la syntaxe (noeud1,noeud2)

Renvoie les noeud1 puis les noeud2 du doc source.

Ex : Concaténation dans le document résultat des éléments prix et auteur du document source. ≠ union de nœuds (ordre des éléments ≠ dans les 2 documents)

Requête

<livre> Le prix suivi des auteurs:

{ document("biblio.xml")//livre[2]/(prix,auteur) }

</livre>

Résultat

<livre> Le prix suivi des auteurs:

<prix>8.45</prix><auteur><nom> Asimov </nom>

<prénom> Isaac </prénom></auteur><auteur><nom> White </nom>

<prénom> Frank </prénom></auteur>

</livre>

Page 63: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 63

Comparaison de valeurs atomiquesComparaison de valeurs atomiques

Opérateurs eq, ne, lt, le, gt, ge

Ex : Extraction des nœuds auteur dont le fils nom vaut "White".

Attention, cette comparaison n'est possible que si les deux protagonistes sont de type atomique. La requête

document("biblio.xml")//livre[auteur/nom eq "White"] renverra une erreur car auteur/nom renvoie une séquence de valeurs.

Requête

document("biblio.xml")//livre/auteur[nom eq "White"]

Résultat

<auteur><nom> White </nom><prénom> Frank </prénom></auteur>

Page 64: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 64

Comparaison de séquencesComparaison de séquences

Opérateurs =, !=, <=, >= S1 = s2 s’il existe au moins un élément dans s1 qui est

égal à un élément dans s2

Ex : Comptage du nombre d'éléments livre dont les fils nom contiennent au moins un des 2 noms Herbert ou White.

Requête

count(document("biblio.xml")//livre[auteur/nom = ("Herbert", "White")])

Résultat

2

Page 65: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 65

Comparaisons de noeudsComparaisons de noeuds

Comparaison d'identité avec l'opérateur is, isnot n1 is n2 signifie que n1 est identique à n2.

Ex : Extraction des nœuds livre qui ont exactement 2 fils auteur.

Requête

document("biblio.xml")//livre[auteur[2] is auteur[last()]]

Résultat

<livre année="1995">

<titre> La marche des millénaires </titre> […]

</livre>

<livre année="2005">

<titre> Avant Dune </titre> […]

</livre>

Page 66: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 66

Comparaisons par la positionComparaisons par la position

Opérateurs << et >> n1 << n2 signifie que n1 apparaît avant n2 dans le

document. n1 >> n2 signifie que n1 apparaît après n2 dans le

document.

Ex : Extraction du fils titre des éléments livre dans lesquels la valeur "Asimov" apparaît avant la valeur "White".

Requête

document("biblio.xml")//livre[auteur[nom="Asimov"] << auteur[nom="White"]]/titre

Résultat

<titre> La marche des millénaires </titre>

Page 67: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 67

Fonction de TriFonction de Tri

Expr1 sort by Expr2 (ascending | descending)

Trie les éléments de la séquence retournée par l’expression Expr1 par les valeurs retournées par Expr2.

Ex: Extraction du fils titre et l'attribut année de tous les nœuds livre du document ordonnée par rapport à la valeur de année.

Requête

<livres>{ for $b in document("biblio.xml")//livre

return <livre> { $b/titre, $b/@année } </livre>

sort by(@année) }

</livres>

Résultat<livres> <livre année="2005"><titre> Avant Dune </titre></livre>

<livre année="2002"><titre> Prélude à fondation </titre></livre>

<livre année="1995"><titre> La marche des millénaires </titre></livre>

</livres>

Page 68: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 68

Fonctions de QuantificationFonctions de 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 expr1 satisfies expr2 Tous les nœuds retournés par l’expression expr1

satisfont l’expression expr2.

Ex : Extraction des seuls éléments nom dont tous les ancêtres livre ont un fils éditeur qui a pour valeur "Pocket".

Requête

for $a in document("biblio.xml")//auteur

where every $b in document("biblio.xml")//livre

[auteur/nom = $a/nom]

satisfies $b/éditeur=" Pocket "

return string($a/nom)

Résultat

"Anderson, Herbert "

Page 69: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 69

Jointure entre fichiers (1/2)Jointure entre fichiers (1/2)

Pas de fonction prédéfinie mais mécanisme simple.

Soit un autre fichier ISBN.xml qui contient des titres de livres et les codes ISBN correspondant à ces ouvrages.

Ex : Création d'un document résultat contenant pour chaque livre à la fois son titre, sa référence ISBN et le nom de ses auteurs.

<ISBN>

<ouvrage>

<titre> Prélude à fondation </titre>

<ref>2-266-15253-X </ref>

</ouvrage>

[…]

</ISBN>

Page 70: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 70

Jointure entre fichiers (2/2)Jointure entre fichiers (2/2)

Construction élément livre avec attributs titre et ISBN Valeurs des nœuds titre et ref de ISBN.xml.

Construction fils auteur avec un attribut nom Valeur : jointure des titre de biblio.xml et ISBN.xml

Requête

for $a in document("ISBN.xml")//ouvrage

return element livre {

attribute titre {$a/titre}, attribute ISBN {$a/ref} ,

for $b in document("biblio.xml")//livre

where $a/titre = $b/titre

return element auteur { attribute nom {$b/auteur/nom} }}

Extrait du résultat

<livre titre=" Prélude à fondation " ISBN="2-266-15253-X ">

<auteur nom="Asimov" />

</livre>

Page 71: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 71

Exemples de fonctionsExemples de fonctions

Transformation nœud -> valeur : xf:string()

Index : index-of()

Requête

"Le titre du premier livre est",document("biblio.xml")//livre[1]/xf:string(titre)

Résultat

Le titre du premier livre est Prélude à fondation

Requête

let $bl := document("biblio.xml")//livre

for $b in $bl

return {$b/title {attribute no {index-of($bl, $b)}}}

Résultat

<titre no="1"> Prélude à fondation </titre>

<titre no="2"> La marche des millénaires </titre>

<titre no="3" > Avant Dune </titre>

Page 72: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 72

Chapitre 5 : XQUERY et les BDChapitre 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…

Page 73: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 73

Pour le TP : GalaxPour le TP : Galax

Le logiciel Galax est une implantation de XQuery développé par les laboratoires Bell Labs et AT&T.

Requêtes stockées dans des fichiers xxx.xq qui sont passés comme argument à l'interpréteur galax (sous une invite dos) galax exemple1.xq

Pour envoyer le résultat produit par l'exécution de la requête dans un fichier xml, il faut utiliser l'option -output-xml. galax exemple1.xq -output-xml toto.xml

Liste des options de la commande : galax –help

Documentation sur le site de Galax pour plus de détails http://www.cise.ufl.edu/research/mobility/

Page 74: 2ème partie :  Gestion de contenus Web

ACCARY-BARBIER / CNAM - Cycle C - 2007-2008 74

Pour en savoir plus...Pour en savoir plus...

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 : http://www.galaxquery.org/