Avant ce TP/TD, vous devez avoir étudié les documents et interfaces pointés par
la "section sur SPARQL" du support de cours.
Montrez moi chacun au moins 2 requêtes
(différentes pour chacun d'entre vous) ayant chacune
- au moins trois relations de types différents
(les relations lexicales, e.g. rdfs:label
,
ou de typage, e.g. rdf:type
, ne comptent pas) , et
- au moins un objet qui est à la fois source d'une relation et destination d'une autre.
→ points de votre "note de CC (Wooclap, DM, ...)".
Exemple de requête recherchant dans DBpedia
"les employeurs des créateurs de langages qui ont influencé les langages créés
par James Gosling". Vu que DBpedia sait James Gosling a créé le langage Java mais
ne sait pas s'il a créé d'autres langages,
cette requête équivaut à rechercher
"les employeurs des créateurs de langages qui ont influencé (la conception de) Java".
Astuces pour construire votre requête
que vous voulez "requêter" ; pour cela, vous pouvez par exemple
About: Football player ou
la page DbPedia About: Cristiano Ronaldo
SELECT * WHERE { ?t rdfs:label "Footballer"@en }
ou
SELECT * WHERE { ?x rdfs:label "Ronaldo"@en }
que vous voulez "requêter" ; pour cela, vous pouvez par exemple
<http://dbpedia.org/resource/Football_player>
(alias :Football_player
sur Snorql, pas dbpedia:Football_Player
) et
<http://dbpedia.org/resource/Cristiano_Ronaldo>
(alias :Cristiano_Ronaldo
sur Snorql, pas dbpedia:Cristiano_Ronaldo
).
Les identifiants ne sont PAS des "liens". Ce sont – ou, ils sont basés sur – des
URIs:
URLs (adresses Web) ou bien
URNs.
SELECT * WHERE { ?x rdfs:label "Ronaldo"@en; owl:sameAs ?id}
SELECT * WHERE { ?t rdfs:label "Footballer"@en; owl:sameAs ?id }
Si cette dernière requête ne renvoie rien, vérifiez la liste des relations depuis le type via:
SELECT * WHERE { ?t rdfs:label "Footballer"@en; ?relation ?relationDestination }
Pour cela, regardez les types de relations qui existent depuis
l'objet – ou le type des objets – que vous voulez "requêter".
Pour cela, vous pouvez par exemple utiliser une requête comme
SELECT * WHERE { <http://dbpedia.org/resource/Football_player> ?relation ?relationDestination }
SELECT * WHERE { <http://dbpedia.org/resource/Cristiano_Ronaldo> ?relation ?relationDestination }
Vous verrez avec cette dernière requête que Ronaldo n'a pas pour type :Football_player
mais
:Soccer_player
. En fait, DbPedia n'a apparemment pas d'instance pour :Football_player
,
ce qui explique pourquoi aucune requête sur des :Football_player
n'a de réponse.
(e.g., en utilisant un identifiant au lieu d'une variable ou bien en ajoutant une relation à cette
destination)
jusqu'à obtenir la requête désirée.