Usos prácticos de APIs CrossRef para obtener métricas de revistas científicas con DOI

[Testing API Crossref for journal metrics through DOI]


En la entrada anterior probamos los widget de PlumX, Altmetric.com y Dimensions para obtener las #almetrics de artículos y que se pueden incrustar en páginas de revistas o artículos en ficheros HTML.

Ahora compartimos algunas pruebas de consultas a partir de recursos y parámetros de CrossRef API útiles para tomadores de decisiones y gestores de revistas científicas con presencia en el entorno web y que tienen suscrito el servicio de DOI para sus artículos.

Qué son las API

Las API son un conjunto de comandos, funciones y protocolos informáticos (...) que simplifican en gran medida el trabajo de un creador de programas (...) y permiten al informático usar funciones predefinidas para interactuar con el sistema operativo o con otro programa (1).

Estas interfaces API se desarrollan para una gran variedad de propósitos [como para] enlazar y vincular los distintos softwares, generalmente son motivos más comerciales los que desencadenan su desarrollo. Por ejemplo, para una tienda virtual (...) desarrollar una API y ofrecer de forma pública permitiendo a los externos conseguir acceso (gratuito) a la información del producto directamente desde el servidor (2).

Los acciones de consulta a los servicio API se conocen como llamadas de API o solicitudes de API, que es una instancia en la que el propietario de un sitio web solicita el uso de la API de un desarrollador (3). Estos mecanismos de consulta (query) pueden escribirse usando lenguajes de programación (c++, php, r) que guarden los resultados en un manejador de base de datos (MongoDB, SQL, etc.). También está la posibilidad de consulta via HTTP o HTTPS usando cualquier navegador web o mediante un plugin de Chrome o Mozilla.

En cualquiera de los casos, los formatos de salida de los resultados de las consultas, generalmente son de tipo JSON, CSV, XML, etc. por lo que necesitaremos convertir los datos a formatos de tablas o columnas para una lectura fácil.

Usando las API de CrossRef para conocer el impacto de una revista

Actualmente, muchos de los sistemas de indización globales y plataformas electrónicas de comunicación científica tienen interfaces de consulta vía API, como Elsevier(4), Clarivate (5), CrossRef (6), entre otros.

Todo servicio de consulta tiene una documentación técnica, generalmente publicada desde GitHub, y para el caso de CrossRef no es la excepción (6). Sin embargo, es posible evitar leer toda esta documentación si utilizas las librerías que se han escrito para la API de Crossref REST en Python, Rubi o R.

Si usamos dos componentes de consulta (/works, /journals) y los combinamos con identificadores registrados en CrossRef (e.g., orcid, issn, doi), las sentencias que encontramos útiles para gestores de revistas electrónicas son:


[1] /works/{codigo_doi}


[2] /prefixes/{prefix_doi}

[3] /journals/{issn_revista}/works


En el primer caso [1] para saber los metadatos registrados con el siguiente DOI 10.17843/rpmesp.2019.361.4315 ejecutamos la consulta así:
https://api.crossref.org/v1/works/10.17843/rpmesp.2019.361.4315

Lo que arroja estos resultados en formato .json:


{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2019,4,22]],"date-time":"2019-04-22T21:11:26Z","timestamp":1555967486097},"reference-count":0,"publisher":"Instituto Nacional de Salud (Peru)","issue":"1","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Rev Peru Med Exp Salud Publica"],"DOI":"10.17843\/rpmesp.2019.361.4315","type":"journal-article","created":{"date-parts":[[2019,4,22]],"date-time":"2019-04-22T20:31:37Z","timestamp":1555965097000},"page":"106","source":"Crossref","is-referenced-by-count":0,"title":["Producci\u00f3n cient\u00edfica y licenciamiento de escuelas de medicina en el Per\u00fa"],"prefix":"10.17843","volume":"36","author":[{"given":"Percy","family":"Mayta-Trist\u00e1n","sequence":"first","affiliation":[]},{"given":"Carlos J.","family":"Toro-Huamanchumo","sequence":"additional","affiliation":[]},{"given":"Joel","family":"Alhuay-Quispe","sequence":"additional","affiliation":[]},{"given":"Josmel","family":"Pacheco-Mendoza","sequence":"additional","affiliation":[]}],"member":"7920","published-online":{"date-parts":[[2019,3,20]]},"container-title":["Revista Peruana de Medicina Experimental y Salud P\u00fablica"],"original-title":[],"link":[{"URL":"https:\/\/rpmesp.ins.gob.pe\/index.php\/rpmesp\/article\/viewFile\/4315\/3217","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2019,4,22]],"date-time":"2019-04-22T20:31:50Z","timestamp":1555965110000},"score":1.0,"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,3,20]]},"references-count":0,"journal-issue":{"published-online":{"date-parts":[[2019,4,4]]},"issue":"1"},"URL":"http:\/\/dx.doi.org\/10.17843\/rpmesp.2019.361.4315","relation":{},"ISSN":["1726-4642","1726-4634"],"issn-type":[{"value":"1726-4634","type":"print"},{"value":"1726-4642","type":"electronic"}],"subject":["General Medicine"]}}

Luego, usando algún convertidor de JSON a CSV/XLS podemos conocer que los autores registrados con ese doi son:
givenfamilysequence
PercyMayta-Tristánfirst
Carlos J.Toro-Huamanchumoadditional
JoelAlhuay-Quispeadditional
JosmelPacheco-Mendozaadditional
Nota: La primera columna indica los campos registrados según el esquema XML de CrossRef.

Hasta aquí, quizá te preguntes ¿y para qué seguir tantos pasos solo para conocer quienes son los autores? si puedo hacerlo yendo a la web de la revista. En efecto, pero mediante esta vía podemos saber si los datos (metadatos) están correctamente registrados, como si todos los autores tienen ORCID vinculados con el registro DOI del artículo.


Con el segundo caso [2] se puede extraer la información del publicador (editorial) que ha suscrito o paga por la suscripción a PILA para el servicio DOI del CrossRef. Esta vez, probamos con este prefijo DOI 10.24265, los resultados son:
{"status":"ok","message-type":"prefix","message-version":"1.0.0","message":{"member":"http:\/\/id.crossref.org\/member\/10362","name":"Universidad de San Martin de Porres","prefix":"http:\/\/id.crossref.org\/prefix\/10.24265"}}




Al ser una respuesta no extensa, visualmente podemos saber que ese prefijo pertenece a una universidad privada peruana.

Usando la sentencia [3] con el ISSN de una revista (e.g., 2310-4635) podemos recuperar todos los artículos de la revista con un DOI registrado:
http://api.crossref.org/v1/journals/2310-4635/works

Finalmente, con misma sentencia [3] añadiendo valores de lista (sorting value=is-referenced-by-count) y límite de filas (rows=5) podremos saber cuáles son los 5 artículos más citados de la revista del ejemplo anterior:

https://api.crossref.org/v1/journals/2310-4635/works?query=&sort=is-referenced-by-count&rows=1

Para las siguientes entradas intentaremos probar consultas más complejas con librerías en R o Python, ojalá sea muy pronto. Gracias por quedarte!

Referencias

2. Interfaz de programación de aplicaciones (API). https://www.ticportal.es/glosario-tic/api-interfaz-programacion-aplicaciones
3. Qué es y cómo usar una API. https://blog.hubspot.es/marketing/que-como-usar-api
4. Elsevier developers: API Interface Specification. https://dev.elsevier.com/api_docs.html
5. Clarivate Analytics APIs. https://developer.clarivate.com/apis
6. CrossRef REST API. https://github.com/CrossRef/rest-api-doc

Comentarios