Bloc-notes de Sylvain

Enrichir wikidata avec des identifiants idref

En décembre dernier, le blog punktokomo de l'Abes faisait le bilan du premier chantier CERCLES consacré aux autorités. À cette occasion on apprenait que les collègues de la Bibliothèque Henri-Piéron de l'université de Paris avaient réalisé un chantier CERCLES destiné à créer et améliorer des notices d'autorités d'auteurs entrant dans le périmètre de la bibliothèque, à savoir la psychologie.

 Identifier les notices wikidata sans idref

En voyant passer ce billet je me suis demandé où en était wikidata sur le sujet et en particulier sur les psychologues Français. Idref fait en effet partie des propriété les plus utilisées sur wikidata avec plus de 500 000 notices contenant un idref en février 2022.

Pour étudier l'état de base, wikidata offre une possibilité très intéressante à travers son moteur d'interrogation SPARQL. En lançant la requête suivante (voir le résultat) on va obtenir les personnes ayant pour pays de citoyenneté "France" et pour activité "Psychologue" ou une sous-classe de psychologue :

SELECT DISTINCT ?person ?personLabel ?birthDate WHERE {
  ?person wdt:P106/wdt:P279? wd:Q212980 .
  MINUS { ?person wdt:P269 ?idref } .
  ?person wdt:P27 wd:Q142 .
  OPTIONAL { ?person wdt:P569 ?birthDate }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Le langage SPARQL ici utilisé nous permet de sélectionner à travers les millions d'entrées de wikidata celles qui correspondent à nos attentes. Pour détailler la requête ci-dessus, voici la sélection que l'on opère :

  • ?person wdt:P106/wdt:P279? wd:Q212980 ." : on récupère les éléments qui ont pour occupation (P106) "Psychologue / Q212980" ou l'une de ses sous-classes (ce qui se traduit par /wdt:P279? dans notre requête)
  • MINUS { ?person wdt:P269 ?idref } . : on retire tous ceux qui ont déjà un idref (P269 sur wikidata)
  • ?person wdt:P27 wd:Q142 . : on se limite aux entités pour lesquelles le pays de citoyenneté (P27) a pour valeur France / Q142
  • OPTIONAL { ?person wdt:P569 ?birthDate } : si elle est disponible dans wikidata (optionnelle) on récupère la date de naissance (P569) qui nous permettra de désambiguiser quand on cherchera les personnes dans idref;

Grâce à cette requête j'ai pu identifier entre 50 et 100 psychologues français ou décrits comme tels sur wikidata mais pour lesquels la propriété idref est vide côté wikidata.

Chercher les Idref existants

À partir de la requête ci-dessus, j'ai pu exporter la liste au format tableur et me retrouver dans LibreOffice avec une liste qui ressemble à cela : libreoffice

L'opération à faire et qui va maintenant être la plus fastidieuse (on peut je pense faire quelque chose de plus adapté via OpenRefine mais ce n'est pas l'objet de la présente démonstration) sera de chercher pour chacun.e si une entrée idref existe.

Pour cela, on va faire un copier du nom de personne, garder en tête l'année de naissance si elle est présente puis aller sur idref.fr et coller le nom de personne dans la zone de recherche. Via l'autocomplétion on sait assez rapidement si la personne est présente dans Idref. Et s'il y a plusieurs personnes qui répondent au même nom, l'année de naissance nous aidera à trouver celle qui nous intéresse. Une fois identifiée, on va sur la fiche détaillée, on vérifie grâce à la note bibliographique si elle existe qu'on a vraisemblablement à faire à la bonne personne puis on clique sur l'icône à côté du permalien pour copier dans le presse papier l'identifiant idref de cette personne : IdRef copier l'identifiant

On va alors coller cette valeur dans une colonne de notre fichier LibreOffice (en s'assurant que la colonne soit bien au format texte pour éviter que les 0 de tête de l'identifiant ne soient supprimés par LibreOffice).

 Importer les idref dans wikidata

Pour importer en masse des informations dans wikidata une des solutions les plus simples est d'utiliser l'outil QuickStatement. Je passe sur la manière d'obtenir cela depuis le fichier LibreOffice original mais l'idée est d'arriver à un fichier sous la forme suivante :

Q524614 P269    "251626199"
Q2942042    P269    "058934790"
Q2977906    P269    "073408891"
Q3060222    P269    "227970101"
Q3104235    P269    "143089668"
Q3130850    P269    "057075301"
Q3166390    P269    "027090221"
Q3169460    P269    "183355555"

Chaque colonne est séparée de la suivante par une tabulation et le fichier se lit de la manière suivante : pour l'entité décrite par la première colonne je vais ajouter une P269 (deuxième colonne) possédant la valeur de la troisième colonne.

Avec cette manière de procéder j'ai pu procéder à l'ajout en deux fois d'une petite soixantaine (voir la deuxième série) d'identifiants Idref sur wikidata. Je ne sais pas combien sont issus du travail du projet CERCLES, à vrai dire un nombre limité je pense, la plupart des notices datent d'avant l'année dernière mais gageons que le travail CERCLES m'aura facilité le travail en améliorant la qualité des notices !