A partir del uso de servicios o archivos externos (ver sección 4) y la posibilidad que ofrece OpenRefine de guardar y rehacer pasos (ver sección 2.5.2) es posible crear rutinas para ejecutar de manera automática varias acciones de validación de calidad.
Aprovechando las múltiples herramientas de calidad de datos ya existentes en la red de GBIF es posible abordar de manera semi-automatizada a través de OpenRefine los retos y problemas más comunes de calidad que se presentan a nivel taxonómico y geográfico en un conjunto de datos. Acá se presentan diferentes rutinas que validan la calidad de los datos contrastando un conjunto de datos contra dichos servicios externos agilizando la obtención de resultados y asegurando una metodología de validación replicable.
Las rutinas comparan la información documentada en el conjunto de datos contra diferentes fuentes de referencia, y a partir de dicha comparación crean columnas de validación donde se puede identificar la correspondencia entre el archivo original y la fuente de referencia a través de operadores lógicos, unos (1) y ceros (0), que funcionan como indicadores de validación.
Los indicadores de validación se interpretan así:
-
0: El valor documentado en el conjunto de datos NO coincide con la fuente de referencia, el valor debe ser revisado y ajustado en caso de ser necesario.
-
1: El valor documentado en el conjunto de datos coincide con la fuente de referencia, no es necesario tomar acciones adicionales.
Observe el ejemplo de la Figura 57, en la primera fila el valor original de la columna "family"
no coincide con la columna "familySuggested"
ya que tiene un error de tipeo, por lo tanto el indicador de validación (columna "familyValidation"
) es cero (0). Note que en las filas donde sí hay coincidencia el indicador de validación ("familyValidation"
) es uno (1).
Las rutinas utilizan como fuentes de validación API’s (Interfaces de Programación de Aplicaciones) de repositorios globales taxonómicos, geográficos o archivos de texto plano obtenidos como resultado de herramientas de validación externas.
Se encuentran disponibles cinco (5) rutinas (Tabla 4) las cuales incluyen adicionalmente posibles escenarios al momento de realizar la validación, tal como la caída temporal de servicios web, o requisitos adicionales según la naturaleza de los datos (e.g. el grupo biológico de interés). A continuación se explica cada una:
Tabla 4. Lista de rutinas para la validación de datos primarios sobre biodiversidad
Nombre | Uso | Requerimientos |
---|---|---|
Validación taxonómica que usa como referencia el árbol taxonómico de GBIF. Permite validar registros de varios grupos biológicos a la vez, así como obtener la taxonomía superior de cada taxa. |
Requiere como mínimo los elementos DwC |
|
Validación taxonómica que usa como referencia el árbol taxonómico de GBIF, a diferencia de la rutina anterior realiza la validación contra el archivo de resultados normalized obtenido de Species Matching permitiendo así aprovechar las funcionalidades de validación y limpieza de esta herramienta. La rutina facilita el cruce de los resultados obtenidos con Species Matching con el conjunto de datos original. |
Requiere como mínimo el elemento DwC |
|
Validación taxonómica específica para organismos marinos, que usa como referencia el árbol taxonómico de LifeWatch (LW-SIBb) por medio de la API de WoRMS (World Register of Marine Species). Permite obtener la taxonomía superior de cada taxa, así como elementos taxonómicos obligatorios para la publicación de datos a través de OBIS. |
Requiere como mínimo el elemento DwC |
|
Validación y/o obtención de la elevación a partir de las coordenadas usando el servicio geográfico de GeoNames. |
Requiere los elemento DwC |
|
Transformación de fechas en múltiples formatos al estándar ISO 8601. |
Requiere el elemento DwC |
Las rutinas cuya fuente de referencia es un API, hacen una consulta a un servicio externo y obtienen una respuesta en formato JSON, la rutina interpreta esta respuesta y la hace legible en forma de columnas dentro del conjunto de datos. Posteriormente el resultado de la consulta al API es comparado con el valor documentado en el conjunto de datos y se generan nuevas columnas con los indicadores de la validación (unos y ceros). Las rutinas que usan como fuente archivos de texto plano, hacen una consulta sobre un archivo cargado previamente en OpenRefine que posteriormente es comparado con el valor documentado en el conjunto de datos. Como resultado de la comparación se generan nuevas columnas con los indicadores de la validación.
Todas las rutinas se ejecutan de manera similar, los detalles específicos para cada una se explican más adelante. En esta sección se presentan instrucciones generales para su ejecución en OpenRefine:
Carga de los archivos en OpenRefine
Cree un proyecto en OpenRefine con el conjunto de datos que desea validar, si tiene dudas sobre cómo hacerlo revise la sección 1. Asegúrese que el conjunto de datos o los elementos que desea validar estén estructurados en el estándar Darwin Core, si no lo están ajuste el nombre de cada columna según el estándar siguiendo las instrucciones de la sección 2.1.1.
Según la validación que desee realizar asegúrese de cumplir los requerimientos de la rutina. Si la rutina lo requiere cargue también en OpenRefine los archivos adicionales de validación (ver Tabla 2.), de lo contrario vaya directamente al paso 2.
Ejecutar la rutina
Ubique en esta guía la rutina de interés según la validación que desee realizar, haga clic en el enlace a la rutina y será redirigido a GitHub donde encontrará un archivo de texto plano con la rutina, copie el texto de la rutina de validación (Figura 58). Asegúrese de seleccionar solo la rutina -sin las instrucciones- y copiar todos los corchetes iniciales {
y finales }
.
Ubíquese en el conjunto de datos a validar en OpenRefine, diríjase al menú arriba a la izquierda, seleccione la pestaña “Deshacer/Rehacer” y haga clic en el botón “Aplicar…”. A continuación se abrirá una ventana de texto vacía, pegue en el cuadro de texto la rutina a ejecutar y haga clic en “Ejecutar Operaciones” (Figura 59). Si tiene dudas sobre este proceso revise la sección 2.5.
El avance de la ejecución de la rutina se observa en la parte superior de la pantalla (Figura 60).
Espere a que finalice la ejecución de la rutina. Las rutinas que requieren hacer llamados a servicios externos, dependen de la conexión a internet, estas consultas toman un tiempo en ejecutarse que varía según el número de filas del conjunto de datos, de la velocidad de la conexión y de la memoria RAM de su equipo.
Resultados de la validación
Al terminar la ejecución de la rutina, obtendrá nuevas columnas en el conjunto de datos, puede identificarlas por su terminación:
-
Suggested: Valores sugeridos resultantes de la validación con las fuentes de referencia, dependiendo de la rutina seleccionada pueden ser sugerencias taxonómicas, geográficas, o temporales.
-
Validation: Corresponde a los indicadores de validación (unos y ceros) que permiten rastrear diferencias entre el valor original y el valor sugerido, y realizar posteriormente una limpieza de los datos.
En la Figura 61 se muestra un ejemplo de cómo se ven los identificadores de la validación y las nuevas columnas con las sugerencias después de ejecutar la rutina; en el ejemplo se observa una validación taxonómica, las columnas de resultado varían según el objetivo de cada rutina.
Limpieza de los datos
A partir de las nuevas columnas de validación (finalizadas en las palabra Suggested) seleccione los registros donde el valor original y el valor sugerido son diferentes (identificador de validación = 0) y realice los ajustes que considere necesarios sobre los elementos del estándar Darwin Core. Se recomienda realizar este proceso de limpieza utilizando las funcionalidades de OpenRefine descritas en la Sección 2 de limpieza de datos. El proceso de validación con las rutinas busca facilitar la identificación de filas y elementos que necesitan ser verificados y limpiados, sin embargo, un identificador de validación con valor cero (0) no necesariamente implica que haya un error en los datos. Cada publicador según su conocimiento de los datos y del grupo biológico debe determinar si los datos se deben ajustar y cómo.
Por ejemplo de la Figura 62 se muestra una Faceta de texto que permite seleccionar las filas cuyo indicador de validación es cero (0) para el elemento de familia y por lo tanto necesita ser verificado. En la primera fila se muestra una inconsistencia entre la familia documentada en el conjunto de datos original y la sugerida por la rutina, mientras en la segunda fila se evidencia un problema de tipeo. En cada caso debe revisar de manera integral cada fila y decidir qué ajuste se debe o no realizar.
Tenga en cuenta que los identificadores de validación no cambiarán (de 0 a 1) automáticamente así usted haya ajustado los datos originales según las sugerencias de la rutina. Cámbielos manualmente cuando realice la limpieza de cada fila indistintamente del ajuste realizado.
Una vez terminada la validación y limpieza de sus datos, puede eliminar las columnas resultantes de la validación (finalizan en las palabras Validation y Suggested) y dejar solo las columnas corregidas de su archivo original.
Enlace a la rutina:
Requerimientos:
-
El conjunto de datos a validar debe tener como mínimo los elementos DwC
"scientificName"
y"kingdom'"
documentados. -
Si también desea validar la taxonomía superior de su conjunto de datos se requieren los elementos DwC:
"scientificName"
,"kingdom"
,"phylum"
,"class"
,"order"
,"family"
, y"genus"
.
Funcionamiento:
Esta rutina valida la información taxonómica de un conjunto de datos usando como referencia el árbol taxonómico de GBIF, esto se hace a través de un llamado al API de GBIF basado en los elementos del estándar Darwin Core "scientificName"
y "kingdom"
documentados en el conjunto de datos. Como resultado, el llamado retorna la taxonomía superior, nombres aceptados, estatus taxonómico y autoría del nombre científico de acuerdo al árbol taxonómico de GBIF. La rutina toma los valores obtenidos del árbol y los compara con los elementos documentados en el archivo base, generando los indicadores de validación.
Resultados:
En las primeras columnas del proyecto encontrará las columnas con los datos taxonómicos reorganizadas junto con nuevas columnas resultantes de la rutina. Primero encontrará las columnas asociadas al cruce con el árbol taxonómico y luego de manera intercalada columnas con el valor taxonómico original, un valor sugerido de acuerdo al árbol taxonómico de GBIF y el indicador de validación indicando si los valores son iguales (1) o difieren (0) como se muestra en la Figura 63.
A continuación se listan las columnas que encontrará después de ejecutar la rutina:
-
taxonMatchType
: Indica el resultado del cruce de los datos originales con el árbol taxonómico de GBIF a partir de los elementos"scientificName"
y"kingdom"
. Los valores que encontrará en esta columna son:-
EXACT: La correspondencia entre el
"scientificName"
del conjunto de datos y el árbol taxonómico es completa. -
FUZZY: La correspondencia entre el
"scientificName"
del conjunto de datos y el árbol taxonómico es parcial, el nombre difiere en su escritura. Comúnmente indica errores de tipeo o diferencias por correcciones nomenclaturales (ejem: la terminacióni
vs.ii
cuando la especie se dedica a una persona). -
HIGHERRANK: La correspondencia entre el nombre científico del conjunto de datos y el árbol taxonómico fue parcial. No se identificó el taxon a nivel taxonómico de
"scientificName"
si no a un nivel superior. Por ejemplo si el"scientificName"
corresponde a una especie, la correspondencia con el árbol taxonómico de GBIF fue a nivel de género. Esto sucede porque el taxon aún no está en el árbol taxonómico de GBIF o por errores de tipeo mayores. -
NONE y BLANK: La correspondencia entre el
"scientificName"
del conjunto de datos y el árbol taxonómico fue nula o hubo varias coincidencias con muy poca información para determinar un resultado, esto sucede comunmente cuando hay homónimos o si el taxon aún no se encuentra en el árbol taxonómico de GBIF, como es el caso de especies recientemente descritas o algunas endémicas.
-
-
"scientificName"
: Columna original del conjunto de datos. -
"acceptedScientificName"
: Nombre científico aceptado según el árbol taxonómico de GBIF. -
"canonicalNameSuggested"
: Nombre canónico sugerido según el árbol taxonómico de GBIF. -
"taxonRankSuggested"
: Categoría del taxon sugerido según el árbol taxonómico de GBIF (e.g.: SPECIES, GENUS, FAMILY). -
"taxonomicStatusSuggested"
: Estado del taxon sugerido según el árbol taxonómico de GBIF (e.g.: ACCEPTED, SYNONYM). -
Tripleta de elementos validados donde se encuentra la columna original del conjunto de datos, la columna de validación y la columna con la sugerencia según el árbol taxonómico, por ejemplo:
"class"
,"classValidation"
,"classSuggested"
. Los siguientes elementos de estar documentados en el conjunto de datos original tendrán dicha tripleta:"scientificNameAuthorship"
,"kingdom"
,"phylum"
,"class"
,"order"
,"family"
,"genus"
,"specificEpithet"
-
callAPI
: Respuesta del API a la rutina, contiene todos los resultados en formato JSON.
Important
|
El llamado al API permite hacer una consulta sobre un número ilimitado de registros, sin embargo si su conjunto de datos tiene muchas filas se recomienda ejecutar la rutina sobre nombres científicos únicos, lo cual disminuirá el tiempo de respuesta y agilizará la ejecución de la rutina. |
Enlace a la rutina:
Requerimientos:
-
El conjunto de datos a validar debe tener como mínimo el elemento DwC
"scientificName"
documentado. -
Si también desea validar la taxonomía superior de su conjunto de datos se requieren los elementos DwC:
"scientificName"
,"kingdom"
,"phylum"
,"class"
,"order"
,"family"
, y"genus"
. -
Archivo titulado normalized, obtenido de la herramienta Species Matching tras validar los datos originales, y cargado en OpenRefine, el título del proyecto debe ser exactamente normalized.
Warning
|
El archivo normalized debe ser el único proyecto en OpenRefine titulado de esta manera. Cambie el nombre de cualquier otro archivo normalized cargado previamente, de lo contrario la rutina no podrá identificar adecuadamente el archivo de referencia. |
Funcionamiento:
La rutina obtiene y valida la información taxonómica de un conjunto de datos con el árbol taxonómico de GBIF a partir del archivo de texto plano normalized obtenido de la herramienta en línea Species Matching y cargado en OpenRefine. La rutina retorna la taxonomía superior, nombres aceptados, estatus taxonómico y autoría del nombre científico de acuerdo al árbol taxonómico de GBIF y los compara con los elementos documentados en el archivo base, generando los indicadores de validación.
Al usar Species Matching como fuente de referencia, el usuario puede realizar una validación y limpieza previa a OpenRefine directamente en Species Matching, la cual es especialmente útil para verificar y resolver sinonimias complejas, como es el caso de los homónimos.
Important
|
A diferencia del API de GBIF, Species Matching tiene un límite de consulta de 6.000 registros o nombres científicos. Para evitar exceder el límite de consulta, se recomienda hacer la consulta en Species Matching por nombres científicos únicos. |
Resultados:
Como en la rutina anterior, en las primeras columnas del proyecto encontrará de manera intercalada una columna con el valor taxonómico original, un valor sugerido de acuerdo al árbol taxonómico de GBIF y el indicador de validación indicando si los valores son iguales (1) o difieren (0) como se muestra en la Figura 63. Obtendrá las mismas columnas que en la rutina anterior menos la columna "callAPI"
.
Enlace a la rutina:
Requerimientos:
-
El conjunto de datos a validar debe tener como mínimo el elemento DwC
"scientificName"
documentado. -
Si también desea validar la taxonomía superior de su conjunto de datos se requieren los elementos DwC:
"scientificName"
,"kingdom"
,"phylum"
,"class"
,"order"
,"family"
, y"genus"
.
Funcionamiento:
Esta rutina está diseñada para ser implementada en conjuntos de datos de grupos biológicos marinos, emplea como fuente de referencia los taxones marinos del árbol taxonómico de LifeWatch (LW-SIBb) a través de un llamado al API de WoRMS (World Register of Marine Species). La rutina retorna la taxonomía superior, nombres aceptados, estatus taxonómico y autoría del nombre científico de acuerdo al árbol taxonómico de LifeWatch y los compara con los elementos documentados en el archivo base, generando los indicadores de validación.
Adicionalmente a los elementos taxonómicos, esta rutina retorna otros elementos útiles que dan información sobre el tipo de hábitat del taxon y el LSID de WoRMS o AphiaID, elemento requerido para la publicación de datos a través de OBIS (Ocean Biodiversity Information System).
Resultados:
En las primeras columnas del proyecto encontrará de manera intercalada una columna con el valor taxonómico original, un valor sugerido de acuerdo al árbol taxonómico y el indicador de validación indicando si los valores son iguales (1) o difieren como se muestra en la las rutinas previas (Figura 63).
A continuación se listan las columnas que encontrará despues de ejecutar la rutina, adicionales a las ya mencionadas en las rutinas previas de validación taxonómica (Figura 64):
-
"matchType"
: Indica el resultado del cruce de los datos originales con el árbol taxonómico de WoRMS a partir del elemento"scientificName"
. Los valores que encontrará en esta columna son:-
"exact"
: La correspondencia entre el"scientificName"
del conjunto de datos y el árbol taxonómico es completa. -
"phonetic"
: La correspondencia entre el"scientificName"
del conjunto de datos y el árbol taxonómico es completa a nivel fonético a pesar de algunas diferencias menores en la escritura. -
"near_1"
: Hay una diferencia de un carácter entre el"scientificName"
del conjunto de datos y el árbol taxonómico. Es una correspondencia bastante confiable. -
"near_2"
: Hay una diferencia de dos caracteres entre el"scientificName"
del conjunto de datos y el árbol taxonómico. Se sugiere una revisión del nombre. -
"near_3"
: Hay una diferencia de tres caracteres entre el"scientificName"
del conjunto de datos y el árbol taxonómico. Se requiere una revisión del nombre. -
Para otras posibilidades poco frecuentes como`"match_quarantine"` y`"match_deleted"`, WoRMS recomienda contactarlos directamente.
-
-
"scientificNameID"
: Identificador del taxón construido a partir del AphiaID proveniente del árbol taxonómico de WoRMS. -
"nameAccordingTo
: La referencia bibliográfica del nombre científico según WoRMS -
"nameAccordingToID
: Identificador de la referencia bibliográfica del nombre científico según WoRMS. -
"isMarine"
: Valor booleano (TRUE o FALSE) que indica si el registro corresponde a un taxon marino. -
"isBrackish"
: Valor booleano (TRUE o FALSE) que indica si el registro corresponde a un taxon de aguas salobres. -
"isFreshwater"
: Valor booleano (TRUE o FALSE) que indica si el registro corresponde a un taxon de aguas continentales, i.e. taxones asociados a ríos o lagos. -
"isTerrestial"
: Valor booleano (TRUE o FALSE) que indica si el registro corresponde a un taxon terrestre. -
"callAPIworms"
: Respuesta del API a la rutina, contiene todos los resultados en formato JSON.
Enlace a la rutina:
Requerimientos:
-
El conjunto de datos a validar debe tener como mínimo los elemento DwC
"decimalLatitude"
y"decimalLongitude"
documentados adecuadamente. -
Tener una cuenta activa en GeoNames, si no tiene una regístrese aquí antes de correr la rutina.
Funcionamiento:
Warning
|
Antes de ejecutar la rutina remplace la palabra demo en la expresión username=demo por su nombre de usuario en GeoNames, por ejemplo username=rartizgt . Si ejecuta la rutina sin hacer este cambio utilizará la opción de prueba (demo ) incorporada por defecto en la rutina, la cual tiene un límite de 20.000 consultas diarias mundiales, por lo que puede que el servicio esté agotado y no obtenga resultados.
|
La rutina captura la elevación a partir de las coordenadas decimales documentadas en los elementos DwC "decimalLatitude"
y "decimalLongitude"
del archivo base, a través de una consulta a los servicios de GeoNames. La rutina se ejecuta sobre valores únicos de pares de coordenadas para evitar superar el límite de consultas diarias por usuario.
La rutina utiliza por defecto el modelo de elevación SRTM-1 ("srtm1"
), que cuenta con una resolución aproximada de 30 metros. Sin embargo, el usuario puede usar otro de los modelos de elevación disponibles:
-
SRTM3 (
"srtm3"
): Datos de elevación de la Shuttle Radar Topography Mission (SRTM), con resolución aproximada de 90 x 90 metros. -
Astergdemv2 (
"astergdem"
): Datos de elevación del Aster Global Digital Elevation Model V2 (2011) con resolución aproximada de 30 x 30 metros. -
GTOPO30 (
"gtopo30"
): Modelo de elevación global con resolución aproximada de 30 arcos por segundo, equivalente a una grilla de 1 km x 1 km.
Para cambiar el modelo de elevación reemplace en la rutina el valor srtm1
en la expresión grel:\"http://api.geonames.org/srtm1
por el valor que corresponda al servicio que desea utilizar srtm3
, astergdem
o gtopo30
.
Resultados:
En las primeras columnas del proyecto encontrará las columnas con los datos de elevación reorganizadas junto con nuevas columnas resultantes de la rutina. Encontrará de manera intercalada las columnas originales, un valor sugerido de acuerdo al servicio de elevación y dos indicadores de validación (Figura 65). El primer indicador contrasta la elevación obtenida con el servicio y el elemento "minimumElevationInMeters"
y debe ser interpretado así:
-
1: La diferencia entre la elevación en
"minimumElevationInMeters"
y"elevationSuggested"
es menor a 100 m. -
0: La diferencia entre la elevación en
"minimumElevationInMeters"
y"elevationSuggested"
es mayor a 100 m. -
blank: No hay elevación mínima documentada.
El segundo indicador contrasta la elevación obtenida con el servicio contra el rango de elevación indicado por los elementos "minimumElevationInMeters"
y "maximumElevationInMeters"
y debe ser interpretado así:
-
1: El rango de elevaciones contiene la elevación sugerida.
-
0: El rango de elevaciones NO contiene la elevación sugerida.
Important
|
Si las coordenas se encuentran sobre plataforma marina, puede que reciba como resultado valores negativos (ej. -1, -3), o valores como: "/home/data/srtm1/N02/N02W080.zip" o "No data". |
Esta rutina recopila los pasos de la sección 4.3 y automatiza su ejecución para el mismo procedimiento.
Enlace a la rutina:
Requerimientos:
-
El conjunto de datos a validar debe tener como mínimo el elemento DwC
"eventDate"
documentado.
Funcionamiento:
A partir de la fecha documentada en el archivo base en el elemento "eventDate"
se realiza una consulta al API de Canandensys que retorna las fechas transformadas al estándar ISO 8601. A diferencia de las rutinas anteriores el objetivo de esta rutina es transformar las fechas, por ello no retornará identificadores de validación.
Resultados
En las primeras columnas del proyecto encontrará las columnas con los datos temporales reorganizadas junto con nuevas columnas resultantes de la rutina.
A continuación se listan las columnas que encontrará después de ejecutar la rutina:
-
"eventDateSuggested"
: Fecha transformada al estándar ISO 8601. -
"yearSuggested"
: Año extraído a partir de la transformación de la fecha. -
"monthSuggested"
: Mes extraído a partir de la transformación de la fecha. -
"daySuggested"
: Día extraído a partir de la transformación de la fecha. -
"verbatimEventDateSuggested"
: Fecha en el formato original.
Para no generar conflicto con elementos ya existentes en el conjunto de datos, todas las columnas generadas por la rutina se marcan como sugeridas o Suggested (Figura 66). Si algún registro no tiene datos de fecha, los elementos resultantes aparecerán vacíos.
Important
|
Los formatos de fechas que son ambiguos, es decir donde no se diferencia con claridad el mes, el día o el año, no son transformados. Revise las celdas donde el resultado haya sido nulo o vacío y realice los ajustes necesarios de forma manual. |