
OpenRefine offre d’intéressantes fonctionnalités pour nettoyer, transformer et enrichir vos données. Cet outil personnel et libre vient brillamment compléter les possibilités des tableurs traditionnels comme « LibreOffice Calc« , « OpenOffice Calc » ou « EXCEL« . Proposé par Philippe Houdry de l’INIST, deux tutoriels successifs nommés « Atelier OpenRefine aux AHP-PReST 1 et 2 » proposaient une initiation. Les principaux points abordés étaient l’installation du logiciel, la création de projets à partir de fichiers CSV ou ODS, la réconciliation des données avec Wikidata, le langage GREL mis à disposition pour effectuer des modifications. Dans ce tutoriel, les fonctionnalités de base d’OpenRefine sont supposées connues.
Trois cas de figure sont tout d’abord présentés lorsque les tableaux contiennent des données multivaluées. Les différentes valeurs peuvent être situées dans plusieurs lignes, plusieurs colonnes, oubien être concaténées et différenciées à l’aide d’un séparateur. Propres à Refine, les variables internes sont ensuite exposées. Elles servent souvent dans les formules GREL. Trois langages de script peuvent être utilisés pour modifier de manière programmée les colonnes d’un tableau. Dérivé de java et de ses fonctions natives, le langage GREL (General Refine Expression Language) est généralement utilisé. Les fonctionnalités GREL permettent le web scraping (le grattage de la toile) : des données présentes dans des fichiers HTML, XML ou JSON externes, peuvent être enregistrés dans le tableau. Des fonctions GREL permettent ensuite de parser les codes sources obtenus pour en extraire des éléments souhaités. Les recettes de ce tutoriel sont illustrées d’exemples choisis dans le domaine des bibliothèques.
Une possibilité populaire déjà évoquée concerne la réconciliation des colonnes avec les données de la base sémantique Wikidata. Des services particuliers permettent aussi la réconciliation avec VIAF (Virtual Internet Authority Flies), le fichier d’autorité international élaboré par l’OCLC. L’extension d’OpenRefine « RDF » vient ajouter des possibilités supplémentaires. Les données d’un tableau peuvent ainsi être réconciliées avec toute base sémantique disposant d’un point d’accès SPARQL. L’installation du module est détaillée. Des recettes d’enrichissement des données sont ensuite proposés avec IdRef (idref.fr) et RAMEAU (data.bnf.fr), le répertoire d’autorité matière partagé par l’ABES (Agence Bibliographique de l’Enseignement Supérieur) et la BnF (Bibliothèque nationale de France). Ces deux bases de données, participative pour l’une, bibliographique pour l’autre, servent souvent de plaques tournantes auxquelles d’autres bases ou bien des catalogues de bibliothèques se réfèrent.
- Pourquoi se servir d’OpenRefine ?
- Gestion des cellules multivaluées
- 2.1 Cellules multivaluées sur plusieurs lignes
- 2.2 Cellules multivaluées dans plusieurs colonnes
- Liste des fonctions GREL
- Variables internes associées aux entrées, lignes et colonnes
- Des recettes simples
- 5.1 Extraire avec substring
- 5.2 Remplacer avec replace, les expressions régulières
- 5.3 Réunir en les réarrangeant deux colonnes d’un tableau
- 5.4 Créer une URL en vue d’explorer une base de données
- 5.5 Afficher l’URI d’une cellule réconciliée
- 5.6 Manipuler des listes de concepts avec split
- Des recettes de web scraping
- 6.1 Récupérer les URI de plusieurs référentiels avec VIAF
- 6.2 Wiktionary
- 6.3 Les API, essais divers
- Les extensions d’OpenRefine
- 7.1 RDF extension
- Autres services de réconciliation, autres recettes
1. Pourquoi se servir d’OpenRefine ?
David François Huynh est le créateur en 2009 de Freebase Gridworks (Metaweb), le programme ancêtre d’OpenRefine. Son entreprise est rachetée en 2010 par Google. Le logiciel est alors renommé Google Refine. Puis une diffusion au format open-source est organisée. Le programme est renommé OpenRefine en 2012. Le développeur californien décrit brièvement son logiciel comme :
- plus puissant qu’un tableur
- plus interactif et visuel qu’un langage de scripts
- plus temporaire / exploratoire / expérimental / amusant qu’une base de donnée
De fait, Refine combine la puissance d’un SGBD avec la possibilité de se servir de plusieurs langages de script depuis une interface visuellement interactive et bien étudiée. L’outil est également gratuit et très bien maintenu. Ces caractéristiques en font un logiciel dont les journalistes, les bibliothécaires, les scientifiques et de nombreux spécialistes des données se sont saisis. De plus PAWS, un service cloud déployé par la Wikimedia Foundation propose, moyennant inscription gratuite à Wikipédia, la possibilité de localiser des projets sur le web, dans un espace réservé et personnel. Des projets hébergés OpenRefine, Notebook, Python 3, RStudio peuvent y être hébergés.
- Houdry, P. Atelier OpenRefine aux AHP-PReST. Partie 1, 2022, une initiation à OpenRefine : Lien
- OpenRefine : des recettes GREL pour améliorer la qualité des données. Partie 1 bis, 2023 : ce billet
- PAWS: A Web Shell (PAWS) : déploiement Jupyter notebook, hébergé par la Wikimedia Foundation
- Wikidata talk:Tools/OpenRefine : OpenRefine now available on PAWS! : Lien


2. Gestion des cellules multivaluées
Dans les tableaux de données, il arrive souvent qu’une seule colonne puisse contenir plusieurs valeurs, autrement dit, que la cardinalité d’une propriété soit supérieure à 1. Ce cas peut être géré avec OpenRefine (EXCEL, ou LibreOffice Calc, ou n’importe quel autre système) de trois manières différentes : 1/ des lignes peuvent être ajoutées dans le tableau, 2/ des colonnes peuvent être ajoutées, 3/ les différentes valeurs peuvent être concaténées en une seule cellule, distinguées par un séparateur. L’un des intérêts de Refine est de pouvoir aisément passer d’une organisation des données à l’autre à l’aide de fonctionnalités standards.
Un exemple de champ répété dans une item concerne une thèse soutenue aux AHP et référencée dans le portail des thèses de l’ABES : Le « faire-semblant » en procès : examen et défense de la philosophie de Kendall L. Walton, par Guillaume Schuppert. On remarque la pluralité des langues du résumé (français et anglais), des membres du jury et des descripteurs de la thèse. Les métadonnées peuvent être exportées en RDF (et nommées en un fichier avec extension .xml). Ce fichier extrait est ensuite importé dans Refine sous forme de nouveau projet. Du fait de l’extension, le format XML est reconnu.
Il est ensuite possible de sélectionner dans l’arbre XML la balise « bibo:Thesis », pour accéder aux données présentées sous forme de tableau. Pour plus de confort, la colonne du résumé de ce tableau peut être masquée (avec Aperçu > Masquer cette colonne).


2.1 Cellules multivaluées sur plusieurs lignes
Par défaut, la colonne « Toutes » indique le numéro d’entrée (record en anglais). La thèse est identifiée par son URI. Le nom de la première colonne (« bibo:Thesis – rdf:about ») est donné automatiquement, en référence à sa localisation dans l’arbre RDF / XML du document. Les mots-clés sont entrés en plusieurs lignes dans « bibo:Thesis – dc:subject ». L’assignation des lignes à une unique entrée est déclenchée par la présence d’une valeur vide dans la première colonne.
Il est possible d’aisément joindre ces données en une seule cellule, en sélectionnant dans la colonne :
Éditer les cellules > Joindre les cellules multivaluées… > Spécifier le séparateur « ; « .
On obtient ainsi la liste des mots-clés français et anglais concaténés :
Walton, Kendall L. (1939-....) -- Critique et interprétation; Représentation (philosophie); Représentation (littérature); Théorie de la fiction; Fiction; Faire-semblant; Comme si; Imagination; Représentation; Vérité dans la fiction; Esthétique; Fictionalisme; Fiction; Make-Believe; As if; Imagination; Representation; Truth in fiction; Aesthetics; Fictionalism; 111.85
L’opération inverse peut être réalisée :
Éditer les cellules > Diviser les cellules multivaluées… > Spécifier le séparateur « ; « .
Si tous les champs répétés sont ainsi concaténés avec le même séparateur, on dispose d’un tableau prêt à être entré dans Omeka ou dans d’autres outils.
2.2 Cellules multivaluées dans plusieurs colonnes
Présentes sous forme concaténée, ces propriétés multivaluées peuvent être scindées automatiquement en une suite de colonnes répétées et numérotées automatiquement avec la commande :
Éditer la colonne > Diviser en plusieurs colonnes… > Spécifier le séparateur « ; « .

De manière inverse, plusieurs colonnes peuvent être réunies avec les actions standards :
Éditer la colonne > Joindre des colonnes… > Spécifier le séparateur « ; « .
Revenir en arrière ou en avant, avec l’onglet « Défaire / Refaire ».
3. Liste des fonctions GREL
Le langage et les fonctions GREL sont documentés sur le site officiel et présentées à l’aide d’un petit nombre d’exemples. Les liens sont ici faits vers la documentation originale :
- Survol des expressions dans Refine
- Éditeur d’expressions de Refine
- Les variables (value)
- Ligne (row : row.index, row.cells)
- Cellules (cells)
- Cellule (cell)
- Reconciliation (cell.recon.match.name, cell.recon.candidates)
- Record (entrée)
- General Refine Expression Language
- Les bases
- La syntaxe
- Contrôle (if, with, filter) et itérations ()
- Fonctions GREL
- Fonctions booléennes (and, or, xor, not)
- Fonctions de chaînes de caractères (length, toString)
- Tester les caractéristiques de chaînes : (startsWith, endsWith, contains)
- modifications de base
- conversion de la casse (toLowercase, toUppercase, toTitleCase)
- nettoyer une chaîne (trim, strip, chomp)
- sous-chaîne (substring, slice, get)
- trouver et remplacer (replace, find, …)
- Parsage d’une chaîne de caractères et partition (split, partition, …)
- Encodage and fonctions de hashage (escape, encode, …)
- Traduire (detectLanguage)
- Fonctions relatives aux formats (JSON, HTML, XML)
- Fonctions de tableaux (length, slice, sort, …)
- Fonctions de date (now, toDate)
- Fonctions mathématiques
- Autres fonctions
Liste des caractères spéciaux à « antislasher » dans une commande GREL :
|caractères spéciaux | Affichage |
|--------------------|-----------------------|
| \' | Simple guillemet |
| \" | Double guillemet |
| \\ | Antislash |
| \t | Tabulation |
| \r | Retour chariot |
| \n | Nouvelle ligne |
| \f | Saut de page |
| \b | Retour arrière |
| \s | Espace |
4. Variables internes associées aux entrées, lignes et colonnes
Le tableau de données qui sert d’exemple est constitué d’une seule entrée.

Nous pouvons maintenant lancer quelques commandes GREL. On accède de manière standard à l’éditeur d’expression par :
Colonne des sujets > Éditer les cellules >Transformer

Fréquemment utilisées avec GREL, des variables internes permettent d’accéder aux entrées / items (record), aux lignes (row) et aux cellules (cell) d’un tableau.
4.1 Variables standards
Contenue par défaut dans l’éditeur d’expression, l’expression GREL « value
» (la valeur courante) constitue l’une des variables accessibles souvent manipulée. Parmi les autres variables simples : « rowIndex
« , « columnName
« .
value
=cell.value
: La valeur de la cellule dans la colonne courante de la ligne courante (possiblementnull
)rowIndex
: indice de la colonne en partant de 0columnName
: nom de la colonne courante
Les contenus d’autres variables comme « row
« , « cell
» ou « cells
» sont du type tableau dans une cellule. Dans l’objectif de mettre au point une expression, les valeurs de ces variables peuvent être prévisualisés de trois manières :
- Suffixe « .
toString()
« - Suffixe «
.jsonize()
« . - Des itérations peuvent être faites également avec des séries de fonctions comme :
forEach(row.columnNames,v,v).join("; ")
4.2 La variable row
Des sous-propriétés permettent l’accès à diverses valeurs :
row
: la ligne couranterow.index
: (pareil querowIndex
) indice de la ligne en partant de 0row.cells
:row.columnNames
:row.starred
:row.flagged
:row.record
:
4.3 La variable cell
4.4 La variable cells
5. Des recettes simples
Des formules GREL simples ainsi que leurs effets sur les valeurs des cellules sont ici présentées :
5.1 Extraire avec substring
Les caractères 0 à 10 d’une cellule sont extraits et affichés.
substring(value, 0, 10)
5.2 Remplacer dans une cellule avec replace, expressions régulières
Un motif cherché et trouvé dans une chaîne est remplacé par un autre (manipulation aussi possible en éditant simplement une cellule depuis l’interface graphique de base).
1/ Présent dans toutes les cellules d’une colonne, le caractère « # » doit être supprimé.
replace(value, "#", "")
2/ Faire des remplacements en se servant des expressions régulières.
Une expression régulière (REGEX) est une suite de caractères typographiques (qu’on appelle plus simplement « motif » / « pattern » en anglais) décrivant un ensemble de chaînes de caractères. Par exemple l’ensemble des mots « ex-équo, ex-equo, ex-aequo et ex-æquo » peut être reconnu en un seul motif REGEX avec la formule « /ex-(a?e|æ|é)quo/ » dans laquelle le slash signifie « début ou fin d’expression régulière », le point d’interrogation après le « a » « présence ou absence de a », etc. Dans un motif recherché, des caractères spéciaux (les métacaractères « ([{\^-=$!|]})?*+.
« ) jouent des rôles particuliers. Parmi ceux-ci :
^ : début de chaîne
$ : fin de chaîne
. : un caractère quelconque et un seul
+ : un caractère répété plusieurs fois à l'identique
* : n'importe quelle suite de caractère
? : présence ou absence d'un caractère
[0-9] : tout chiffre
[a-z] : toute lettre minuscule
Basé sur REGEX, des manipulation complexes de chaînes de caractère peuvent être entreprises. Exemple : ajouter un point en fin de cellule, si et seulement si la chaîne contient au moins un caractère.
replace(value, /.$/, ".")
Remplacer tout espace ou suite d’espaces par un blanc simple.
replace(value,/\s+/," ")
Petite précision, les métacaractères des expressions régulières ne doivent pas être confondus avec les métacaractères GREL !
- Tutoriel #40 – Utiliser les expressions régulières (« regex »). Patrimoine et numérique, par guénard, 2023 : Lien
- Tutoriel Java sur les expressions régulières. Character Classes : Lien
5.3 Réunir en les réarrangeant deux colonnes d’un tableau
"\""+value+"\"@"+cells['bibo:Thesis - dc:subject - xml:lang'].value
Avec la formule précédente, la colonne courante est fusionnée avec la colonne des langues en une expression de la forme : "Représentation (philosophie)"@fr
Les mots-clés français et anglais peuvent ainsi être distingués.
5.4 Créer une URL en vue d’explorer une base de données externe
Sélectionner dans OpenRefine « Ajouter une colonne en fonction d’une colonne ».
1/ A partir d’une liste de personnes
Le nom de famille et le prénom sont présents dans des colonnes nommées « foaf:familyName » et « foaf:firstName ». On souhaite créer une URL qui va faciliter l’exploration d’une base externe en suivant le lien. L’expression suivante est entrée :
"https://www.geneanet.org/fonds/individus/?" + value.escape('url') + "&nom=" + cells['foaf:familyName'].value.escape('url') + "&prenom=" + cells['foaf:firstName'].value.escape('url') + "&go=1"
URL générée avec Jean-Claude Badelle : https://www.geneanet.org/fonds/individus/?Jean-claude+Badelle&nom=Badelle&prenom=Jean-Claude&go=1
2/ A partir d’une liste de lieux
Pour un géocodage avec les colonnes « Adresse », « Code postal », « Ville », le code GREL suivant :
"http://api-adresse.data.gouv.fr/search/?q=" + (cells["Adresse"].value + " " + cells["Code postal"].value + " " + cells["Ville"].value).replace(" ","%20") + "&limit=1"
Url générée avec « 7 rue de l’Université. F-67000 STRASBOURG », affichage de la géolocalisation en JSON : http://api-adresse.data.gouv.fr/search/?q=7%20rue%20de%20l%27Universit%C3%A9.%20F-67000%20STRASBOURG&limit=1
- Géocodage : a/ avec adresse.data.gouv.fr b/ avec Google; par Cyrille Gicquello : Lien
5.5 Afficher l’URI d’une cellule réconciliée
1/ Des cellules d’une colonnes sont réconciliées avec Wikidata, à l’aide du service « https://wikidata.reconci.link/en/api ». On souhaiterait récupérer dans une colonne particulière l’URL des données ainsi réconciliées.
"https://www.wikidata.org/wiki/"+cell.recon.match.id
- Wikidata reconciliation for OpenRefine : Lien
2/ La même chose peut être faite pour des données réconciliées avec VIAF (https://refine.codefork.com/reconcile/viaf).
"https://www.viaf.org/viaf/"+cell.recon.match.id
- refine.codefork.com : Lien
3/ Trois paramètres de réconciliation peuvent être récupérés avec Refine :
cell.recon.match.id
cell.recon.match.name
cell.recon.match.type
5.6 Scinder les contenus d’une cellule avec split
Une cellule contenant des valeurs répétées, séparées par un point-virgule, est scindée avec « split » et transformée en une variable de format « tableau ». Ce tableau peut être manipulé avec des fonctions dédiées et affiché en plusieurs formats. Une suite de mot-clés sert d’exemple :
111; Aesthetics; As if; Comme si; Esthétique; Faire-semblant; As if
1/ Le tableau est converti en tableau avec split, affiché en plusieurs formats avec les fonctions « toString« , « jsonize« , « uniques« .
value.split("; ").toString()
Affichage avec :
- toString :
[111, Aesthetics, As if, Comme si, Esthétique, Faire-semblant, As if]
- jsonize :
[ "111", "Aesthetics", "As if", "Comme si", "Esthétique", "Faire-semblant", "As if" ]
- uniques (2ème « As if » supprimé ) :
[ "111", "Aesthetics", "As if", "Comme si", "Esthétique", "Faire-semblant" ]
2/ Seul le premier élément de la série doit être affiché
value.split("; ")[0].toString()
L’instruction « [0] » imprime la chaîne de caractère qui précède la première présence du motif. Le code Dewey « 111 » situé en tête d’indexation est extrait et affiché. Si « [0] » est remplacé par « [1] », « Aesthetics » est imprimé, etc.
3/ Les éléments d’une cellule multivaluées sont identifiés, triés par ordre alphabétique et affichés sous forme concaténée
value.split("; ").sort().join("; ")
4/ Activités conditionnelles
Les fonctions forEach
, split
et if
peuvent être combinées ensemble pour réaliser diverses opérations.
- Éliminer la valeur numérique « 111 » de la liste, afficher les autres valeurs.
forEach(value.split("; "), v, if(isNumeric(v),null,v)).join("; ")
Affiche : Aesthetics; As if; Comme si; Esthétique; Faire-semblant; As if
La condition forEach(e1, v e2)
admet trois paramètres séparés par des virgules. L’expression e1 de valeur value.split("; ")
» transforme la cellule en tableau stocké dans une variable nommée v (2ème paramètre). L’expression e2 effectue une action sur chaque élément de la liste. Le caractère numérique ou non de ces éléments est testé avec la condition if(e, eTrue, eFalse)
de GREL.
- N’afficher que les mots-clés de nature numérique, en se servant des expressions régulières
forEach(value.split("; "), v, if(v.contains(/[1-9]/), null, v)).join("; ")
- Avec une expression régulière, n’afficher que les mots-clés qui contiennent le motif « esth » en minuscule ou majuscule (paramètre /i de l’expression régulière) :
forEach(value.split("; "), v, if(v.contains(/esth/i), v, null)).join("; ")
Affiche : Aesthetics; Esthétique
- Afficher les numéros de clé du tableau avec la fonction
forEachIndex(e1, i, v, e2)
forEachIndex(value.split("; "), i, v, (i + 1) + "-" + v).join("; ")
1-111; 2-Aesthetics; 3-As if; 4-Comme si; 5-Esthétique; 6-Faire-semblant; 7-As if
6. Des recettes de web scraping
Des recettes permettent de récupérer les données du web, présentes dans des fichiers au format HTML, XML ou bien JSON. Du web scraping (grattage de la toile) peut être réalisé, à partir d’une URL simple ou réconciliée, dans le but de récupérer des données particulières.
6.1 Récupérer les URI de référentiels avec VIAF
Plusieurs services proposent de réconcilier les données avec VIAF (Virtual Internet Authority File). Il n’est par contre pas très aisé ensuite d’enrichir un fichier réconcilié à l’aide de valeurs contenues dans VIAF. A la différence de Wikidata, les services de réconciliation de VIAF ne sont pas pleinement opérationnels. Plusieurs solutions existent malgré tout.
Une recette en quatre étapes est ici proposée : 1/ Réconcilier les données avec VIAF, 2/ Récupérer l’URL du fichier RDF de la notice réconciliée 3/ Extraire le contenu de la notice en RDF XML, 4/ Extraire le champ « URI référentiel » en parsant le XML.
6.1.1 Réconciliation d’une liste d’auteurs avec VIAF
On peut se servir par exemple du service : http://refine.codefork.com/reconcile/viaf. La réconciliation peut être faite en tenant compte du nom, prénom, date de naissance, par exemple, dans le cas d’une liste de personnes.
6.1.2 Récupération de l’URL du fichier RDF dans VIAF
L’URL de la donnée réconciliée est récupérée dans une nouvelle colonne, comme avec 5.5.
"https://viaf.org/viaf/"+cell.recon.match.id+"/rdf.xml"
Un exemple d’URL ainsi obtenue est : https://viaf.org/viaf/221469987/rdf.xml pour l’entrée « Bardin, Libre-Irmond, 1794-1867 ».
6.1.3 Extraction du code RDF XML
Le code source XML de chaque entrée est récupéré dans une nouvelle colonne avec l’instruction OpenRefine : Éditer la colonne > Ajouter une colonne en moissonnant des URL.
6.1.4 Parser le XML résultant et récupérer les URI des référentiels
Le code source récupéré est dans un deuxième temps parsé à l’aide d’instructions GREL. Celles-ci permettent d’extraire les valeurs recherchées de l’arbre XML. On sélectionne ici successivement à l’aide de la fonction parseHtml() les éléments imbriqués « rdf:Description », « schema:sameAs », ainsi que finalement la valeur de l’attribut « rdf:resource ». La syntaxe de foreach()
est respectée.
forEach(
value.parseHtml().select('rdf|Description schema|sameAs'),
v,
v.xmlAttr("rdf:resource")
).join(' | ')
On obtient enfin la liste concaténée des URI de divers référentiels du web liés avec des entrées de VIAF, joint avec le séparateur « pipe ». Par exemple, pour « Bardin » :
http://www.wikidata.org/entity/Q15973488 | http://www.idref.fr/139258930/id | http://isni.org/isni/0000000359818352
6.2 Essais divers, avec Wiktionary
Passer par l’API et JSON. Plusieurs API disponibles :
- MediaWiki Action API
- How can I retrieve Wiktionary word content?
- API doc : MediaWiki API help : https://fr.wiktionary.org/w/api.php
- Examples for existing and non-existing pages:
- web sémantique :
- Mediawiki REST API :
- API v1 PHP : https://www.mediawiki.org/wiki/API:REST_API/fr
Sur data.bnf.fr : afficher 20 auteurs en JSON à partir d’une requête SPARQL :
https://data.bnf.fr/sparql?default-graph-uri=&query=PREFIX%20foaf%3A%20%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX%20bio%3A%20%3Chttp%3A%2F%2Fvocab.org%2Fbio%2F0.1%2F%3E%0ASELECT%20%3Fauteur%20%3Fjour%20%3Fnaissance%20%3Fmort%20%3Fnom%0AWHERE%20{%0A%3Fauteur%20foaf%3Abirthday%20%3Fjour.%0A%3Fauteur%20bio%3Abirth%20%3Fnaissance.%0A%3Fauteur%20bio%3Adeath%20%3Fmort.%0AOPTIONAL%20{%3Fauteur%20foaf%3Aname%20%3Fnom.}%0A}%0AORDER%20BY%20(%3Fjour)%20LIMIT%2020&endpoint=https%3A%2F%2Fdata.bnf.fr%2Fsparql&requestMethod=POST&tabTitle=Query&headers={}&contentTypeConstruct=text%2Fturtle%2C*%2F*%3Bq%3D0.9&contentTypeSelect=application%2Fsparql-results%2Bjson%2C*%2F*%3Bq%3D0.9&format=application%2Fjson&timeout=0&should-sponge=
TODO : recette GREL pour générer la requête.
Exemple d’API Omeka S à exploiter : https://batadata-s.ahp-numerique.fr/api
7. Les extensions d’OpenRefine
Les extensions de Refine s’installent dans le répertoire « webapp/extensions » (possiblement avec Windows sous « C:\Program Files\OpenRefine\openrefine-3.7.9\webapp\extensions », en fonction du répertoire d’installation choisi).
- OpenRefine extensions : https://openrefine.org/extensions
- OpenRefine, Installing extensions : https://openrefine.org/docs/manual/installing#installing-extensions
7.1 RDF extension
Stuart Kenny travaille pour le Digital Repository of Ireland (DRI). Il a repris et maintient une extension de Refine qui permet de créer localement un service de réconciliation. Trois bases sémantiques nous intéressent particulièrement : idref, data.bnf.fr et DBpedia. Un service de réconciliation peut être paramétré à partir des points d’accès SPARQL de ces bases.
- Reconcilable Data Sources, OpenRefine : Lien
- LD4D 3. Producing triples using OpenRefine and RDF-extension : Lien
7.1.1 Installation
Pour faire tourner RDF extension, il est préférable d’avoir installé une version de Refine avec Java intégré. La dernière version du module (1.4.0) est téléchargée et décompressée dans le répertoire « webapp/extensions » de la version 3.7.9 de Refine. Le logiciel est relancé.
- Téléchargement du module : https://github.com/stkenny/grefine-rdf-extension
7.1.2 Configuration
1/ Avec IdRef, la base sémantique de l’ABES

Après réconciliation, la notation préférentielle d’IdRef est récupérée pour les personnes au format « Nom, Prénom (année naissance, année de décès)« , par exemple « Bardin, Libre-Irmond (1794-1867) ».
2/ Le module est configuré pour réconcilier des données avec RAMEAU, à partir du point d’accès SPARQL de « data.bnf.fr ».
- Ettore Rizza. OpenRefine : réconciliation avec Rameau, vidéo 12:07 : Lien
8. Autres services de réconciliation, autres recettes
- OpenRefine-Wikibase reconciliation interface : Lien
- Library of Congress Reconciliation Service for OpenRefine, avec python, mphilli : Lien
- GraphDB – Loading data using OntoRefine : Lien
- Useful recipes for achieving certain tasks in OpenRefine, Dinh, 2023 : Lien
Très bon usage d’OpenRefine !