Master TIW - Interopérabilité
Pierre-Antoine Champin
Support de cours
http://champin.net/2016/lod
Sujets de TP
- TP n°1 (12/11/2018, 10/12/2018)
- TP n°2 À VENIR
TP n°1 : Publication de données liées à partir d'une BDR
Mise en place
- Téléchargez l'application D2RQ.
- Téléchargez le driver JDBC de Sqlite, et placez le dans le répertoire
lib
de D2RQ.
Téléchargez la base de données SQlite nobel.sqlite et placez là dans le répertoire de D2RQ.
NB: le schéma de cette base peut être consulté au début du fichier nobel.sql.
À l'aide du script generate-mapping
, générez un premier fichier mapping.ttl
pour la base nobel
.
NB: l'URL JDBC est de la forme jdbc:sqlite:[chemin_du_fichier]
Lancez la commande:
d2r-server mapping.ttl
et visitez <http://localhost:2020/>.
Votre travail
En vous appuyant sur la documentation de D2RQ, Modifiez le fichier mapping.ttl
afin d'améliorer la qualité des données publiées. Vous devez notamment:
- faire en sorte que les données aient le bon type de données;
- notez que les dates sont dans un format non-standard (MM/JJ/AAAA), qu'il faudra convertir à l'aide d'une expression SQL ;
- notez aussi que de nombreuses chaînes vides représentent en fait l'absence de valeur ;
- établir les liens appropriés entre les instances générées par les différentes tables:
Prizes
→ Laureates
,
Laureates
→ Countries
;
- mettre en place des tables de traduction pour remplacer certaines valeurs par des IRIs reconnus, par exemple :
- mettre en place une table de traduction basée sur le fichier laureate_dbpedia.csv pour créer des liens
owl:sameAs
entre les lauréats et leur identifiant DBPedia;
remplacer autant que possible le vocabulaire spécifique généré par des termes reconnus, empruntés aux vocabulaires:
notez qu'il peut-être pertinent de publier une information redondante, en utilisant des termes similaires provenant de vocabulaires différents.
- Il pourra également être pertinent de séparer la table
Laureates
en deux classes : Personne et Organisation;
- remarquez pour cela que les organisations sont identifiable par leur genre (qui vaut 3) et ne sont décrites que par leur nom (colonne
firstname
).
Pour cette dernière question, nous allons utiliser la source de données http://data.nobelprize.org/sparql, qui est la version officielle du travail que vous avez effectué précédemment.
- Le modèle de cette base de donnée est (partiellement) décrit dans cette figure.
- Les liens avec DBPedia (http://dbpedia.org/sparql) sont décrits cette figure.
Les préfixes utilisés dans cette figure sont les suivants:
PREFIX nobel: <http://data.nobelprize.org/terms/>
PREFIX cat: <http://data.nobelprize.org/resource/category/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
Pour poser vos requêtes, il vous est recommandé d'utiliser Yasgui (en prenant bien soin d'indiquer data.nobelprize.org
comme source de données).
Écrivez les requêtes SPARQL qui permettent de répondre aux questions suivantes :
- Q1: Trouvez le(s) nom(s) du/des laureat(s) du prix Nobel de Chimie en 1950 (2 résultats);
- Q2: Trouvez les noms des lauréats encore vivant, avec leur date de naissance, triés par l'année de leur récompense (289 résultats).
- Q3: le nombre total de lauréat par année, trié par années décroissantes (115 résultats).
- Q4: le nombre moyen de lauréats par année (1 résultat).
- Q5: à l'aide d'une requête fédérée, les noms des lauréats dont un doctorant a reçu un prix Nobel avant eux, ainsi que le nom du doctorant et les années de leurs récompenses (attention à l'ordre dans lequel vous interrogez les données) (14 résultats).
- Q6: à l'aide d'une requête fédérée, les noms des lauréats dont un enfant a reçu un prix Nobel, ainsi que le nom de cet enfant (3 résultats).
Le rendu se fera par dépôt de fichier sur Tomuss avant le 16 décembre, 23:59.