Utiliser les données ouvertes de Wikidata

formation doctorale

Damien Belvèze

Université de Rennes

2025-04-28

pour afficher les notes
  • Accompagnement dans la rédaction des Plans de Gestion de Données
  • Traitement des données en lien avec le RGPD
  • formations, ateliers sur les différents aspects de la gestion des données
  • curation (entrepôt Recherche Data Gouv)
  • conseils généraux sur la valorisation du code source de recherche

ARDoISE datahub

1. Présentation de la base

Figure 1: ?(caption)

Wikidata, la base de données des projets de Wikimédia logo fair-data

  • depuis 2012 (Wikimedia Allemagne)
  • multilingue
  • collaborative
  • RDF -> CC0
  • identifiants pérennes et uniques -> machine readable

Q88486335

Q4272466

Q193155

déclarations (statements)

SUJET PREDICAT OBJET Source
élément propriété élément Source

déclarations (statements)

SUJET PREDICAT OBJET Source
élément propriété élément Source
Elvira Chatayeva est morte sur le Pic Lénine “Alpinistes de Staline”
Q88486335 P20 (lieu de mort) Q838587 978-2234086135

déclarations (statements)

SUJET PREDICAT OBJET Source
élément propriété élément Source
Jeanne Labourbe était une femme politique wikipedia
Q4272466 P106 (occupation) Q82955 (politicien.ne) https://fr.wikipedia.org/wiki/Jeanne_Labourbe

linked Open Data

déclarations

  • est (une instance de : P31) a fish (Q152)
  • a fait l’objet d’une publication avec DOI (P356) dans 10.11646/zootaxa.5601.1.4
  • a été découvert (lieu de découverte : P?) au Kenya (?Q)
  • est une sous-classe (P?) de killifish (Q?)
  • a pour identifiant dans la base de Plazi (?P) AB2487A1-FFB3-A22A-9389-46F5FC47FB93

  • 100 millions d’éléments (Q..)
  • 10% sont des personnes 📓 Braisher & Fitchett (2025)
  • 30% sont des publications
  • 12500 propriétés (P..)
  • 1,6 milliards de déclarations
  • 12000 contributeurs actifs

2. Extraction de la base

Figure 2: ?(caption)

Fiabilité des données

ouverture d'un formulaire pour ajouter la source dans Wikidata de l'information sur la cause de mort non naturelle de Jeanne Labourbe
  • peu de modération
  • création possible de doublons (à éviter et corriger le cas échéant)
  • l’incomplétude est la règle plutôt que l’exception
  • Mais tout le monde peut vérifier / enrichir Wikidata
  • comme pour Wikipédia : incitation à donner les sources

détection des doublons

Gestion des doublons avant extraction des données

détection des doublons

personnalités politiques mortes par homicide

équivalent de la requête suivant (SPARQL)

SELECT DISTINCT ?item ?itemLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
  {
    SELECT DISTINCT ?item WHERE {
      ?item p:P106 ?statement0.
      ?statement0 (ps:P106) wd:Q82955.
      ?item p:P1196 ?statement1.
      ?statement1 (ps:P1196/(wdt:P279*)) wd:Q149086.
    }
    LIMIT 500
  }
}

SPARQL endpoints

endpoint entité type d’objets URL requête
Wikidata query service Wikidata toutes les données de Wikidata (fermeture prochaine) https://query.wikidata.org/
Wikidata query main Wikidata toutes les données wikidata sauf données liées aux publications académiques https://query-main.wikidata.org/
Wikidata query scholarly Wikidata données liées aux publications académiques https://query-scholarly.wikidata.org/
Factgrid query service Gotha Research Center  données historiques https://database.factgrid.de/query/

Requêtes

Activité (au choix) :

  1. Trouver d’autres personnes dans Wikidata victimes d’homicides mais non de l’exécution d’une peine capitale

  2. Trouver une liste de monts situés en Russie ou au Tadjikistan et dont l’altitude est supérieure à 5000 mètres

tous les lieux nommés en référence à Jeanne Labourbe

SELECT ?item ?itemLabel ?typeLabel ?locationLabel
WHERE {
  ?item wdt:P138 wd:Q4272466. 
  ?item wdt:P31 ?type.         # type d'item (e.g., rue, école, etc.)
  OPTIONAL { ?item wdt:P131 ?location. } # lieu administratif s'il y a
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY ?typeLabel # grouper les résultats par type d'objets

Exercice 1 : que liste cette requête ?

SELECT ?item ?itemLabel ?place ?coord
WHERE
{
  ?item wdt:P31 wd:Q1241568 .
  ?item wdt:P137 wd:Q708567 .
  ?item wdt:P625 ?coord.

   SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

Exercice 2 : que liste cette requête ?

SELECT DISTINCT ?item ?itemLabel
WHERE {

      ?item wdt:P31 wd:Q1863818.
      ?item wdt:P17 ?o.
    VALUES ?o{
    wd:Q142
    wd:Q29
   }

  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}


SELECT ?journal ?journalLabel ?bnfID ?startDate ?endDate ?cityLabel ?coordinates WHERE {
  # Récupère les noms des journaux et leurs identifiants dans la bibliographie nationale (id BNF)
  ?journal wdt:P31 wd:Q5633421;  # Q5633421 correspond à "journal"
           wdt:P268 ?bnfID.


  OPTIONAL { ?journal wdt:P580 ?startDate. }
  # Optionel : récupération de la date de début de publication

  OPTIONAL { ?journal wdt:P582 ?endDate. }
  # Optionel : récupération de la date de fin de publication
  # Optionel : récupère la ville où se situe l'éditeur du journal
  OPTIONAL {
    ?journal wdt:P291 ?city.
    ?city wdt:P625 ?coordinates.  
    
      # Optionel : récupère la ville où se situe l'éditeur du journal et récupère les  Coordinées géographique de cette ville
  }


  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }
}
# Récupère la version française du label de chaque élément
ORDER BY ?journalLabel
# classe par ordre alphabétique de nom de journal 

Accidents d’avion

#Accidents d'avion
SELECT ?item ?itemLabel ?date ?deaths ?country ?countryLabel ?coord ?lon ?lat
# affiche dans l'ordre les items, leurs labels (nom de l'événement), la date, le nombre de morts, l'identifiant du pays, le nom du pays, les coordonnées géographiques
WHERE
{
  ?item wdt:P31 wd:Q744913 .
# cherche tous les éléments qui correspondent à des accidents d'avion
  MINUS { ?item wdt:P31 wd:Q898712 . }
# enlève de la liste les accidents survenus après une piraterie
  OPTIONAL { ?item wdt:P585 ?date. }
# s'il y a la date affiche-la
  OPTIONAL { ?item wdt:P625 ?coord. }
# s'il y a les coordonnées géographiques, affiche-les
        ?coords_sample ps:P625 ?coord;
            psv:P625 [
            wikibase:geoLatitude ?lat;
            wikibase:geoLongitude ?long
                 ] .
# affiche les coordonnées géographiques sous la forme de longitude et de latitude
  OPTIONAL { ?item wdt:P1120 ?deaths.}
# si le nombre de morts est précisé, affiche-le
  OPTIONAL { ?item wdt:P17 ?country.
# si le pays est précisé affiche-le
  ?country rdfs:label ?countryLabel .
  FILTER(lang(?countryLabel) = "en") 
# affiche seulement ces noms de pays en anglais
  }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
# langue de base des résultats : l'anglais
}

Incorporer les requêtes vers Wikidata dans des scripts

créer une carte des batailles en Grèce

patrouille de Résistants Grecs

code disponible en ligne

liste des batailles attribuées à la Résistance Grecque

library(WikidataR)
df <- query_wikidata('SELECT ?item ?itemLabel WHERE {
  ?item wdt:P31 wd:Q178561 . # est une bataille
  ?item wdt:P17 wd:Q41 .    # a eu lieu en Grêce
  ?item wdt:P361 wd:Q490035 . # a fait partie de la Résistance grecque 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr". }
}
')
print(df)

optionnel : ajout du lieu (location)

library(WikidataR)
df <- query_wikidata('SELECT ?item ?itemLabel ?location WHERE {
  ?item wdt:P31 wd:Q178561 . # est une bataille
  ?item wdt:P17 wd:Q41 .    # a eu lieu en Grêce
  ?item wdt:P361 wd:Q490035 . # a fait partie de la Résistance grecque 
    OPTIONAL { ?item wdt:P276 ?location}
              ?location rdfs:label ?locationLabel 
                FILTER(lang(?locationLabel) = "en")
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
')
print(df)

informations manquantes

Les données obtenues sont lacunaires ; un travail de documentation sur le web et dans les archives est nécessaire pour les compléter.

## # A tibble: 10 × 6
##    item      itemLabel                    date       coord    latitude longitude
##    <chr>     <chr>                        <chr>      <chr>    <chr>    <chr>    
##  1 Q98931743 Battle of Metaxades          <NA>       <NA>     <NA>     <NA>     
##  2 Q29468626 Q29468626                    <NA>       <NA>     <NA>     <NA>     
##  3 Q1772340  Battle of Elaia–Kalamas      1940-11-08 Point(2… 39.5867  20.1422  
##  4 Q716722   Battle of Pindus             1940-11-13 Point(2… 40.0889  20.9253  
##  5 Q18121569 Battle of Agios Vasileios    <NA>       Point(2… 37.1870… 22.68917…
##  6 Q18572820 Q18572820                    1944-07-24 <NA>     <NA>     <NA>     
##  7 Q15991321 Battle of Karoutes           1944-08-05 <NA>     <NA>     <NA>     
##  8 Q12880416 Battle of Chora - Agorelitsa 1944-07-19 Point(2… 37.0549… 21.705991
##  9 Q20552658 Battle of Florina            <NA>       Point(2… 40.7827… 21.40888…
## 10 Q15896585 Battle of Kilkis             1944-11-04 Point(2… 40.9833… 22.866667

tableau complété à 80% (après quelques heures de travail)

item itemLabel date coord latitude longitude
1 Q98931743 Battle of Metaxades 1949-05-15 NA 41.42 26.225278
2 Q29468626 Battle of Mines NA NA
3 Q1772340 Battle of Elaia–Kalamas 1940-11-08 Point(20.1422 39.5867) 39.5867 20.1422
4 Q716722 Battle of Pindus 1940-11-13 Point(20.9253 40.0889) 40.0889 20.9253
5 Q18121569 Battle of Agios Vasileios 1949-01-22 Point(22.689172222 37.187097222) 37.187097222222 22.689172222222
6 Q18572820 Battle of Byzani Street 1944-07-24 NA 37.961254 23.705382
7 Q15991321 Battle of Karoutes 1944-08-05 NA 38.3135 22.1546
8 Q12880416 Battle of Chora - Agorelitsa 1944-07-19 Point(21.705991 37.054952) 37.054952 21.705991
9 Q20552658 Battle of Florina 1949-02-12 Point(21.408888888 40.782777777) 40.782777777778 21.408888888889
10 Q15896585 Battle of Kilkis 1944-11-04 Point(22.866667 40.983333) 40.983333 22.866667
11 Q16331929 Battle of Fardykambos 1943-03-06 40.1359 21.3250

## {background-color=“#fef1da”}

envoi groupé d’informations (statements) vers Wikidata

item <- c(dataframe$item)  
property <- "P585"     # Date de l'événément
value <- c(dataframe$date_iso)  # format de data ISO

library(WikidataR)
write_wikidata(items = item,
               properties = "P585",
               values = value,
               format = "api",
               api.username = "identifiant_utilisateur", 
               api.token = "mettre ici votre token")

Quick Statement est un outil de la forge de Wikidata

Se créer un token sur cet outil à partir d’un compte (Wikipédia / Wikimédia)

trouver des batailles dans Wikidata qui n’ont pas encore fait l’objet de pages dans Wikipédia

library(WikidataR)
df1 <- query_wikidata('SELECT DISTINCT ?item ?itemLabel ?date ?coord ?latitude ?longitude WHERE {
  ?item wdt:P31 wd:Q178561 . # est une bataille
  ?item wdt:P17 wd:Q41 .    # a la Grèce comme lieu
  ?item wdt:P361  ?o .
  
  VALUES ?o { wd:Q490035 # fait partie de la résistance grecque contre l'occupant Nazi (1942-1945)
              wd:Q223604 # fait partie de la résistance grecque contre l'occupant Italien (1941 -1942)
              wd:Q188972 # fait partie de la guerre civile en Grèce (1945-1949)
  
  }
  
 OPTIONAL { ?item wdt:P585 ?date. }
 OPTIONAL { ?item wdt:P625 ?coord. 
                 ?coords_sample ps:P625 ?coord;
                 psv:P625 [
                   wikibase:geoLatitude ?latitude;
                   wikibase:geoLongitude ?longitude
                 ] .
}

  FILTER NOT EXISTS {                               # vérifie s'il y a une page en français dans Wikipedia sur cette bataille
      ?wikipedia schema:about  ?item ;               
             schema:isPartOf <https://fr.wikipedia.org/> }  
             
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
')
print(df1)
write.csv(df1, "batailles.csv")

Comment on utilise Wikidata dans les projets de recherche ?

  • outil de désambiguisation
  • plateforme permettant de faire du Linked Open Data
  • reconnaissance d’entités nommées
  • outil d’enrichissement de données collaboratif
  • outil facilitant la modellisation de données

📓 Farda-Sarbas & Müller-Birn (2019) 📓 Zhao (2023)

Reconnaissance d’entités nommées en lien avec un vocabulaire contrôlé

En 1889, l’année du décès d’Ossip Zetkin, se tient à Paris le congrès fondateur de la Deuxième internationale, à la préparation de laquelle Clara Zetkin participe. Alors qu’il est attendu d’elle un rapport sur la situation des travailleuses en Allemagne, elle déclare devant ses camarades qu’elle ne l’effectuera pas, la situation des travailleuses étant « identique à celle des travailleurs », mais qu’elle parlera plutôt du principe même du travail des femmes, et de la place qu’elles doivent prendre dans la lutte des classes.

reconnaissances d’entités nommées

📓 Okur et al. (2024)

Quantifier la production d’un.e chercheur.se avec Scholia

à vous de tracer de nouvelles routes avec Wikidata

contenu réutilisé

Cette présentation emprunte des chiffres, figures, et idées à Pierre-Yves Baudouin, Juliette Halimi et à Delphine Montagne, wipédien et wikipédiennes en résidence, notamment dans leur présentation conjointe donnée lors d’un Café Renatis

Un travail de synthèse considérable a été accompli par Pierre-Yves Baudouin et mis à disposition de tout.e.s sur l’extraction de données de Wikipédia et de Wikidata sur le site Callisto

logiciel utilisé pour cette présentation

  • Quarto 1.3.450
  • VScode 1.8.0
  • Rstudio 2023.03.0

Références

Braisher, T., & Fitchett, D. (2025). The New Zealand Thesis Project: Connecting a Nation’s Dissertations Using Wikidata. Journal of Librarianship and Scholarly Communication, 13(1). https://doi.org/10.31274/jlsc.18295
Farda-Sarbas, M., & Müller-Birn, C. (2019). Wikidata from a Research PerspectiveA Systematic Mapping Study of Wikidata. arXiv. https://doi.org/10.48550/arXiv.1908.11153
Okur, H., Tohma, K., & Sertbas, A. (2024). Relational turkish text classification using distant supervised entities and relations. Computers, Materials & Continua, 79, 1–10. https://doi.org/10.32604/cmc.2024.050585
Zhao, F. (2023). A systematic review of wikidata in digital humanities projects. Digital Scholarship in the Humanities, 38(2), 852–874. https://doi.org/10.1093/llc/fqac083