Interroger le Web de données

UDOS - 10 juillet 2015

Pierre-Antoine Champin (UCBL/LIRIS)

(revenir à la présentation)

Introduction

Pour ce tutoriel, nous allons utiliser le point d’accès SPARQL de DBPedia, et pour y accéder, nous utiliserons le client en ligne Yasgui. Par défaut, Yasgui est configuré pour requêter DBPedia, ce qui convient à notre tutoriel, mais gardez bien à l’esprit que:

  • Yasgui n’est pas lié à DBpedia, il peut être utilisé avec n’importe quel point d’accès SPARQL;
  • DBPedia n’est pas lié à Yasgui, elle peut-être requêtée avec n’importe quel client conforme au protocole SPARQL (en fait n’importe quel client HTTP un tant soit peu configurable).

Vocabulaire

Le vocabulaire de DBPedia est très volumineux, mais dans ce tutoriel, nous n’aurons besoin que des IRIs ci-dessous.

(exemple de jeu de données) (cacher)

digraph indice1 {
fr [label="dbr:France"]
lyon [label="dbr:Lyon"]
gc [label="dbr:Gérard_Collomb"]
gcn1 [label="\"Gérard Collomb\"" shape=rect]
gcn2 [label="\"Collomb, Gérard\"" shape=rect]
gcbd [label="1947-06-20" shape=rect]
chalon [label="dbr:Chalon-sur-Saône"]
nn [label="dbr:Nicéphore_Niépce"]
nnn [label="\"Joseph Nicéphore Niépce\"" shape=rect]
nndd [label="1833-07-05" shape=rect]
saintloup [label="dbr:Saint-Loup-de-Varennes"]

fr -> lyon [label="dbo:country" dir=back]
fr -> chalon [label="dbo:country" dir=back]
fr -> saintloup [label="dbo:country" dir=back]
lyon -> gc [label="dbo:mayor"]
gc -> gcn1 [label="foaf:name"]
gc -> gcn2 [label="foaf:name"]
gc -> gcbd [label="dbo:birthDate"]
chalon -> gc [label="dbo:birthPlace" dir=back]
chalon -> nn [label="dbo:birthPlace" dir=back]
nn -> nnn [label="foaf:name"]
nn -> nndd [label="dbo:deathDate"]
saintloup -> nn [label="dbo:deathPlace" dir=back]
}

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:country Propriété Pays auquel un lieu appartient
dbo:mayor Propriété Maire d’une ville
dbr:Digne-les-Bains Instance La ville de Digne les bains
dbr:France Instance La France

Avertissement

Les IRIs sont sensibles à la casse.

Exercices

  1. Afficher les IRIs de tous les Dignois d’origine (personnes nées à Digne) (indice) (résultats) (cacher)

    digraph indice1 {
p [label="?p" fillcolor="lightblue"]
dignes [label="dbr:Dignes-les-bains"]
p -> dignes [label="dbo:birthPlace"]
}

    11 résultats
    p
    http://dbpedia.org/resource/Paul_Duqueylar
    http://dbpedia.org/resource/Mickaël_Maschio
    http://dbpedia.org/resource/Louis_Botinelly
    http://dbpedia.org/resource/Alain_Boghossian
    http://dbpedia.org/resource/Louis_Alexis_Desmichels
    http://dbpedia.org/resource/Alphonse_Beau_de_Rochas
    http://dbpedia.org/resource/Cyril_Féraud
    http://dbpedia.org/resource/Micka%C3%ABl_Maschio
    http://dbpedia.org/resource/Hippolyte_Fortoul
    http://dbpedia.org/resource/Tristan_Louis
    http://dbpedia.org/resource/Cyril_F%C3%A9raud
  2. Afficher les noms des Dignois d’origine (indice) (résultats) (cacher)

    digraph indice2 {
p [label="?p"]
dignes [label="dbr:Dignes-les-bains"]
n [label="?n" fillcolor="lightblue"]
p -> dignes [label="dbo:birthPlace"]
p -> n [label="foaf:name"]
}

    20 résultats
    n
    Boghossian, Alain
    Feraud, Cyril
    Tristan Louis
    Cyril Feraud
    Mickaël Maschio
    Louis Botinelly
    Paul Duqueylar
    Duqueylar, Paul
    Louis Alexis Desmichels
    Desmichels, Louis Alexis
    Cyril Féraud
    Louis, Tristan
    Maschio, Mickaël
    Fortoul, Hippolyte
    Alain Boghossian
    Alphonse Eugène Beau de Rochas
    Beau de Rochas, Alphonse Eugène
    Jules Cantini
    Cantini, Jules
    Hippolyte Fortoul
  3. Afficher les noms (sans virgule) des Dignois (vous aurez besoin d’un filtre et de la fonction contains) (indice) (résultats) (cacher)

    digraph indice3 {
filter1 [label="!CONTAINS(?n, \",\")" shape=note]

p [label="?p"]
dignes [label="dbr:Dignes-les-bains"]
n [label="?n" fillcolor="lightblue"]

p -> dignes [label="dbo:birthPlace"]
p -> n [label="foaf:name"]
}

    11 résultats
    n
    Tristan Louis
    Cyril Feraud
    Mickaël Maschio
    Louis Botinelly
    Paul Duqueylar
    Louis Alexis Desmichels
    Cyril Féraud
    Alain Boghossian
    Alphonse Eugène Beau de Rochas
    Jules Cantini
    Hippolyte Fortoul
  4. Afficher les noms (sans virgule) des Dignois avec leur date de naissance (indice) (résultats) (cacher)

    digraph indice4 {
filter1 [label="!CONTAINS(?n, \",\")" shape=note]
p [label="?p"]
dignes [label="dbr:Dignes-les-bains"]
n [label="?n" fillcolor="lightblue"]
d [label="?d" fillcolor="lightblue"]

p -> dignes [label="dbo:birthPlace"]
p -> n [label="foaf:name"]
p -> d [label="dbo:birthDate"]
}

    11 résultats  
    n d
    Paul Duqueylar 1771-01-01
    Louis Alexis Desmichels 1779-03-15
    Alphonse Eugène Beau de Rochas 1815-04-09
    Tristan Louis 1971-02-28
    Cyril Feraud 1985-03-15
    Mickaël Maschio 1973-05-19
    Louis Botinelly 1883-01-02
    Jules Cantini 1883-01-02
    Cyril Féraud 1985-03-15
    Hippolyte Fortoul 1811-08-04
    Alain Boghossian 1970-10-27
  5. Afficher les noms (sans virgule) des Dignois avec leur date de naissance, et le cas échéant, leur date de décès (indice) (résultats) (cacher)

    digraph indice5 {
graph [
  labeljust=r
  color=black
  style=rounded
  penwidth=.33
]


filter1 [label="!CONTAINS(?n, \",\")" shape=note]

subgraph cluster_opt1 {
    label=optional
    margin=10

    p1 [label="?p"]
    dd [label="?dd" fillcolor="lightblue"]
    p1 -> dd [label="dbo:deathDate"]
}

p [label="?p"]
dignes [label="dbr:Dignes-les-bains"]
n [label="?n" fillcolor="lightblue"]
dn [label="?dn" fillcolor="lightblue"]

p -> dignes [label="dbo:birthPlace"]
p -> n [label="foaf:name"]
p -> dn [label="dbo:birthDate"]
p -> p1 [style=dotted dir=none constraint=false]
}

    11 résultats    
    n dn dd
    Cyril Féraud 1985-03-15  
    Louis Alexis Desmichels 1779-03-15 1845-06-07
    Tristan Louis 1971-02-28  
    Paul Duqueylar 1771-01-01 1845-01-01
    Hippolyte Fortoul 1811-08-04 1856-07-04
    Louis Botinelly 1883-01-02 1962-03-26
    Jules Cantini 1883-01-02 1962-03-26
    Alain Boghossian 1970-10-27  
    Cyril Feraud 1985-03-15  
    Alphonse Eugène Beau de Rochas 1815-04-09 1893-03-27
    Mickaël Maschio 1973-05-19  
  6. Afficher les noms (sans virgule) des Dignois avec leur date de naissance, et le cas échéant, leur date et leur lieu de décès (attention à Paul Duqueylar) (indice) (résultats) (cacher)

    digraph indice6 {
graph [
  labeljust=r
  color=black
  style=rounded
  penwidth=.33
]

filter1 [label="!CONTAINS(?n, \",\")" shape=note]

subgraph cluster_opt2 {
    label=optional
    margin=10

    p2 [label="?p"]
    ld [label="?ld" fillcolor="lightblue"]
    p2 -> ld [label="dbo:deathPlace"]
}

subgraph cluster_opt1 {
    label=optional
    margin=10

    p1 [label="?p"]
    dd [label="?dd" fillcolor="lightblue"]
    p1 -> dd [label="dbo:deathDate"]
}

p [label="?p"]
dignes [label="dbr:Dignes-les-bains"]
n [label="?n" fillcolor="lightblue"]
dn [label="?dn" fillcolor="lightblue"]

p -> dignes [label="dbo:birthPlace"]
p -> n [label="foaf:name"]
p -> dn [label="dbo:birthDate"]
p -> p1 [style=dotted dir=none constraint=false]
p1 -> p2 [style=dotted dir=none constraint=false]
}

    15 résultats      
    n dn dd ld
    Hippolyte Fortoul 1811-08-04 1856-07-04 http://dbpedia.org/resource/Bad_Ems
    Mickaël Maschio 1973-05-19    
    Jules Cantini 1883-01-02 1962-03-26 http://dbpedia.org/resource/Bouches-du-Rh%C3%B4ne
    Cyril Féraud 1985-03-15    
    Jules Cantini 1883-01-02 1962-03-26 http://dbpedia.org/resource/Marseille
    Alphonse Eugène Beau de Rochas 1815-04-09 1893-03-27  
    Louis Alexis Desmichels 1779-03-15 1845-06-07 http://dbpedia.org/resource/Paris
    Jules Cantini 1883-01-02 1962-03-26 http://dbpedia.org/resource/Bouches-du-Rhône
    Louis Botinelly 1883-01-02 1962-03-26 http://dbpedia.org/resource/Bouches-du-Rh%C3%B4ne
    Alain Boghossian 1970-10-27    
    Tristan Louis 1971-02-28    
    Cyril Feraud 1985-03-15    
    Louis Botinelly 1883-01-02 1962-03-26 http://dbpedia.org/resource/Bouches-du-Rhône
    Paul Duqueylar 1771-01-01 1845-01-01  
    Louis Botinelly 1883-01-02 1962-03-26 http://dbpedia.org/resource/Marseille
  7. Afficher les IRIs de toutes les villes françaises dont le maire est natif (indice) (résultats) (cacher)

    digraph indice7 {
france [label="dbr:France"]
v [label="?p" fillcolor="lightblue"]
m [label="?m"]

v -> france [label="dbo:country"]
v -> m [label="dbo:mayor"]
m -> v [label="dbo:birthPlace"]
}

    7 résultats
    v
    http://dbpedia.org/resource/Saint-Laurent-du-Maroni
    http://dbpedia.org/resource/Faaa
    http://dbpedia.org/resource/Bora_Bora
    http://dbpedia.org/resource/Marseille
    http://dbpedia.org/resource/Boulogne-sur-Mer
    http://dbpedia.org/resource/Nice
    http://dbpedia.org/resource/Poitiers
  8. Afficher les IRIs de toutes les villes ayant deux maires (au moins), et les IRIs de leurs maires. (indice) (résultats) (cacher)

    digraph indice7 {
filter1 [label="?m1 < ?m2\n#?m1 évite les doublons" shape=note]

v [label="?v"]
m1 [label="?m1"]
m2 [label="?m2"]

v -> m1 [label="dbo:mayor"]
v -> m2 [label="dbo:mayor"]
}

    3 résultats    
    v m1 m2
    http://dbpedia.org/resource/Dendermonde http://dbpedia.org/resource/Christen-Democratisch_en_Vlaams http://dbpedia.org/resource/New_Flemish_Alliance
    http://dbpedia.org/resource/Tongeren http://dbpedia.org/resource/Patrick_Dewael http://dbpedia.org/resource/Carmen_Willems
    http://dbpedia.org/resource/Evergreen_Cemetery_(Adams_County,_Pennsylvania) http://dbpedia.org/resource/John_Augustus_Swope http://dbpedia.org/resource/David_McConaughy
  9. Afficher les IRIs des personnes nés dans une ville française, ainsi que l’IRI de la ville, en limitant le nombre de résultats à 100. (indice) (cacher)

    digraph indice9 {
graph [
  labeljust=l
  color=black
  style=rounded
  penwidth=.33
]

limit [label="LIMIT 100" shape=note]

subgraph cluster_sel {
    label=select
    margin=10

    france [label="dbr:France"]
    p [label="?p" fillcolor="lightblue"]
    v [label="?v" fillcolor="lightblue"]

    v -> france [label="dbo:country"]
    p -> v [label="dbo:birthPlace"]
}
}

  10. Afficher les IRIs des villes française triées par la date de naissance de leur maire (on exclut de fait les villes dont le maire, ou sa date de naissance, ne sont pas renseignés dans DBPedia). Affichez aussi l’IRI du maire et sa date de naissance. (indice) (résultats) (cacher)

    digraph indice8 {
graph [
  labeljust=l
  color=black
  style=rounded
  penwidth=.33
]

order [label="ORDER BY ?d" shape=note]

subgraph cluster_sel {
    label=select
    margin=10

    france [label="dbr:France"]
    v [label="?v" fillcolor="lightblue"]
    m [label="?m" fillcolor="lightblue"]
    d [label="?d" fillcolor="lightblue"]

    v -> france [label="dbo:country"]
    v -> m [label="dbo:mayor"]
    m -> d [label="dbo:birthDate"]
}
}

    145 résultats    
    v m d
    http://dbpedia.org/resource/Entrammes http://dbpedia.org/resource/Jean_Bodin 1530-01-01
    http://dbpedia.org/resource/Marville,_Meuse http://dbpedia.org/resource/Claude_Biwer 1936-05-15
    http://dbpedia.org/resource/Saint-Saulve http://dbpedia.org/resource/Cécile_Gallez 1936-05-16
    http://dbpedia.org/resource/Sournia http://dbpedia.org/resource/Paul_Blanc 1937-01-29
    http://dbpedia.org/resource/Seignosse http://dbpedia.org/resource/Ladislas_de_Hoyos 1939-03-27
    ... ... ...
  11. Afficher les IRIs des villes française triées par la date de naissance de leur maire en commençant par les plus jeunes.

  12. Afficher pour chaque ville française son IRI, et le nombre de natifs de cette ville répertoriés dans DBPedia. On utilisera pour cela la fonction d’aggrégation COUNT. (indice) (cacher)

    SELECT ?ville (COUNT(?personne) as ?nb_personnes)
    { ... }
    GROUP BY ?ville
    
  13. Afficher pour 10 villes françaises le nombre de natifs présents dans DBPedia (indice) (cacher)

    Il faut pour cela combiner astucieusement la réponse à la question précédente avec un ORDER BY et un LIMIT.