2. Alignements VIAF et IdRef
Contexte
• Souhaitant préparer un référentiel d’auteurs actif dans mon université, nous avons essayé de récupérer les identifiants publics disponibles :
• Orcid
• IdRef
• ID BNF
• Viaf etc...
Premiers constats
• chercher un IdRef avec l’API de l’ABES permet de remonter toutes les personnes correspondants au nom recherché, sans tenir compte du prénom. Les remontés
sont nombreuses et délicates à nettoyer.
• Pour contourner le problème, et sachant que VIAF collecte les données d’autorités auteur de nos deux agences bibliographiques nationales, nous sommes partis
chercher IdRef en passant par VIAF.
3. Alignements VIAF et IdRef
• OpenRefine version 3.X
• Les tutoriels de Matthieu Saby, et d’Antoine Courtin
• Il faut commencer par s’appuyer sur ces tutoriels si
vous n’avez jamais utilisé OpenRefine.
• Celui de Gauthier Poupeau est utile pour les outils de
moissonnage depuis un SPARQL endpoint.
• Fichier du personnel de l’université (conformité RGPD)
• http://refine.codefork.com/reconcile/viaf via
http://refine.codefork.com/
Outils
4. Voici le résultat du
chargement du fichier du
personnel depuis un fichier
excel.
La première étape consiste à
fusionner les colonnes noms
et prénoms afin d’interroger le
service VIAF qui a besoin des
deux éléments.
Appeler le service « ajouter
une colonne en fonction de
cette colonne» en cliquant sur
la flèche en haut de la colonne
« Prenom »
Alignements VIAF et IdRef
5. Alignements VIAF et IdRef
• Une fenêtre apparait permettant de saisir la commande
souhaitée.
• Ici : Cells["Nom"] ,value + " " + cells["Prenom"], value
• Cela permet de fusionner les valeurs des cellules de la
colonne Nom et les valeurs en cellule de la colonne
Prenom, séparées par un espace.
• Pour certains besoins demandant Prénom puis Nom il
suffit d’inverser les deux commandes, peu importe la
colonne choisie pour appeler le service :
• Cells[" Prenom "] ,value + " " + cells[" Nom"], value
• Indiquez le nom de la colonne. Ce nom doit être unique.
Une fenêtre
apparait
6. Alignements VIAF et IdRef
Cette colonne va être
utilisée pour s’aligner avec
VIAF, c’est pourquoi nous
l’avons directement
nommée VIAF.
Plusieurs réconciliation
étant possible avec des
services distincts, il faudra
ajouter des colonnes Nom
+ Prénom à différentes
reprises.
En appelant le service « ajouter
une colonne en fonction d’une
colonne » en indiquant le nom
de la colonne souhaitée et sans
modifiée la commande indiquée
(value), vous ajoutez des
colonnes identiques à l’originale.
7. Alignements VIAF et IdRef
Dans le menu de la colonne Viaf,
choisir le menu le service
« réconcilier ».
Une fenêtre s’ouvre vous
proposant uniquement le service
wikidata (en).
Cliquer sur « ajouter un service
standard » et saisissez le lien
suivant :
http://refine.codefork.com/reconcil
e/viaf
Vous aurez à disposition le service
VIAF à chaque ouverture de cette
fenêtre.
Le traitement de la demande peut
être assez long en fonction de la
quantité de données à traiter.
8. Alignements VIAF et IdRef
Le résultat apparait ainsi :
A gauche des filtres qui permettent de visualiser les résultats. Ici, 7557
alignements proposés et 6964 laissés vides donc sans résultat.
Par défaut, les deux critères sont cochés. En décliquant « blank », vous
ne verrez plus que les propositions d’alignement et ne travaillerez que
sur les 7557 lignes.
A droite la colonne proposant les
alignements. Au minimum deux choix, un
nom aligné et un nouveau sujet.
Le nom est actif et permet d’aller sur la page
VIAF correspondante. Il est conseiller de faire
quelques vérifications pour s’assurer de la
fiabilité des résultats.
9. Alignements VIAF et IdRef
Pour aligner
automatiquement tous vos
liens proposés, il suffit d’aller
le menu « réconcilier » de la
colonne, et dans « actions »,
choisir « apparier chaque
cellule avec son meilleur
candidat »
selon le taux de confiance
dans l’alignement proposé.
10. Alignements VIAF et IdRef
Les données qui s’affichent désormais
dans la colonne sont celles héritées de la
réconciliation.
En jouant sur les facettes il sera possible
d’identifier les incohérences entre les
colonnes nom et prénom d’une part et la
colonne viaf d’autre part. Le cas des
homonymie n’est pas vérifiable à ce
stade.
11. Alignements VIAF et IdRef
Une fois l’alignement réalisé, il est possible
de récupérer certaines informations et a
minima l’identifiant de chaque individu.
Dans le menu de la colonne, choisir éditer
la colonne, « ajouter une colonne en
fonction de la colonne ».
Saisir la commande : cell.recon.match.id
Indiquer le nom de la colonne souhaitée :
ID Viaf
12. Alignements VIAF et IdRef
On récupère ainsi l’ID viaf de
chaque personne identifiée
avec le service viaf.
Avec cet élément on va
pouvoir construire et
moissonner l’URL de chaque
page VIAF des auteurs de ce
fichier.
Il suffit d’appeler le service,
ajouter une colonne et de
saisir :
"https://viaf.org/viaf/ "+
value +"/viaf.xml«
qui permet de construire l’url
pointant sur le XML, avec l’ID
VIAF comme variable
13. Alignements VIAF et IdRef
On obtient ainsi une URL pour
chaque auteur.
URL moissonnable par le service ci-contre.
14. Alignements VIAF et IdRef
Il convient de changer
le délai de
récupération et de
décocher la mise en
cache des réponse
pour améliorer le
temps de réponse.
15. Alignements VIAF et IdRef
Extraire les identifiants depuis le flux xml en
saisissant la commande ci-dessous dans le
menu ‘ajouter une colonne en fonction de
cette colonne’ :
forEach(value.parseHtml().select('ns1|source
nsid'), e ,e.htmlText()).join('n')
16. Alignements VIAF et IdRef
Les identifiants récupérés
proviennent de tous les
entrepôts moissonnés par
Viaf et peuvent donc être
multivalués.
Il convient désormais d’isoler les
identifiant tagués SUDOC et BnF
qui nous concernent en premier
lieu.
17. Alignements VIAF vers …
Récupérer l’ id Sudoc :
• value.find(/((SUDOC).d(8)w)/)[0]
• value.replace(« SUDOC|», «»)
Récupérer l’ id ISNI :
• value.find(/((ISNI).d(15)w)/)[0]
• value.replace(« ISNI|», «»)
Récupérer l’ id BNF :
• value.find(/((BNF).d(8))/)[0]
• value.replace(« BNF|»,«»)
Récupérer l’ id WIKIPEDIA :
•value.find(/((WKP|Q)).d(5)| ((WKP|Q)).d(4) | ((WKP|Q)).d(3) /)[0]
•value.replace(« WKP|Q», «»)
18. Alignements IDREF vers ORCID
Récupérer id ORCID à partir de l’id sudoc :
• On construit l’url permettant de récupérer l’identifiant ORCID
• Ajout d’un colonne en fonction d’une autre colonne (ID SUDOC)
• Expression a saisir :
• « https://www.idref.fr/services/idref2orcid/ » + value
• Moissonner la nouvelle colonne avec les urls formées
• Ajouter une colonne en fonction d’une autre colonne (colonne xml générer par le moissonnage)
• Expression a saisir :
• forEach(value.parseHtml().select(« result>identifiant),e,e.htmlText())
19. Alignements IDREF vers HAL
Récupérer IDHAL à partir de l’id sudoc :
• On construit l’url permettant de récupérer l’identifiant IDHAL à partir de l’ID SUDOC
• Ajout d’une colonne en fonction d’une autre colonne (ID SUDOC)
• Expression à saisir :
• « https://www.idref.fr/services/idref2idhal/ » + value
• Moissonner la nouvelle colonne avec les urls formées
• Ajouter une colonne en fonction d’une autre colonne (colonne xml générer par le
moissonnage)
• Expression à saisir :
• forEach(value.parsehtml().select(« result>identifiant »),e,e.thmlText())
20. Alignements IDREF vers references
Récupérer les publications produites à partir de l’id sudoc :
•On construit l’url permettant de récupérer les publications à partir du webservice « references »
•Ajout d’une colonne en fonction d’une autre colonne (ID SUDOC)
•Expression à saisir :
•« https://www.idref.fr/services/services/references/ » + value
•Moissonner la nouvelle colonne avec les urls formées
•Ajouter une colonne en fonction d’une autre colonne (colonne xml générer par le moissonnage)
•Expression à saisir pour récupérer les titres/auteur :
•forEach(value.parsehtml().select(« role>doc>citation »),e,e.htmlText()).join(‘ ||||’)
•Ajouter une colonne en fonction d’une autre colonne (colonne avec les publications)
•Expression a saisir pour récupéréer les identifiant(isbn, issn..) des publications :
•ForEach(value.parseHtml().select(« role>doc>ppn »),e,e.htmltext()).join (‘ ||||’)
•Mettre chaque titre et chaque identifiant dans une cellule propre
•Sur la colonne des titres de publications clic droit -> Editer cellule -> Diviser cellule multivaluée
•Mettre dans le séparateur les caractères inclus dans le ‘join()’, pour l’exemple ci-dessus c’est : ||||
•Faire de même sur la colonne des identifiants de publications