Master TIW - Interopérabilité
Pierre-Antoine Champin
Support de cours
http://champin.net/2016/lod
Sujets de TP
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
).
TP n°2 : Interrogation de données liées en SPARQL
Mise en place
Nous allons utiliser la source de données http://data.nobelprize.org/sparql, qui est la version officielle du travail que vous avez effectué à la précédente séance.
- 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.
Votre travail
Écrivez les requêtes permettant de connaître:
- Q1: le(s) nom(s) du/des laureat(s) du prix Nobel de Chimie en 1950 (2 résultats);
- Q2: les noms des lauréats nés dans la France actuelle (
dbr:France
), avec, le cas échéant, leur ville de naissance (54 résultats).
- Q3: les noms des lauréats encore vivant, avec leur date de naissance, triés par l'année de leur récompense (283 résultats).
- Q4: le nombre total de lauréat par année, trié par années décroissantes (113 résultats).
- Q5: le nombre moyen de lauréats par année (1 résultat).
- Q6: à 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).
- Q7: à 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).
- Q8: à l'aide d'une requête fédérée, trouvez les trois personnes (pas forcément lauréats) dont les doctorants ont reçu le plus de prix Nobel différents (3 résultats).
Le rendu se fera par dépôt de fichier sur Tomuss avant le 22 octorbre, 23:59.
TP n°3 : Interopérabilité à base d'ontologies
Mise en place
Téléchargez et installez le logiciel Protégé.
Lancez Progété, et choisissez l'option « Open OWL ontology from URI », et ouvrez l'ontologie :
http://champin.net/2017/tiw-interop/o1.owl
Prise en main
Ouvrez l'onglet Entites pour vous familiariser avec l'ontologie, notamment via les panneaux de gauche: Classes, Object properties, Data properties, Individuals. Examinez les différents axiomes portés par les différentes classes et propriétés.
NB: dans l'interface de Protégé, les termes de l'ontologie sont toujours des liens, qui vous permettent de naviguer facilement d'un élément à l'autre, sans forcément passer par les panneaux de gauche.
- Dans les préférences (menu File), allez dans l'onglet Reasoner et cochez toutes les cases qui ne le sont pas.
- Lancez maintenant le moteur d'inférence : dans le menu Reasoner, sélectionnez 'HermiT', puis Start reasoner. Notez que, pour les individus, de nouveaux axiomes (sur fond jaune pale) apparaissent. Le bouton '?' présent sur chaque axiome inféré donne des explication sur l'inférence.
Une fois familiarisé⋅e⋅s avec cette ontologie, faites le même travail avec :
http://champin.net/2017/tiw-interop/o2.owl
Votre travail
- Créez une nouvelle ontologie.
- Depuis le panneau Imported ontologies de l'onglet Active Ontology, importez les deux ontologies vues précédemment. Vous devez constater que les classes, propriétés et individus des deux dontologies apparaissent maintenant dans l'onglet Entities.
- Activez le moteur d'inférence (comme indiqué ci-dessus).
On souhaite fusionner ces deux sources de données, en permettant leur interrogation selon le vocabulaire de l'une ou de l'autre. Par exemple, on souhaite que :
- toutes les personnes décrites dans l'une ou l'autre ontologie, soient reconnues comme des instances de
o1:Person
;
- tous les personnes à qui une autre personne enseigne (un cours) apparaissent comme des valeurs de la propriété
o2:enseigneA
pour cette autre personne ;
- etc.
- Dans un court document que vous déposerez sur Tomuss, décrivez chacun des axiomes que vous aurez créé, la motivation pour le faire, et les résultats (nouvelles inférences) obtenus.