In computing, Open Data Protocol (OData) is an open protocol that allows the creation and consumption of queryable and interoperable Web service APIs in a standard way. Microsoft initiated OData in 2007. [1] Versions 1.0, 2.0, and 3.0 are released under the Microsoft Open Specification Promise. Version 4.0 was standardized at OASIS, [2] with a release in March 2014. [3] In April 2015 OASIS submitted OData v4 and OData JSON Format v4 to ISO/IEC JTC 1 for approval as an international standard. [4] In December 2016, ISO/IEC published OData 4.0 Core as ISO/IEC 20802-1:2016 [5] [6] and the OData JSON Format as ISO/IEC 20802-2:2016. [7]
The protocol enables the creation and consumption of HTTP-based Web APIs, which allow Web clients to publish and edit resources, identified using URLs and defined in a data model, using simple HTTP messages. OData shares some similarities with JDBC and with ODBC; like ODBC, OData is not limited to relational databases.
After initial development by Microsoft, OData became a standardized protocol of the OASIS OData Technical Committee (TC).
"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." [8]
TC participants include CA Technologies, Citrix Systems, IBM, Microsoft, Progress Software, Red Hat, SAP SE and SDL.
OData is a protocol for the creation and consumption of Web APIs. OData thus builds on HTTP, AtomPub, and JSON using URIs to address and access data feed resources.
OData uses URIs to identify resources. For every OData service whose service root is abbreviated as http://host/service/ , the following fixed resources can be found:
The service document lists entity sets, functions, and singletons that can be retrieved. Clients can use the service document to navigate the model in a hypermedia-driven fashion.
The service document is available at http://host/service/
The metadata document describes the types, sets, functions and actions understood by the OData service. Clients can use the metadata document to understand how to query and interact with entities in the service.
The metadata document is available at http://host/service/$metadata .
The URIs for the dynamic resources may be computed from the hypermedia information in the service document and metadata document.
OData uses the HTTP verbs to indicate the operations on the resources.
URLs requested from an OData endpoint may include query options. The OData protocol specifies various 'system query options' endpoints should accept, these can be used to filter, order, map or paginate data.
Query options can be appended to a URL after a ?
character and are separated by &
characters; each option consists of a $
-sign prefixed name and its value, separated by a =
sign, for example: OData/Products?$top=2&$orderby=Name
. A number of logical operators and functions are defined for use when filtering data, for example: OData/Products?$filter=Price lt 10.00 and startswith(Name,'M')
requests products with a price smaller than 10 and a name starting with the letter 'M'.
OData uses different formats for representing data and the data model. In OData protocol version 4.0, JSON format is the standard for representing data, with the Atom format still being in committee specification stage. For representing the data model, the Common Schema Definition Language (CSDL) is used, which defines an XML representation of the entity data model exposed by OData services.
A collection of products:
{"@odata.context":"http://services.odata.org/V4/OData/OData.svc/$metadata#Products","value":[{"ID":0,"Name":"Meat","Description":"Red Meat","ReleaseDate":"1992-01-01T00:00:00Z","DiscontinuedDate":null,"Rating":14,"Price":2.5},{"ID":1,"Name":"Milk","Description":"Low fat milk","ReleaseDate":"1995-10-01T00:00:00Z","DiscontinuedDate":null,"Rating":3,"Price":3.5},...]}
A collection of products:
<feedxml:base="http://services.odata.org/V4/OData/OData.svc/"m:context="http://services.odata.org/V4/OData/OData.svc/$metadata#Products"xmlns="http://www.w3.org/2005/Atom"xmlns:d="http://docs.oasis-open.org/odata/ns/data"xmlns:m="http://docs.oasis-open.org/odata/ns/metadata"xmlns:georss="http://www.georss.org/georss"xmlns:gml="http://www.opengis.net/gml"><id>http://services.odata.org/v4/odata/odata.svc/Products</id><titletype="text">Products</title><updated>2015-05-19T03:38:50Z</updated><linkrel="self"title="Products"href="Products"/><entry><id>http://services.odata.org/V4/OData/OData.svc/Products(0)</id><categoryterm="#ODataDemo.Product"scheme="http://docs.oasis-open.org/odata/ns/scheme"/><linkrel="edit"title="Product"href="Products(0)"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"type="application/xml"title="Categories"href="Products(0)/Categories/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/Categories"type="application/atom+xml;type=feed"title="Categories"href="Products(0)/Categories"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"type="application/xml"title="Supplier"href="Products(0)/Supplier/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/Supplier"type="application/atom+xml;type=entry"title="Supplier"href="Products(0)/Supplier"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"type="application/xml"title="ProductDetail"href="Products(0)/ProductDetail/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/ProductDetail"type="application/atom+xml;type=entry"title="ProductDetail"href="Products(0)/ProductDetail"/><title/><updated>2015-05-19T03:38:50Z</updated><author><name/></author><contenttype="application/xml"><m:properties><d:IDm:type="Int32">0</d:ID><d:Name>Bread</d:Name><d:Description>Wholegrainbread</d:Description><d:ReleaseDatem:type="DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate><d:DiscontinuedDatem:null="true"/><d:Ratingm:type="Int16">4</d:Rating><d:Pricem:type="Double">2.5</d:Price></m:properties></content></entry><entry><id>http://services.odata.org/V4/OData/OData.svc/Products(1)</id><categoryterm="#ODataDemo.Product"scheme="http://docs.oasis-open.org/odata/ns/scheme"/><linkrel="edit"title="Product"href="Products(1)"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"type="application/xml"title="Categories"href="Products(1)/Categories/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/Categories"type="application/atom+xml;type=feed"title="Categories"href="Products(1)/Categories"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"type="application/xml"title="Supplier"href="Products(1)/Supplier/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/Supplier"type="application/atom+xml;type=entry"title="Supplier"href="Products(1)/Supplier"/><linkrel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"type="application/xml"title="ProductDetail"href="Products(1)/ProductDetail/$ref"/><linkrel="http://docs.oasis-open.org/odata/ns/related/ProductDetail"type="application/atom+xml;type=entry"title="ProductDetail"href="Products(1)/ProductDetail"/><title/><updated>2015-05-19T03:38:50Z</updated><author><name/></author><contenttype="application/xml"><m:properties><d:IDm:type="Int32">1</d:ID><d:Name>Milk</d:Name><d:Description>Lowfatmilk</d:Description><d:ReleaseDatem:type="DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate><d:DiscontinuedDatem:null="true"/><d:Ratingm:type="Int16">3</d:Rating><d:Pricem:type="Double">3.5</d:Price></m:properties></content></entry>... </feed>
<edmx:EdmxVersion="4.0"xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"><edmx:DataServices><SchemaNamespace="ODataDemo"xmlns="http://docs.oasis-open.org/odata/ns/edm"><EntityTypeName="Product"><Key><PropertyRefName="ID"/></Key><PropertyName="ID"Type="Edm.Int32"Nullable="false"/><PropertyName="Name"Type="Edm.String"/><PropertyName="Description"Type="Edm.String"/><PropertyName="ReleaseDate"Type="Edm.DateTimeOffset"Nullable="false"/><PropertyName="DiscontinuedDate"Type="Edm.DateTimeOffset"/><PropertyName="Rating"Type="Edm.Int16"Nullable="false"/><PropertyName="Price"Type="Edm.Double"Nullable="false"/></EntityType><ComplexTypeName="Address"><PropertyName="Street"Type="Edm.String"/><PropertyName="City"Type="Edm.String"/><PropertyName="State"Type="Edm.String"/><PropertyName="ZipCode"Type="Edm.String"/><PropertyName="Country"Type="Edm.String"/></ComplexType><EntityContainerName="DemoService"><EntitySetName="Products"EntityType="ODataDemo.Product"></EntitySet></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>
This section's use of external links may not follow Wikipedia's policies or guidelines.(October 2015) |
The ecosystem of OData consists of the client/server libraries that implement the protocol, and applications that are based on the protocol.
There are a number of OData libraries available to access/produce OData APIs:
Other languages implemented include: [30]
Applications include: [35]
The Organization for the Advancement of Structured Information Standards is a nonprofit consortium that works on the development, convergence, and adoption of projects - both open standards and open source - for Computer security, blockchain, Internet of things (IoT), emergency management, cloud computing, legal data exchange, energy, content technologies, and other areas.
The name Atom applies to a pair of related Web standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol is a simple HTTP-based protocol for creating and updating web resources.
The Extensible Metadata Platform (XMP) is an ISO standard, originally created by Adobe Systems Inc., for the creation, processing and interchange of standardized and custom metadata for digital documents and data sets.
Sitemaps is a protocol in XML format meant for a webmaster to inform search engines about URLs on a website that are available for web crawling. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs of the site. This allows search engines to crawl the site more efficiently and to find URLs that may be isolated from the rest of the site's content. The Sitemaps protocol is a URL inclusion protocol and complements robots.txt
, a URL exclusion protocol.
FeedSync for Atom and RSS, previously Simple Sharing Extensions, are extensions to RSS and Atom feed formats designed to enable the bi-directional synchronization of information by using a variety of data sources. Initially developed by Ray Ozzie, Chief Software Architect at Microsoft, it is now maintained by Jack Ozzie, George Moromisato, Matt Augustine, Paresh Suthar and Steven Lees. Dave Winer, the designer of the UserLand Software RSS specification variants, has given input for the specifications.
GRDDL is a markup format for Gleaning Resource Descriptions from Dialects of Languages. It is a W3C Recommendation, and enables users to obtain RDF triples out of XML documents, including XHTML. The GRDDL specification shows examples using XSLT, however it was intended to be abstract enough to allow for other implementations as well. It became a Recommendation on September 11, 2007.
RDFa or Resource Description Framework in Attributes is a W3C Recommendation that adds a set of attribute-level extensions to HTML, XHTML and various XML-based document types for embedding rich metadata within Web documents. The Resource Description Framework (RDF) data-model mapping enables its use for embedding RDF subject-predicate-object expressions within XHTML documents. It also enables the extraction of RDF model triples by compliant user agents.
Metalink is an extensible metadata file format that describes one or more computer files available for download. It specifies files appropriate for the user's language and operating system; facilitates file verification and recovery from data corruption; and lists alternate download sources.
WS-Security Policy is a web services specification, created by IBM and 12 co-authors, that has become an OASIS standard as of version 1.2. It extends the fundamental security protocols specified by the WS-Security, WS-Trust and WS-Secure Conversation by offering mechanisms to represent the capabilities and requirements of web services as policies. Security policy assertions are based on the WS-Policy framework.
EPUB is an e-book file format that uses the ".epub" file extension. The term is short for electronic publication and is sometimes stylized as ePub. EPUB is supported by many e-readers, and compatible software is available for most smartphones, tablets, and computers. EPUB is a technical standard published by the International Digital Publishing Forum (IDPF). It became an official standard of the IDPF in September 2007, superseding the older Open eBook (OEB) standard.
The Web Services Description Language is an XML-based interface description language that is used for describing the functionality offered by a web service. The acronym is also used for any specific WSDL description of a web service, which provides a machine-readable description of how the service can be called, what parameters it expects, and what data structures it returns. Therefore, its purpose is roughly similar to that of a type signature in a programming language.
The Office Open XML file formats are a set of file formats that can be used to represent electronic office documents. There are formats for word processing documents, spreadsheets and presentations as well as specific formats for material such as mathematical formulas, graphics, bibliographies etc.
WebFinger is a protocol specified by the Internet Engineering Task Force IETF in RFC 7033 that allows for discovery of information about people and things identified by a URI. Information about a person might be discovered via an acct:
URI, for example, which is a URI that looks like an email address.
XHTML+RDFa is an extended version of the XHTML markup language for supporting RDF through a collection of attributes and processing rules in the form of well-formed XML documents. XHTML+RDFa is one of the techniques used to develop Semantic Web content by embedding rich semantic markup. Version 1.1 of the language is a superset of XHTML 1.1, integrating the attributes according to RDFa Core 1.1. In other words, it is an RDFa support through XHTML Modularization.
The Open Publication Distribution System (OPDS) catalog format is a syndication format for electronic publications based on Atom and HTTP. OPDS catalogs enable the aggregation, distribution, discovery, and acquisition of electronic publications. OPDS catalogs use existing or emergent open standards and conventions, with a priority on simplicity.
The Salmon Protocol is a message exchange protocol running over HTTP designed to decentralize commentary and annotations made against newsfeed articles such as blog posts. It allows a single discussion thread to be established between the article's origin and any feed reader or "aggregator" which is subscribing to the content. Put simply, that if an article appeared on 3 sites: A, B and C, that members of all 3 sites could see and contribute to a single thread of conversation regardless of site they were viewing from.
gSOAP is a C and C++ software development toolkit for SOAP/XML web services and generic XML data bindings. Given a set of C/C++ type declarations, the compiler-based gSOAP tools generate serialization routines in source code for efficient XML serialization of the specified C and C++ data structures. Serialization takes zero-copy overhead.
The RESTful Service Description Language (RSDL) is a machine- and human-readable XML description of HTTP-based web applications.
Really Simple Discovery (RSD) is an XML format and a publishing convention for making services exposed by a blog or other software discoverable by client software.
Hypertext Application Language (HAL) is a convention for defining hypermedia such as links to external resources within JSON or XML code. It is documented in an Internet Draft, with the latest version 11 published the 10th of October 2023. The standard was initially proposed in June 2012 specifically for use with JSON and has since become available in two variations, JSON and XML. The two associated MIME types are media type: application/hal+xml and media type: application/hal+json.