BD2 TP5 : XQuery

Transcription

BD2 TP5 : XQuery
BD2
TP5 : XQuery
Yoann Couillec
30 mars 2015
1
Introduction
Le but de ce TP est d’apprendre à manipuler le langage de requête XQuery.
XQuery s’exécute sur des fichiers de données XML.
2
Installation
Installer le logiciel BaseX (http://files.basex.org/releases/). Pour ceux
qui ont Mac, exécuter le fichier JAR est suffisant. Pour Windows, installer avec
le fichier .exe.
Importer les fichiers movies_alone.xml et artists_alone.xml.
3
Langage XQuery
3.1
Exemple de requête
let $ms:=doc("movies_alone.xml")
return <movies> {
for $m in $ms/movies/movie
return
<movie>
{$m/title}
</movie>
} </movies>
Résultat :
<movies>
<movie>
<title>A History of Violence</title>
</movie>
...
1
3.2
Question 1
Le titre et l’année des films sortis après 2002.
<movies>
<movie>
<title>A History of Violence</title>
<year>2005</year>
</movie>
...
3.3
Question 2
Le nom de tous les rôles avec le titre du film.
<results>
<result>
<title>A History of Violence</title>
<role>Tom Stall</role>
</result>
...
3.4
Question 3
Le nom du film dans lequel le réalisateur est aussi acteur.
<results>
<result>
<title>Unforgiven</title>
</result>
</results>
3.5
Question 4
Une liste des genres avec les titres des films correspondant.
<results>
<genre name="Action">
<title>Spider-Man</title>
</genre>
<genre name="Crime">
<title>A History of Violence</title>
<title>Heat</title>
<title>Match Point</title>
</genre>
...
2
3.6
Question 5
Pour chaque acteur, la liste des films dans lesquels il a joué.
<results>
<actor>2,<title>A History of Violence</title>
</actor>
...
<actor>16,<title>Match Point</title>
<title>Lost in Translation</title>
</actor>
...
3.7
Question 6
Pour chaque film, le nom et le prénom du réalisateur.
<results>
<movie>
<title>A History of Violence</title>
<director>
<last_name>Cronenberg</last_name>
<first_name>David</first_name>
</director>
</movie>
...
3.8
Question 7
La liste des films avec seulement les deux premiers rôles.
<results>
<result>
<title>A History of Violence</title>
<actor id="2" role="Tom Stall"/>
<actor id="3" role="Eddie Stall"/>
<et-al/>
</result>
...
3