Table des matières
TME RDF et SPARQL Jena
Ce TME utilise l'outil ARQ de Jena qui permet de stocker et d'interroger des données RDF. Pour s'en servir, suivre les étapes suivantes :
- créer un répertoire jena et y extraire le contenu de apache-jena-2.12.1.tar.gz en tapant
mkdir /tmp/jena && tar xzf /Infos/bd/sparql/apache-jena-2.12.1.tar.gz -C /tmp/jena
- mettre à jour la variable d'environnement $PATH en tapant
cat /Infos/bd/sparql/jena-export.txt >> ~/.bashrc && source ~/.bashrc
Pour vérifier que vous avez bien configuré jena, taper
which arq
vous deviez obtenir
/tmp/jena/apache-jena-2.12.1/bin/arq
Pour avoir l'aide, taper
arq -h
Pour charger les données : Désarchiver l'archive contenant les jeux de données sont disponibles dans l'archive en tapant
tar xvf /Infos/bd/sparql/TME-RDF.tar cd TME-RDF
puis vérifier que le répertoire contient bien les fichiers :
Ex1.ttl Ex2.ttl Ex3.ttl Ex4.ttl
Pour vérifier que le format des fichiers correspond bien au format turttle, taper
turtle Ex1.ttl |wc -l
et vérifier que vous obtenez bien 7.
Pour tester une requête taper
arq --data Ex4.ttl --query test.spl
et observer le résultat obtenu. Ce dernier doit avoir la forme ci-dessous.
----------------------- | dept | COUNT | ======================= | "chemistry" | 1 | | "surgery" | 1 | | "urbanism" | 1 | | "culture" | 2 | -----------------------
Travail à faire
Exercice facultatif
Construire des requêtes SPARQL à partir des motifs de l'exercice 2 du TD et les tester sur les triplets du fichier Ex2.ttl.
Exercice obligatoire
Reprendre les exercices 3 et 4 du TD en utilisant, respectivement, les triplets des fichiers Ex3.ttl et Ex4.ttl. Vous pouvez utiliser les fichiers qx_Ex3.spl et qx_Ex4.spl fournis. Écrivez chaque requête dans un fichier séparé.
Réponses attendues Exercice 3:
- Q1: Extraire l’ensemble des IRI des sujets
idem en retournant les noms locaux
- Q2: Même question avec les prédicats.
- Q3: Les villes citées dans des triples de cette base.
- Q4: Les personnes qui ont étudié dans la même université que l’un de leur parents (sans prendre en compte la propriété childOf).
- Q5: Les personnes qui ont étudié dans une université où leur deux parents ont étudié.
- Q6:Donnez les personnes qui ont étudié dans une université où aucun de leur parent n’a étudié. Pas de résultat.
- Q7: Donnez les noms et les universités des personnes qui ont au moins un frère ou une soeur.
p | u |
:john | :ucsd |
:richard | :mit |
:liz | :cmu |
*Question subsidiaire Donnez les noms et les universités des personnes qui ont au moins un frère ou une soeur et qui n'ont pas de frère ou de soeur qui ont étudié à la même université qu'elles.
- Q8: Extraire les personnes qui étudient dans une ville différente de celle où ils habitent.
- Q9: Extraire les personnes qui sont ami(e)s d’un(e) ami(e) de Liz. Remarque : ne pas retourner Liz et les ami(e)s direct(e)s de Liz!
Réponses attendues Exercice 4:
- Q1: Noms des employés avec leur job suivant l’ordre alphabétique décroissant de leur nom.
- Q2: Les 3 premiers employés suivant l’ordre alphabétique de leurs noms de famille (surname).
- Q3: Les 3 premiers employés, qui ont un nom de famille (surname) et qui sont les mieux payés.
- Q4: Les employés qui ne sont ni médecin ni chanteur.
- Q5: Les employés dont le nom commence par l.
- Q6: Le plus grand salaire (sans utiliser ORDER BY et LIMIT). Retourner l'employé et son salaire.
- Q7 : Les couples d'employés qui gagnent le même salaire (chaque couple d'employés doit apparaître une seule fois). Indice : utiliser la fonction str(?v) pour extraire la chaîne de caractères à partir de ?v.
- Q8 : Les couples d'employés tels que la différence entre leurs salaires est supérieure à 5. Indice : utiliser xs:integer(?l) pour convertir le literal ?l en entier. Ajouter le préfixe prefix xs: <http://www.w3.org/2001/XMLSchema#>
- Q9: Le nombre de départements.
Documentation diverse
- Pour comparer des chaînes de caractères, utiliser la fonction
regex(str(?n), “expression régulière”)
- Voir les exemples de requêtes posées sur les données Wikidata.