TP : Linked Opend Data & SparQL
Auteur
- Stéphane Derrode & Lamia Derrode, Centrale Lyon, Dpt Mathématiques & Informatique
Objectifs
- Répondre à 14 requêtes sur la base linked open data appelée DBPedia.
- Imaginer une requête originale sur une base de données linked open data.
Voici une référence sur le langage SPARQL. Sinon : SPARQL By Example: The Cheat Sheet.
Table des matières
Travaux pratiques sur DBPedia¶
Pour répondre aux question vous utiliserez le client léger Yasgui.
Quelques URIs utiles¶
foaf:Person | Classe | Classe des personnes |
dbo:Country | Classe | Classe des pays |
foaf:name | Propriété | Nom d’une personne (entre autre) |
dbo:birthDate | Propriété | Date de naissance d’une personne |
dbo:birthPlace | Propriété | Lieu de naissance d’une personne |
dbo:deathDate | Propriété | Date de décès d’une personne |
dbo:deathPlace | Propriété | Lieu de décès d’une personne |
dbo:city | Propriété | Ville |
dbo:country | Propriété | Pays auquel un lieu appartient |
dbo:mayor | Propriété | Maire d’une ville |
dbr:Lyon | Instance | La ville de Lyon |
dbr:France | Instance | La France |
Prefixes utilises pour acceder aux vocabulaires¶
De manière générale, pour trouver un préfix, visitez ce site.
14 requetes a programmer¶
TIP Si vous souhaitez vérifier le respect de l’écriture d’une requête vi-à-vis de la norme, alors utiliser SparQL query-validator. En bonus, il ré-indente et améliore la lisibilité de votre code !
- Afficher les URLs des lyonnais (i.e. personnes nées à Lyon). Voici la réponse attendue :
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?p
WHERE {
?p a foaf:Person;
dbo:birthPlace dbr:Lyon.
}
Vérifier que préciser ou non ?p
comme une personne ne change pas le résultat (la propriété dbo:birthPlace
ne s’applique qu’aux personnes dans DBPedia, il n’est donc pas besoin de préciser qu’on en cherche une !).
- Afficher les URLs et les noms (
foaf:name
) des lyonnais (i.e. personnes nées à Lyon), dans l’ordre alphabétique. Pourquoi certains lyonnais portent un nom vide ? (TIP : allez voir leur fiche). Il ne vous est pas demandé de résoudre ce problème. - Afficher les noms des lyonnais ne contenant pas de virgule (fonction
contains
). - Afficher les noms (sans virgule) et dates de naissance des lyonnais.
- Afficher les noms et dates de naissance des lyonnais nés après 1900 (
FILTER(year(?date)>1900)
). - Afficher les noms et dates de naissance des lyonnais nés après 1900 avec, le cas échéant, leur date de décès.
- Afficher les noms de tous les lyonnais morts à Lyon.
- Afficher les noms de tous les lyonnais morts hors de France.
On est obligé de distinguer le cas où le lieu de décès est un pays ou une ville. En effet, si le lieu de décès est un pays, il suffit de vérifier que ce n’est pas la France. Si le lieu de décès est une ville, il faut vérifier que cette ville n’est pas en France donc qu’aucun lien n’existe entre la ville et la France.
?deathPlace a ?deathPlaceType.
FILTER ((?deathPlaceType = dbo:Country && ?deathPlace != dbr:France) ||
(?deathPlaceType = dbo:City && NOT EXISTS { ?deathPlace dbo:country dbr:France }))
- Afficher toutes les villes françaises dont le maire est natif.
- Afficher tous les maires français (i.e. d’une ville de France) nés hors de France.
- Afficher tous les maires nés hors du pays où ils sont maires.
- Afficher le nombre de maires français nés hors de France.
- Afficher pour 10 villes françaises le nombre de natifs présents dans DBPedia.
- Afficher les 10 villes ayant le plus de natifs dans DBPedia, trier dans l’ordre décroissant du nombre de natifs.
Requete originale sur une base linked data¶
Enoncé du travail Choisissez une base de données open linked data (autre que DBPedia) et inventez une (1) requête sur cette base. Des exemples de bases possibles vous sont proposés ci-dessous. Pour les étudiants les moins à l’aise, il est conseillé d’utiliser la base des prix Nobel.
Consignes pour le compte-rendu (CR)¶
Le compte-rendu portera uniquement sur cette partie du TP. C’est un travail personnel, et le rendu est donc individuel. Votre CR devra être déposé sur Pedagogie3, en suivant les consignes suivantes:
-
Rédigez un petit rapport (rapport de 1 à 1.5 pages) comprenant les détails suivants :
- Préciser le SparQl endpoint permettant d’accéder à la base que vous interrogez. Par exemple, pour la base des Prix Nobel, le endpoint est http://data.nobelprize.org/sparql ; pour DBpedia, le endpoint est http://dbpedia.org/sparql. D’autres exemples sont fournis ci-dessous.
- Le dessin RDF de la requête. Pour cela, vous pouvez utiliser diagram.net.
- Le code SparQL de la requête (que nous puissions rejouer votre requête).
- Les 3 ou 4 premiers résultats de la requête (copie d’écran).
-
Si votre CR est au format pdf, merci de copier votre requête dans un fichier texte que nous puissions la tester (les copier-coller de textes depuis un pdf sont problématiques !).
-
N’oubliez pas d’inscrire votre nom sur le rapport, et de déposer un seul fichier compressé nommé VotreNom_rendu1.zip (ou rar, ou tgz), sur l’espace Moodle de votre groupe de TP, en respectant la deadline. Le site de dépôt de la plateforme est programmé pour ne plus accepter de compte-rendu au-delà de cette limite.
-
Ce rapport sera évalué et comptera dans votre note finale. La note prendra en compte l’originalité de la requête, et la qualité du code bien sûr ! Triche : si nous retrouvons votre requête sur Internet ou sur un autre rendu, nous vous attribuons la note de 0/20.
-
Vous pouvez télécharger avec ce lien un exemple de rendu qui répond aux consignes (dans cet exemple, il y a 2 requêtes, mais nous ne vous en demandons qu’une seule !).
Bases LoD¶
Il existe des moteurs de recherche de base sur un thème choisi par l’utilisateur. Mais attention, beaucoup de bases proposées par ces moteurs sont inaccessibles (obsolètes). Il faut donc en essayer plusieurs avant d’en trouver une valide !
Le plus simple est de travailler sur l’une des bases proposées dans la suite ; elles ont été testées récemment.
Remarque : Lorsqu’on ne connait pas une base, il est facile de connaître les classes les plus utilisées avec cette requête:
SELECT ?obj
WHERE {
?sub a ?obj .
}
GROUP BY ?obj
ORDER BY DESC(COUNT(?sub))
- Prix Nobel accès au endpoint.
La description de la structure des données se trouve en suivant ce lien. Elle est bien faite et relativement simple à comprendre !
Exemple
PREFIX nobel: <http://data.nobelprize.org/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?name WHERE {
?person a nobel:Laureate;
rdfs:label ?name;
} LIMIT 10
- War Sampo accès au endpoint.
War sampo (la guerre de Sampo) s’est déroulée en Finlande durant la deuxième guerre mondiale. Les textes dans cette base de données sont en suédois et finnois ! Le schéma de la base de données est disponible ici.
Exemple
PREFIX prisoners: <http://ldf.fi/schema/warsa/prisoners/>
SELECT ?causeDeath (count(?causeDeath) as ?count)
WHERE {
?p prisoners:cause_of_death ?causeDeath;
}
GROUP BY ?causeDeath
ORDER BY DESC(?count)
LIMIT 50
- WikiData accès au endpoint.
Nous vous déconseillons cette base car les requêtes sont assez illisibles (toutes les classes et les propriétés sont labelisées sous forme de code, comme wd:Q6256 ). Il est préférable d’utiliser Yago.
Exemple
Cette requête liste les identifiants des pays dans la base de données.PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?object ?objectLabel
WHERE {
?object wdt:P31 wd:Q6256.
?object wdt:P463 wd:Q458
SERVICE wikibase:label {bd:serviceParam wikibase:language "fr,en" .} #Pour avoir les labels en anglais et en français
}
- Yago accès au endpoint.
Exemple
Cette requête liste les propriétés associées à Elvis Presley.PREFIX yago: <http://yago-knowledge.org/resource/>
SELECT ?property (GROUP_CONCAT(DISTINCT ?valueOrObject; separator=", ") AS ?values)
WHERE {
yago:Elvis_Presley ?property ?valueOrObject .
}
GROUP BY ?property
- European Patent Ontology accès au endpoint
La description de la structure des données se trouve en suivant ce lien.
Exemple
PREFIX patent: <http://data.epo.org/linked-data/def/patent/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX st3: <http://data.epo.org/linked-data/def/st3/>
PREFIX text: <http://jena.apache.org/text#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?application ?appNum ?filingDate ?authority {
?application rdf:type patent:Application ;
patent:applicationNumber ?appNum ;
patent:filingDate ?filingDate ;
patent:applicationAuthority ?authority.
} LIMIT 10
- Bibliothèque Nationale de France accès au endpoint
Exemple
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX bio: <http://vocab.org/bio/0.1/>
SELECT ?auteur ?jour ?date1 ?date2 ?nom
WHERE {
?auteur foaf:birthday ?jour.
?auteur bio:birth ?date1.
?auteur bio:death ?date2.
OPTIONAL {?auteur foaf:name ?nom.}
}
ORDER BY (?jour)
LIMIT 100
L'URI d'un auteur peut être obtenue en lançant la requête suivante :
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?auteur
WHERE {
?auteur a foaf:Person.
?auteur foaf:name "Honoré de Balzac".
}
- Musiekweb accès au endpoint
Exemple #1
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX vocab: <https://data.muziekweb.nl/vocab/>
SELECT *
WHERE{
?artist a vocab:Performer.
?artist rdfs:label ?artistlabel
}
LIMIT 10
Exemple #2
PREFIX vocab: <https://data.muziekweb.nl/vocab/>
SELECT DISTINCT ?prop
WHERE{
?artist a vocab:Performer;
?prop ?val.
}
- OpenStreetMap accès au endpoint
Exemple
SELECT ?ecole ?site ?niveau ?coord
WHERE {
?ecole osmt:amenity "school";
osmt:website ?site;
osmt:grades ?niveau;
osmm:loc ?coord.
}
limit 10
- DBLP accès au endpoint
Exemple
Cette requête liste le nombre de thèse par université dans _dblp_ (accès à la version de _dblp_ [pour les humains](https://dblp.org)).PREFIX dblp: <https://dblp.org/rdf/schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?school (COUNT(DISTINCT ?thesis) as ?count) WHERE {
?thesis rdf:type dblp:Book .
?thesis dblp:thesisAcceptedBySchool ?school .
}
GROUP BY ?school
ORDER BY DESC(?count)
- Autres
- CIA World Factbook accès au endpoint
- Bio2Rdf accès au endpoint
N’hésitez pas à consulter The Linked Open Data Cloud !