Serialización

El Estándar de Datos de Contrataciones Abiertas proporciona un modelo de datos estructurados para capturar información en profundidad sobre todas las etapas del proceso de contratación.

La versión canónica actual de este modelo de datos es proporcionada por un Esquema JSON que describe nombres de campos, definiciones de campos y estructuras para los datos. El cumplimiento de los datos con el Estándar de Datos de Contrataciones Abiertas se evaluará en función de este esquema.

Sin embargo, hay muchos casos de uso en los cuales los publicadores y usuarios querrán trabajar con datos serializados en otros formatos. Por esta razón, la versión actual del OCDS soporta un número de serializaciones secundarias que están basadas en el esquema canónico. Estos no son componentes oficiales del estándar, pero están diseñados para dar soporte a los publicadores para dar datos accesibles a un rango de usuarios diferentes.

JSON

JSON significa Javascript Object Notation, y es un formato ampliamente utilizado para el intercambio de datos en la web. El lenguaje de esquema JSON proporciona herramientas de validación para trabajar con datos JSON.

Los datos OCDS necesitan seguir la especificación I-JSON (Internet JSON) en RFC7493, de acuerdo a la cual los textos en JSON necesitan ser codificados usando UTF-8, y el cual introduce una serie de requerimientos para los números, objetos y fechas.

Generando un archivo JSON

La mayoría de los lenguajes de programación proporcionan herramientas para los datos de salida en un formato JSON.

Una gama de herramientas están disponibles para trabajar con JSON-Schema, incluyendo herramientas de validación y generación de formularios .

Consumir JSON

La mayoría de los lenguajes de programación proporcionan herramientas para leer JSON.

Un número de bases de datos nativas JSON están disponibles para trabajar directamente con grandes colecciones de textos JSON y herramientas de línea de comandos como jq que admiten consultas avanzadas y recuperación de datos con archivos JSON.

También hay una gama de herramientas genéricas que pueden convertir JSON en estructuras CSV planas, incluyendo:

  • JSON -> CSV - herramienta en línea para convertir documentos pequeños.

  • Open Refine - herramienta de escritorio que puede manejar documentos grandes y soporta manipulación avanzada de datos.

CSV

JSON se basa en una estructura de árbol, con elementos de datos anidados entre sí. Sin embargo, muchas personas están familiarizadas con datos tabulares, compuestos de columnas y filas. No existe una manera fácil de representar datos estructurados en una sola tabla. Sin embargo, proponemos dos modelos para que los publicadores adopten.

  • Tabla sencilla simplificada - para casos en los que no hay relaciones uno a muchos en los datos (por ejemplo, cada licitación tiene sólo una adjudicación y un contrato y cada uno tiene sólo una partida).

  • Tablas múltiples- cuando se necesitan estructuras más avanzadas, pero cuando es deseable poder trabajar con datos en diseños de hoja de cálculo

En cada caso, los campos son identificados en las cabeceras del CSV por sus JSON Pointers equivalentes. Por ejemplo:

JSON

{
    "releases": [
        {
            "ocid": "ocds-a2ef3d01-1594121",
            "tag": "tender",
            "tender": {
                "id": "ocds-a2ef3d01-1594121/1",
                "items": [
                    {
                        "id": "1",
                        "description": "Standards development"
                    }
                ]
            }
        }
    ]
}

CSV

ocid

tag

tender/id

tender/items/id

tender/items/description

ocds-a2ef3d01-1594121

tender

ocds-a2ef3d01-1594121/1

1

Standards development

Existe una herramienta de código abierto en estado beta para generar plantillas planas CSV OCDS, y convertir en ambas direcciones entre hojas de cálculo y JSON siguiendo las plantillas. La herramienta de Revisión de Datos OCDS incorpora esta herramienta y ofrecerá convertir archivos subidos a ella.

Tabla sencilla simplificada

Es posible representar una entrega completa en una única fila plana de CSV utilizando punteros JSON completos para cada campo como encabezados.

Este enfoque generalmente sólo es apropiado para datos sin relaciones uno-a-muchos (por ejemplo, sólo un artículo por licitación y una adjudicación y contrato para cada proceso de licitación).

Sin embargo, es teóricamente posible representar una versión completa de entregas en una única fila plana de CSV usando punteros JSON completos para cada campo como encabezados. Para listas, esto implica añadir el índice de la lista a la ruta, como tender/item/0/id y tender/item/1/id como columnas separadas para representar cada uno de las artículos.

Por ejemplo, para representar una entrega de licitación con dos artículos, el archivo CSV incluiría:

ocid

tag

tender/id

tender/items/0/id

tender/items/0/description

tender/items/1/id

tender/items/1/description

ocds-a2ef3d01-1594121

tender

ocds-a2ef3d01-1594121/1

1

Standards development

2

Documentation authoring

El equivalente JSON de esto sería:

{
    "releases": [
        {
            "ocid": "ocds-a2ef3d01-1594121",
            "tag": "tender",
            "tender": {
                "id": "ocds-a2ef3d01-1594121/1",
                "items": [
                    {
                        "id": "1",
                        "description": "Standards development"
                    },
                    {
                        "id": "2",
                        "description": "Documentation authoring"
                    }
                ]
            }
        }
    ]
}

Aunque esto permite que los datos complejos se expresen en CSV plano, los usuarios necesitarán reconstruir la estructura para analizar los datos.

En su lugar, los datos con una relación de uno a muchos se pueden representar mediante una serialización de varias tablas.

Codificación CSV

Los archivos OCDS CSV deben de estar codificados en UTF-8 o Windows-1252.

Multi-tabla

La serialización de multi-tabla separa los objetos con relaciones de muchas a una (es decir, listas) en sus propias tablas.

Tablas múltiples se pueden empaquetar juntas como las pestañas de una hoja de cálculo de Excel, o en una colección de archivos CSV.

Se puede encontrar un ejemplo de plantilla de multi-tabla en el repositorio de datos de muestra.

Para obtener más información sobre las serializaciones multi-tabla, consulte la documentación de la herramienta de aplanamiento.

Empaquetado de archivos con metadatos

Sin importar la serialización que se usa para Datos de Contrataciones Abiertas, un archivo único puede tener una o más entregas y registros.

Los esquemas de paquete de entrega y de paquete de registros describen los metadatos claves que deben de darse para cualquier archivo que dé datos de Contrataciones Abiertas. Esto incluye el publishedDate, publisher, uri para acceder al archivo y los detalles de licencia del archivo.