Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:master:mlbda:tmes:xquery1

TME XQuery : séance 1 (ancienne page)

Documentation XQuery

commande description
cd aller dans votre répertoire $HOME
tar zxvf $BD_TOOL/xquerybis.tgz installer l'archive dans votre répertoire principal
cd xquery aller dans votre répertoire de travail
cp /Infos/bd/basex.jar . & copier l'outil BaseX dans votre répertoire de travail
java -jar basex.jar lancer l'outil BaseX (attendre quelques secondes)

Outil BaseX

Après avoir lancé l'outil BaseX, commencer par créer une BD à partir d'un fichier XML. Pour ce faire, suivre les étapes suivantes :

1- aller dans le menu Database puis New. La fenêtre Create Database va s'ouvrir comme suit

2- Cliquer bouton Browse et sélectionner le fichier rencontre.xml pour charger le document dans la base.

Remarque Pour charger le contenu d'un repertoire, sélectionner le répertoire en question au lieu d'un fichier.

3- Activer l'affichage de la représentation arborescente. Pour ce faire, dérouler le menu Visualization et cliquer Tree. Le résultat est comme suit

4- Tester la requête ci-dessous et appuyer sur le triangle vert pour exécuter la requête. Les résultats de cette requete sont en rouge dans l'arbre original.

for $r in //rencontre
return $r

Remarque 1 Il est évident que si le résultat de votre requete est un nouvel élément construit par copie d'autres éléments de votre document interrogé, les éléments de ce dernier ne seront pas coloriés.

Remarque 2 Pour (dé)commenter un paragraphe, sélectionner le paragraphe et saisir Ctrl-k

Exercice 1

Pour cet exercice, utiliser les données Xmark contenues dans le fichier xmark10MB.xml. Les données Xmark sont synthétiques mais reflètent un scénario réel, celui des enchères.

  • Les éléments item sont des objets à vendre ou qui sont déjà vendus.
  • Les éléments auction sous open_auctions correspondent à des enchères en cours qui peuvent soit augmenter soit diminuer.
  • Les éléments auction sous closed_auctions correspondent à des enchères terminées.

Afin de faciliter la formulation des requêtes, vous pouvez vous appuyer sur structure globale du document XMark représentée ci-dessous.

Il vous est demandé de formuler en XQuery les requêtes permettant de retourner les informations ci-dessous. Les résultats sont consultables sur la page Résultat requêtes Xmark.

  1. Le nom de la personne dont l'identifiant est “person0”.
  2. La valeur initiale (élément initial) des trois premières enchères en cours.
  3. La valeur de la première et de la dernière augmentation (élément increase de bidder) effectuée sur les trois premières des enchères en cours, selon l'ordre des enchères défini dans les données xml (ne pas trier les enchères chronologiquement).
  4. Le prix des objets vendus à plus de 480.
  5. Le nom des objets du continent africain
  6. Le nom des objets du continent africain avec leur prix de vente
  7. Le nombre de personnes qui n'ont pas de page web (i.e. les personnes sans élément homepage)

Réponses

- Le nom de la personne dont l'identifiant est “person0”.

for $x in /site/people/person[@id="person0"]
return $x/name

- La valeur initiale des trois premières enchères en cours.

for $x in /site/open_auctions/auction[position()<4]
return <result id="{$x/@id}" >{$x/initial}</result>

- La valeur de la première et de la dernière augmentation effectuée sur les trois premières des enchères en cours, selon l'ordre des enchères défini dans les données xml (ne pas trier les enchères chronologiquement).

for $x in /site/open_auctions/auction[position()<4]
return <result id="{$x/@id}" ><first>{$x/bidder[1]/increase/text()}</first><last>{$x/bidder[last()]/increase/text()}</last></result>

- Le prix des objets vendus à plus de 480.

for $x in //closed_auctions/auction,
$y in //item
where $x/price/text()>480 and $x/itemref/@item =$y/@id
return $x/price

- Le nom des objets du continent africain

for $x in //regions/africa
return $x/item/name

- Le nom des objets du continent africain avec leur prix de vente

for $x in //regions/africa/item
for $y in //closed_auctions/auction
where $x/@id=$y/itemref/@item
return <res>{$x/name, $y/price}</res>

- Le nombre de personnes qui n'ont pas de page web (i.e. les personnes sans élément homepage)

count(for $p in //person
where empty($p/homepage)
return $p)

Exercice 2

Poursuivre sur les questions de l'exercice 2 du TD en utilisant les données bib.xml. Pour ce faire, commencer par charger dans BaseX le fichier bib.xml en suivant les instructions décrites précédemment.

FAQ

site/enseignement/master/mlbda/tmes/xquery1.txt · Dernière modification: 22/11/2020 15:04 par amine