XQUERYXQUERYXQUERY Encadré par : Mr . Belhmar Elaboré par : Mr . Faissal Boutra
XQUERYXQUERYXQUERY Encadré par : Mr . Belhmar Elaboré par : Mr . Faissal Boutraba Mr . Anass Tahiri 3éme année Année universitaire 2011/2012 1. Introduction 2. Du relationnel à XML 3. XQuery en bref 4. Modèle de données 5. Construction d’expressions XQuery 6. Expressions FTWOR 7. Structure d’une requête 8. Résume Plan de la présentationPlan de la présentationPlan de la présentation SourcesSourcesSources Tutorial de Chamberlin Tutorial de Moller Tutorial de Schwartzbach Site web officiel : http://www.w3.org/XML/Query XSL versus XQueryXSL versus XQueryXSL versus XQuery L’objectif de transformation est le même Certains éléments sont communs (Xpath, Xschema) XSL = Procédural XQuery = Déclaratif Historique de XQueryHistorique de XQueryHistorique de XQuery • 1998: W3C sponsors workshop on XML Query • 1999: W3C charters XML Query working group Currently 39 members, representing 25 companies • 2000: WG publishes req'ts, use cases, data model • 2001: WG publishes draft language spec's • 2002: Working drafts updated periodically • 2003: WG publishes full-text req'ts and use cases; • XQuery Version 1 working drafts enter "last call" Du relationnel à XMLDu relationnel à XMLDu relationnel à XML Le stockage d’informationsLe stockage d’informationsLe stockage d’informations • La plupart des informations disponibles actuellement sont stockées dans des bases relationnelles. • Le langage SQL est mature, et bien implanté • Peut-on adapter SQL aux données semi- structurées ? – Récupérationd’applications – Récupération de compétences – En quoi les données XML sont elles différentes ? Du relationnel vers XML : Les Du relationnel vers XML : Les Du relationnel vers XML : Les structures de donnéesstructures de donnéesstructures de données Relation N-uplets Attributs Relationnel = Arbre a deux niveaux, contraint XML = Arbre quelconque Du relationnel vers XMLDu relationnel vers XMLDu relationnel vers XML Et le langage de requêtes ? Question : Peut on (et doit on) généraliser SQL de la même manière ? Une structure plus complexeUne structure plus complexeUne structure plus complexe • En XML, il est naturel de chercher de manière indépendante du niveau. • Exemple : trouver tout ce qui est rouge – //*[@couleur = « rouge »] Relationnel : Uniforme et répétitif Tous les comptes en banque ont une structure similaire Les méta-informations peuvent être stockées à part XML : très variable ! Chaque page Web est différente Chaque objet XML doit se décrire, les métadonnées sont dans le document • Exemple : trouver tous les éléments qui ont le contenu identique à leur nom – //*[name(.) = string (.)] Des séquences hétérogènesDes séquences hétérogènesDes séquences hétérogènes • Les requêtes SQL retournent des ensembles de résultats homogènes • Lesrésultatsd’unerequêteXMLpeuventêtredetype différent, et des structures complexes – Exemple : //*[couleur=« rouge »] peut retourner unecerise,unevoiture,undrapeau… – On retrouve côte à côte des éléments et des valeurs atomiques (mixité) • Les requêtes XML doivent pouvoir effectuer des transformations structurelles – Exemple:inverserl’ordredansunehierarchie Importance de l’ordreImportance de l’ordreImportance de l’ordre • Opérations ensemblistes et non ordonnées pour SQL – Un ordre peut être établi en utilisant les valeurs des n-uplets : select nom, prenom from etudiants order by nom • EnXMLl’ordreauneimportance – L’ordreapparaîtàplusieursniveaux • Trouver le 5e arrêt • Trouver les outils utilisés avant le marteau • Conséquences: – Lesrequêtesdoiventprendrel’ordreencompte Information manquanteInformation manquanteInformation manquante • Les données relationnelles sont denses – Chaque rangée a une valeur dans chaque colonne – Problème des valeurs nulles • Cen’estpaslecasdeXML – Eléments vides – Eléments absents • C’estundegrédelibertésupérieurpourXML En conclusion …En conclusion …En conclusion … XML est très différent de SQL, et justifie donc le fait de vouloir un langage de requêtes dédié. Mais la tâche n’est pas simple … XQuery en brefXQuery en brefXQuery en bref Les besoins du langage de requêteLes besoins du langage de requêteLes besoins du langage de requête En résumé : • Déclaratif • Indépendant du protocole • Respect du modèle de données XML • Compréhension des espaces de noms • Coordination avec XML Schema / doit marcher sans • Doit supporter des types de données simples et complexes • Doit supporter les quantificateurs existentiels et universels • Doit supporter les opérations sur les hiérarchies et séquences • Doit pouvoir combiner des informations de plusieurs documents • Doitsupporterl’agrégation • Doit pouvoir transformer et créer des structures XML • Doit être en XML ? (XQueryX) Les propositions initialesLes propositions initialesLes propositions initiales • Lorel Abiteboul et al. • Quilt Chamberlin, Florescu, Robbie • XML-QL Deutsch et al. • YATL Cluet, Siméon Principes de XQueryPrincipes de XQueryPrincipes de XQuery • Fermeture – Définirunmodèlededonnéesetunensembled’opérateurs fermés sous le modèle • Composabilité – Xqueryregroupediversesortesd’expressions – Chaque expression peut être évaluée sans effet de bord – Les expressions peuvent être composées en toute généralité • Conformation au schéma – Utiliser XML Schema – Types prédéfinis Principes de XQueryPrincipes de XQueryPrincipes de XQuery • Compatible Xpath – Adopter Xpath comme sous ensemble syntaxique – Compatibilité avec Xpath 1.0 et 2.0 • Complétude – Aussi bon que le relationnel – Aucunstandardn’existepourleslangages hiérarchiques – Fonctions récursives • Concisetsimpled’expression Principes de XQueryPrincipes de XQueryPrincipes de XQuery Doit permettre une analyse statique Phase optionnelle d’analyse statique avant chaque exécution de requête Règles d’inférence de type basées sur XML Schema Permet la détection d’erreurs à la compilation Facilite l’optimisation Le modèle de données de XQueryLe modèle de données de XQueryLe modèle de données de XQuery Un modèle simpleUn modèle simpleUn modèle simple • Une Valeur est une séquence ordonnée de 0 ou plusieurs items. • Un item estunnœudouunevaleuratomique • Ilya7sortesdenœuds: – Document Node – Element Node – Attribute Node – Text Node – Comment Node – Processing Instruction Node – Namespace Node Exemples de valeursExemples de valeursExemples de valeurs • 47 • <A/> • (1, 2, 3) • (47, <A/>, "Hello") • ( ) • Un document XML • Un attribut seul Quelques remarques sur les Quelques remarques sur les Quelques remarques sur les valeursvaleursvaleurs • Iln’yapasdedistinctionentreunitem et une séquence de longueur 1. • Iln’yapasdeséquencesimbriquées • Iln’yapasdevaleurnulle • Une séquence peut être vide • Une séquence peut contenir des données hétérogènes • Toutes les séquences sont ordonnées Quelques remarques sur les itemsQuelques remarques sur les itemsQuelques remarques sur les items • Lesnœudsontuneidentité(lesvaleurs atomiquesn’enontpas) • Lesnœudsdetypeelementetattributontdes annotations de type – Ellessontdéterminéeslorsquelesnœudssont validés – Le type peut être complexe, voir inconnu • Chaquenœudaunevaleurdetype – Une séquence de valeurs atomique – Peut être de type inconnu • Chaquenœudestordonnéauseindu document dont il est issu Exemple de document XMLExemple de document XMLExemple de document XML <?xml version = "1.0"?> <!-- Requires one trained person --> <procedure title = "Removing a light bulb"> <time unit = "sec">15</time> <step>Grip bulb.</step> <step> Rotate it<warning>slowly</warning> counterclockwise. </step> </procedure> Sa représentation dans le modèle Sa représentation dans le modèle Sa représentation dans le modèle de donnéesde donnéesde données Query Data ModelQuery Data ModelQuery Data Model Construction d’expressions Construction d’expressions Construction d’expressions XQueryXQueryXQuery Règles générales de XQueryRègles générales de XQueryRègles générales de XQuery • Xquery est un langage sensible à la casse – Les mots clés sont en minuscules • Chaque expression a une valeur, et pas d’effetdebord • Les expressions sont composables • Les expressions peuvent générer des erreurs • Les commentaires sont possibles – (: un commentaire :) Qu’est ce qu’une requête Xquery?Qu’est ce qu’une requête Xquery?Qu’est ce qu’une requête Xquery? Une requête est une expression qui Lit une séquence de fragments XML ou de valeurs atomiques Retourne une séquence de fragments XML ou de valeurs atomiques Les formes principales que peuvent prendre une expression Xquery sont : Expressions de chemins Contructeurs Expressions FLWOR Expressions de listes Conditions Expressions quantifiées Expressions de types de données Fonctions Contexte d’évaluationContexte d’évaluationContexte d’évaluation Les expressions sont évaluées relatives à un contexte: Espace de nom Variables Fonctions Date et heure Item contexte (nœud courrant) Position (dans la séquence en train d’être traitée) Taille de cette séquence ExemplesExemplesExemples • Littéraux : "Hello" 47 4.7 4.7E-2 • Valeurs construites : – true() false() date("2002-03-15") • Variables : $x • Séquences construites : – $a, $b pareil que ($a, $b) – (1, (2, 3), ( ), (4)) pareil que 1, 2, 3, 4 – 5 to 8 pareil que 5, 6, 7, 8 Les fonctionsLes fonctionsLes fonctions • Les fonctions Xquery ont comme corps une expression Xquery, et peuvent être récursives • Appel de fonction : – three-argument-function(1, 2, 3) – two-argument-function(1, (2, 3)) – one-argument-function(()) – zero-argument-function() • Les fonctions ne sont pas surchargées. • Substitutiond’unsoustypedanslepassage de paramètres géré Les expressions de cheminLes expressions de cheminLes expressions de chemin Vous connaissez déjà Xquery ! Une expression de chemin Xpath est une requête Xquery Un chemin retourne un ensemble ordonné de nœud d’un document (cf XSL) ExempleExempleExemple • document("recipes.xml")//recipe[title=« Lingui ne Pasta"]//ingredient[@amount] • Resultat: <ingredient name="olive oil" amount="2" unit="tablespoon" /> <ingredient name="minced cloves of garlic" amount="2" /> <ingredient name="Italian seasoning" amount="0.5" unit="teaspoon" /> <ingredient name="dried thyme" amount="0.25" unit="teaspoon" /> <ingredient name="crushed red pepper flakes" amount="0.25" unit="teaspoon" /> <ingredient name="crushed tomatoes" amount="1" unit="can" /> <ingredient name="black olives, drained" amount="6" unit="ounce" /> <ingredient name="whole baby clams" amount="10" unit="ounce" /> <ingredient name="minced clams, with juice" amount="6.5" unit="ounce" /> <ingredient name="small salad shrimp" amount="0.25" unit="pound" /> <ingredient name="scallops" amount="0.25" unit="pound" /> <ingredient name="lemon zest" amount="2.5" unit="teaspoon" /> <ingredient name="salt" amount="*" /> <ingredient uploads/s3/ presentation-plateforme-seminaires 1 .pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/PqKbhLEvbfTiFNCHWIfKWXUzfSVmJj0TXXolICNDRqbN6ChBmeyfQ9QiUCmN8sdbec4nq7Mtx3JyPgsITYtPyxiN.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/yaVwR6IcihjETKEF9Td5Vf6UnKSoP8zTMXvNUeIHnsBoBto966A0D1rLUdT4TzN3u1FGDgBci1c5fYcJp657l1Ei.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/LN7ZnZJ1YkxQeHG8heYQcYHTEMdtF0U2hQQlDfFv2f00aZ09JFGSAw3dfv9fMlvE6HlHcT1JDEqsDdg8npSOAxI8.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/HuIRlw77FoVGsxscgjFqLvKyGG1vmeX0KPwwNmZ5fdE9gqz8HqfKSUVS38J8daKB3Qb9456g4TEYDllqC3svjbBN.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/TJy84m0Wyl4PbmSdcDs0CZteDL21JjdxGyL9dJynPT3tWh6hLiugiLHGAZKrurWlSU8KmNQPltcu4oM1y8gASd52.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/Zmlio9KJy5ULWCQNQgQge0tbI0oBDlH0NmmKVVLhbOKyYdWsMNFmu8tRkQz0DiHKZTBQ10om5vNlOj734xz4bwvV.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/fPn25GnF9XCoeRuSQDejFp0LUJ4r9WIUMWXwyvUPvzJuxHTEiOSIQ8XLCbgk6AzfZQitnnaDOdqXqDe4GAvMP8nL.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/YW54fnDyjaBcr47ccHqK5NRhbj8XiS9tffrg1fuf6dctOkekUr92MEjf0ovjK4ep7tknNSMnUDhi2FB1pSSvk2QG.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/lIGor77A6R9j6BuKiWNGqSzoCEAfrQRT4KHNiUMG61ZjtydrtRagYWdxyC0yVQ5lPFhI47OaKxLRa1nBSXoAEKvm.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/XRljIONMsuGK7RSw4tSCYcwtqr74bLTqHCERr1QPPgwxaGSuDZKDlplvDvtVaE3zhWhhP39oPh6KSB9mF136j0RY.png)
-
22
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 06, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 2.3417MB