symac

Identifier les chercheurs d'une institution possédant un identifiant orcird

logo Orcird Il y a quelques temps nous nous sommes demandé comment trouver facilement les chercheurs de notre université disposant d'un identifiant orcid. Les pistes à suivre étaient assez simples puisqu'Orcid proposer une page find my researchers dans la doc de son API.

La principale étape consiste à interroger l'API Orcid à l'aide de différents appels de l'API via les requêtes suivantes :

  • https://pub.orcid.org/v2.1/search/?q=ringgold-org-id:27075 : les personnes liés à l'institution dont le ringgold id vaut 27075. RingGold est la base d'autorités qu'utilise orcid pour gérer les institutions, je l'ai découverte à l'occasion de ce chantier. La base d'autorités n'est pas disponible en libre accès (en tout cas je ne l'ai pas trouvée) mais il existe un "free lookup service" sur https://ido.ringgold.com/ qui permet après création d'un compte gratuit d'interroger la base pour trouver son identifiant.
  • https://pub.orcid.org/v2.0/search/?q=affiliation-org-name:%22montaigne%22 : les personnes rattachés à une organisation qui contient le terme Montaigne, en gros il n'y a que nous.
  • https://pub.orcid.org/v2.1/search/?q=email:*@u-bordeaux-montaigne.fr : attention, cette option ne retourne que les personnes ayant accepté que leur adresse mail soit publique, une seule personne dans notre cas.

Ces différents appels ont été faits à l'aide de la commande linux cURL, puis les lignes contenant un identifiant orcid on été extraites à l'aide de la commande grep. Une fois ces différentes résultats déboublonnés on dispose d'un fichier texte contenant une grosse cinquantaine de lignes qui correspondent à des chercheurs appartenant à notre institution.

Manipulation bonus : chargement du fichier dans OpenRefine comme un fichier csv à une seule colonne, sur laquelle on va appliquer le traitement suivant : Add column by fetching URL : "https://pub.orcid.org/v2.1/" + value + "/person" qui va nous retourner un fichier xml correspondant aux détails de la personne. À partir de cette colonne, on va pouvoir créer une colonne à l'aide de la formule value.parseHtml().select("personal-details|given-names")[0].ownText() qui va nous retourner le prénom, et value.parseHtml().select("personal-details|family-name")[0].ownText() pour le nom de famille. Ces différentes opérations sont disponibles dans le fichier de script openrefine openrefine.json, à charger sous OpenRefine une fois la liste des orcid chargée sous Undo/Redo > Apply.