# Protocolo de Datos Abiertos

En la informática, el Protocolo de Datos Abierto (OData) o Open Data Protocoles un protocolo abierto que permite la creación y consumo de APIs RESTful que pueden ser consultadas e interoperables en una manera simple y estandarizada. Microsoft inició dicho protocolo en el 2007. Las versiones 1.0,2.0 y 3 están lanzadas bajo el Microsoft Open Specification Promise. La versión 4.0 fue estandarizada en OASIS,, con un lanzamiento en marzo de 2014. En abril de 2015 OASIS envió la versión 4 de OData y la versión 4 del formato OData JSON a ISO/IEC JTC 1 para su aprobación como un estándar internacional.
El protocolo permite la creación y consumición de APIs REST que permiten la creación de clientes Web para publicar y editar recursos, identificados utilizando URLs y definido en un modelo de datos, usando mensajes HTTP simples.OData comparte algunas similitudes con JDBC y con ODBC; como ODBC, OData no esta limitada a una Base de datos relacional.

## Estandarización

Tras el desarrollo inicial por Microsoft, OData se convirtió en un protocolo del comité técnico OASIS OData

### Comité Técnico OASIS OData

   "The OASIS OData TC works to simplify the querying and sharing of data across disparate applications and multiple stakeholders for re-use in the enterprise, Cloud, and mobile devices. A REST-based protocol, OData builds on HTTP, AtomPub, and JSON using URIs to address and access data feed resources. It enables information to be accessed from a variety of sources including (but not limited to) relational databases, file systems, content management systems, and traditional Web sites. OData provides a way to break down data silos and increase the shared value of data by creating an ecosystem in which data consumers can interoperate with data producers in a way that is far more powerful than currently possible, enabling more applications to make sense of a broader set of data. Every producer and consumer of data that participates in this ecosystem increases its overall value."
El trabajo del comité consiste en simplificar la consulta y compartimiento de los datos de las aplicaciones y múltiples stake-holders para la re-utilización en las empresas,nube y dispositivos móviles.Se usa un protocólo basado en REST para poder dirigir y acceder las fuentes. Permite que la información pueda ser accedida desde una variedad de fuentes como pueden ser bases de datos distribuidas, sistemas de ficheros, sistemas de manejo de contenido y páginas web. OData ofrece una forma de dividir contenedores de datos y así incrementar el valor compartido de los datos debido a que los usuarios pueden ínter-operar con los productores de una manera que produce mayor valor permitiendo que las aplicaciones tenga sentidos en conjuntos más amplios de datos.

## Arquitectura

OData es un protocolo para la creación y consumición de APIs REST. Así pues, como práctica común de REST,Construcciones OData en HTTP,AtomPub y JSON utilizando el identificador de recursos uniformes para dirigir y acceder a recursos alimentados de datos.

### Identificación de recursos

OData utiliza identificadores de recursos uniformes. Para cada servicio OData cuyo servicio raíz esta abreviado como http://host/service/, los siguientes recursos fijos pueden ser encontrados.

### Documento del servicio

El documento del servicio muestra conjuntos de entidades,funciones e instancias únicas que pueden ser recuperadas.Los clientes pueden utilizar el documento del servicio para navegar el modelo de forma hypermedia-driven.
El documento del servicio está disponible en http://host/service/.

### Documento de meta-datos

El documento de meta-datos describe los tipos, conjuntos, funciones y acciones entendidas por el servicio OData. Los clientes pueden utilizar el documento de meta-datos para entender como consultar e interaccionar con las entidades del servicio.
El documento de metadatos está disponible en http://host/service/$metadata.

### Recursos dinámicos

Los identificadores de recursos uniforme pueden ser computados desde la información hypermedia en el documento del servicio y documento de meta-datos.

### Operación de recurso

OData utiliza los verbos HTTP para indicar las operaciones en los recursos.

### Representación del recurso

OData utiliza diferentes formatos para representar los datos y el modelo de datos. En la versión 4.0 del protocolo OData, El formato JSON es el estándar para representar datos, con el formato Atom aún en la fase de especificación del comité. Para representar el modelo de datos se utiliza el lenguaje de definición de esquema común, que define una representación del modelo de datos de entidad expuesto por los servicios OData.

#### Un ejemplo de OData JSON

Una colección de productos

#### Ejemplo de OData Atom

Colección de productos

#### Ejemplo de un documento OData de meta-datos
### Ecosistema

El ecosistema de OData consiste en librerías cliente/servidor que implementan el protocolo, y aplicaciones basadas en el protocolo

### Librerías

Hay un gran número de librerías OData disponibles para acceder/Producir APIs de OData

#### .NET

* Cliente y servidor: Microsoft´s OData .NET libraries
* Cliente: Simple.OData.Client

#### Java

* Cliente y servidor: Apache Olingo
* Lado del servidor: Jello-Framework

#### JavaScript

* Cliente: Apache Olingo (presentado por OASIS)
* Cliente: data.js Archivado el 10 de enero de 2018 en Wayback Machine.
* Cliente: JayData para un mayor nivel de abstracción (Sintaxis tipo LINQ,soporte para geo funciones de OData , Bases de datos indexadas, WebSQL, integración para DevExtremeintegration, Kendo UI, Angular.js, Knockout.js and Sencha).
* Cliente: OpenUI5libreria mantenida por SAP.
* Cliente (Node.js): JayData para node
* Cliente: Breeze
* Servere: node-odata

#### PHP

* Cliente: odataphp Archivado el 7 de enero de 2018 en Wayback Machine.
* Servidor: POData

#### Python

* Cliente: PyOData
* Servidor: and client: Pyslet

#### Ruby

* Cliente: OData para Ruby
* Cliente: Libreria OData libre para Ruby
* Servidor: Safrano

#### Otros lenguajes

Otros lenguajes implementados son::
* AJAX: la libreria Ajax ASP.NET Archivado el 4 de abril de 2010 en Wayback Machine. para llegar a OData.
* C++: odatacpp_client Es una implementación solo del cliente del protocolo OData.
* Windward Studios Admiten OData en las soluciones de generación de informes y documentos.
* La herramienta de informes List & Label tiene un proveedor de datos especializados para OData.
* Blackberry (C++): OData-BB10 Libreria OData para aplicaciones en cascada de Blackberry 10.

### Aplicaciones

Las aplicaciones incluyen:
* Progress DataDirect Hybrid Data Pipeline can expose any cloud, big data or relational data sources as OData end points.Puede exponer cualquier nube, big data o fuente de datos relacional como puntos finales de OData.
* Socrata expone una API OData.
* Microsoft Azure exposes an OData API.
* SAP NetWeaver Gateway Ofrece acceso OData Business Suite y SAP business Warehouse.
* IBM WebSphere eXtreme Scale Seervicio de datos REST puede ser accedido por un cliente isando oData.
* Microsoft SharePoint del 2010 y adelante pueden exponer sus datos como puntos finales de OData.
* Microsoft Office 365 expone versiones 4.0 de APIs OData.
* Salesforce Lightning Connect consume APIs OData.
* Skyvia Connect Expone nubes y datos de bases de datos mediante OData.
* Tableau se puede conectar a APIs OData.
* TIBCO Spotfire se puede conectar a APIs OData.
* Mulesoft ayuda a integrar APIs de OData.
* SuccessFactors USa APIs OData.
* Ceridian HCM's Dayforce usa OData
* Redfish usa OData

## Herramientas

* Nucleon Database Master