Bases de Données XML : interrogation d'une base BaseX avec XQuery

Exploitation de données

L'un des grands intérêt de BaseX est l'exploitation de volumes importants de données fournis sous format XML ce qui le rend intéressant pour l'exploitation des données Open Data.

De nombreuses sources sont disponibles sur internet permettent d'obtenir des fichiers exploitables :

Pour cette exercice, nous allons exploiter les données sur les prix des carburants mises à disposition quotidiennement sur le site :

http://www.prix-carburants.economie.gouv.fr/rubrique/opendata/

Mise en place BaseX

  • Pour accéder à l'interface de BaseX, exécuter .../basex/bin/basexgui avec ./basexgui

Import du fichier XML

Après avoir téléchargé le fichier à l'adresse http://donnees.roulez-eco.fr/opendata/jour et en extraire le XML, il faut créer une nouvelle base à partir de ce fichier sous BaseX.

Pour cela :

  1. Database -> New (raccourci CTRL + N)

  2. Dans le champ input file or directory : browse => fichier xml téléchargé.

  3. OK

  4. La base est chargée !

CTRL+C pour copier, CTRL+V pour coller
1
for $station in //pdv
2
return $station 
3
for $station in //pdv
return $station 

Visualisation des données

Explorer le fichier XML grâce aux différentes vues de BaseX. Utiliser diverses représentations graphiques. Pour cela :

  1. Cliquer sur "Vizualisation"

  2. Selectionner une représentation

  3. Explorer les données

Question

Donner la liste des points de vente existant à Compiègne.

Question

Compter, pour chaque station présente à Compiègne, le nombre de service qu'elle offre et produire un XML de la forme :

CTRL+C pour copier, CTRL+V pour coller
1
<listeStation>
2
  <station id="$ID">
3
     <adresse> $Adresse </adresse>
4
     <nombreService> $NBService </nombreService>
5
   </station>
6
</listeStation>
<listeStation>
  <station id="$ID">
     <adresse> $Adresse </adresse>
     <nombreService> $NBService </nombreService>
   </station>
</listeStation>

Question

Donner le nombre de stations services qui proposent chaque type d'essence et le prix moyen.

CTRL+C pour copier, CTRL+V pour coller
1
<récapitulatif>
2
 <produit nom="$Variable1"> 
3
    <nombreStation> $NOMBRE_STATION </nombreStation> 
4
    <prixMoyen> $PRIX_MOYEN </prixMoyen>
5
 </produit>
6
</récapitulatif>
<récapitulatif>
 <produit nom="$Variable1"> 
    <nombreStation> $NOMBRE_STATION </nombreStation> 
    <prixMoyen> $PRIX_MOYEN </prixMoyen>
 </produit>
</récapitulatif>
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Vincent Keller, Alexandre Mertz, 2015-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)