Open Data Protocol

{{Short description|Open protocol for creating interoperable Web service APIs}}

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.{{cite web |last=Flasko |first=Mike |date=18 July 2007 |title=Welcome! |url=http://blogs.msdn.com/b/odatateam/archive/2007/07/18/welcome.aspx |url-status=dead |archive-url=https://web.archive.org/web/20140505051809/http://blogs.msdn.com/b/odatateam/archive/2007/07/18/welcome.aspx |archive-date=May 5, 2014 |website=MSDN Blogs |publisher=OData Team}} Versions 1.0, 2.0, and 3.0 are released under the Microsoft Open Specification Promise. Version 4.0 was standardized at OASIS,{{cite web |url = https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata | title = OASIS Open Data Protocol (OData) Technical Committee | access-date = 2013-08-05}} with a release in March 2014.{{cite web|url=https://www.oasis-open.org/news/pr/oasis-approves-odata-4-0-standards-for-an-open-programmable-web|title=OASIS Approves OData 4.0 Standards for an Open, Programmable Web|work=oasis-open.org|date=17 March 2014 }} In April 2015 OASIS submitted OData v4 and OData JSON Format v4 to ISO/IEC JTC 1 for approval as an international standard.{{cite web|title= OASIS has Submitted OData v4 and OData JSON Format v4 to ISO/IEC JTC 1 for approval as an International Standard|url= https://msopentech.com/blog/2015/04/21/oasis-has-submitted-odata-v4-and-odata-json-format-v4-to-isoiec-jtc-1-for-approval-as-an-international-standard/|website= MS Open Tech|access-date= 2015-05-18|archive-url= https://web.archive.org/web/20150520091929/https://msopentech.com/blog/2015/04/21/oasis-has-submitted-odata-v4-and-odata-json-format-v4-to-isoiec-jtc-1-for-approval-as-an-international-standard/|archive-date= 2015-05-20|url-status= dead}} In December 2016, ISO/IEC published OData 4.0 Core as ISO/IEC 20802-1:2016{{Cite web|title=OData Published as an ISO Standard · OData - the Best Way to REST|url=https://www.odata.org/blog/OData-Published-as-an-ISO-Standard/|access-date=2021-05-11|website=www.odata.org}}{{Cite web|title=ISO/IEC 20802-1:2016|url=https://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/06/92/69208.html|access-date=2021-05-11|website=ISO|language=en}} and the OData JSON Format as ISO/IEC 20802-2:2016.{{Cite web|title=ISO/IEC 20802-2:2016|url=https://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/06/92/69209.html|access-date=2021-05-11|website=ISO|language=en}}

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.

Standardization

After initial development by Microsoft, OData became a standardized protocol of the OASIS OData Technical Committee (TC).

=OASIS OData Technical Committee=

"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."{{Cite web|url=https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata|title=OASIS Open Data Protocol (OData) TC {{pipe}} OASIS|website=www.oasis-open.org|access-date=September 24, 2019}}

TC participants include CA Technologies, Citrix Systems, IBM, Microsoft, Progress Software, Red Hat, SAP SE and SDL.

Architecture

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.

=Resource identification=

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 ==

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 ==

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.

== Dynamic resources ==

The URIs for the dynamic resources may be computed from the hypermedia information in the service document and metadata document

= Resource operation =

OData uses the HTTP verbs to indicate the operations on the resources.

  • GET: Get the resource (a collection of entities, a single entity, a structural property, a navigation property, a stream, etc.).
  • POST: Create a new resource.
  • PUT: Update an existing resource by replacing it with a complete instance.
  • PATCH: Update an existing resource by replacing part of its properties with a partial instance.
  • DELETE: Remove the resource.

= Querying =

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'.

= Resource representation =

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 sample OData JSON data payload ==

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 sample OData Atom data payload ==

A collection of products:

http://services.odata.org/v4/odata/odata.svc/Products

Products

2015-05-19T03:38:50Z

http://services.odata.org/V4/OData/OData.svc/Products(0)

</p> <p><updated>2015-05-19T03:38:50Z</updated></p> <p><author></p> <p><name/></p> <p></author></p> <p><content type="application/xml"></p> <p><m:properties></p> <p><d:ID m:type="Int32">0</d:ID></p> <p><d:Name>Bread</d:Name></p> <p><d:Description>Whole grain bread</d:Description></p> <p><d:ReleaseDate m:type="DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate></p> <p><d:DiscontinuedDate m:null="true"/></p> <p><d:Rating m:type="Int16">4</d:Rating></p> <p><d:Price m:type="Double">2.5</d:Price></p> <p></m:properties></p> <p></content></p> <p></entry></p> <p><entry></p> <p><id>http://services.odata.org/V4/OData/OData.svc/Products(1)</id></p> <p><category term="#ODataDemo.Product" scheme="http://docs.oasis-open.org/odata/ns/scheme"/></p> <p><link rel="edit" title="Product" href="Products(1)"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(1)/Categories/$ref"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(1)/Categories"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(1)/Supplier/$ref"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(1)/Supplier"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(1)/ProductDetail/$ref"/></p> <p><link rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(1)/ProductDetail"/></p> <p><title/></p> <p><updated>2015-05-19T03:38:50Z</updated></p> <p><author></p> <p><name/></p> <p></author></p> <p><content type="application/xml"></p> <p><m:properties></p> <p><d:ID m:type="Int32">1</d:ID></p> <p><d:Name>Milk</d:Name></p> <p><d:Description>Low fat milk</d:Description></p> <p><d:ReleaseDate m:type="DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate></p> <p><d:DiscontinuedDate m:null="true"/></p> <p><d:Rating m:type="Int16">3</d:Rating></p> <p><d:Price m:type="Double">3.5</d:Price></p> <p></m:properties></p> <p></content></p> <p></entry></p> <p>...</p> <p></feed></p> <p></syntaxhighlight></p></div></section><section class='wiki-section collapsible' id='section--sample-ata-metadata-document-'><h2 class='section-toggle'>== A sample OData metadata document ==</h2><div class='wiki-body'><p><syntaxhighlight lang="xml" line></p> <p><edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"></p> <p><edmx:DataServices></p> <p><Schema Namespace="ODataDemo" xmlns="http://docs.oasis-open.org/odata/ns/edm"></p> <p><EntityType Name="Product"></p> <p><Key></p> <p><PropertyRef Name="ID"/></p> <p></Key></p> <p><Property Name="ID" Type="Edm.Int32" Nullable="false"/></p> <p><Property Name="Name" Type="Edm.String"/></p> <p><Property Name="Description" Type="Edm.String"/></p> <p><Property Name="ReleaseDate" Type="Edm.DateTimeOffset" Nullable="false"/></p> <p><Property Name="DiscontinuedDate" Type="Edm.DateTimeOffset"/></p> <p><Property Name="Rating" Type="Edm.Int16" Nullable="false"/></p> <p><Property Name="Price" Type="Edm.Double" Nullable="false"/></p> <p></EntityType></p> <p><ComplexType Name="Address"></p> <p><Property Name="Street" Type="Edm.String"/></p> <p><Property Name="City" Type="Edm.String"/></p> <p><Property Name="State" Type="Edm.String"/></p> <p><Property Name="ZipCode" Type="Edm.String"/></p> <p><Property Name="Country" Type="Edm.String"/></p> <p></ComplexType></p> <p><EntityContainer Name="DemoService"></p> <p><EntitySet Name="Products" EntityType="ODataDemo.Product"></EntitySet></p> <p></EntityContainer></p> <p></Schema></p> <p></edmx:DataServices></p> <p></edmx:Edmx></p> <p></syntaxhighlight></p></div></section><section class='wiki-section collapsible' id='section--cosystem'><h2 class='section-toggle'>Ecosystem</h2><div class='wiki-body'><p>{{external links|section|date=October 2015}}</p> <p>The ecosystem of OData consists of the client/server libraries that implement the protocol, and applications that are based on the protocol.</p></div></section><section class='wiki-section collapsible' id='section--ibraries-'><h2 class='section-toggle'>=Libraries=</h2><div class='wiki-body'><p>There are a number of OData libraries available to access/produce OData APIs:</p></div></section><section class='wiki-section collapsible' id='section--'><h2 class='section-toggle'>== .NET ==</h2><div class='wiki-body'><ul> <li>Server and client: Microsoft's OData .NET libraries<ref>[https://odata.github.io/ Microsoft's OData .NET libraries]</ref></li> <li>Client: Simple.OData.Client<ref>[https://github.com/object/Simple.OData.Client Simple.OData.Client]</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--ava-'><h2 class='section-toggle'>== Java ==</h2><div class='wiki-body'><ul> <li>Server and client: <a href='?title=Apache_Olingo'>Apache Olingo</a><ref>[http://olingo.apache.org/ Apache Olingo]</ref></li> <li>Server side: Jello-Framework<ref>[http://jello-framework.com/guide/rest.html Jello-Framework]</ref></li> <li>Client: odata-client<ref>[https://github.com/davidmoten/odata-client odata-client]</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--ava-cript-'><h2 class='section-toggle'>== JavaScript ==</h2><div class='wiki-body'><ul> <li>Client: Apache Olingo<ref>[http://olingo.apache.org/ Apache Olingo]</ref> (featured by <a href='?title=OASIS_%28organization%29'>OASIS</a><ref>{{Cite web|url=https://www.odata.org/libraries/|title=Libraries · OData - the Best Way to REST|website=www.odata.org|access-date=2019-02-19}}</ref>)</li> <li>Client: data.js<ref>{{Cite web|url=https://archive.codeplex.com/?p=datajs|title=data.js|website=CodePlex Archive}}</ref></li> <li>Client: JayData<ref>[http://jaydata.org/ JayData]</ref> for higher level of abstraction (LINQ-like syntax, support for OData geo features, IndexedDB, WebSQL, integration for DevExtreme, Kendo UI, Angular.js, Knockout.js and Sencha).</li> <li>Client: <a href='?title=OpenUI5'>OpenUI5</a> library maintained by <a href='?title=SAP'>SAP</a></li> <li>Client (Node.js): JayData for node<ref>[https://npmjs.org/package/jaydata JayData for node]</ref></li> <li>Client: Breeze<ref>[http://www.getbreezenow.com/ Breeze]</ref></li> <li>Client: OData4 and Invantive Bridge Online<ref>[https://access-odata.com OData4 and Invantive Bridge Online]</ref></li> <li>Client: odata-fluent-query:<ref>[https://github.com/rosostolato/odata-fluent-query odata-fluent-query]</ref> a JavaScript OData query language parser</li> <li>Server: node-odata<ref>[https://github.com/TossShinHwa/node-odata node-odata]</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--'><h2 class='section-toggle'>== PHP ==</h2><div class='wiki-body'><ul> <li>Client: odataphp<ref>[http://odataphp.codeplex.com/ odataphp]</ref></li> <li>Server: POData<ref>[https://github.com/Algo-Web/POData POData]</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--ython-'><h2 class='section-toggle'>== Python ==</h2><div class='wiki-body'><ul> <li>Client: PyOData<ref>[https://github.com/SAP/python-pyodata PyOData]</ref></li> <li>Server and client: Pyslet<ref>[https://pypi.python.org/pypi/pyslet Pyslet]</ref></li> </ul> <p>==== Ruby ====</p> <ul> <li>Client: ruby_odata library<ref>[http://rdoc.info/github/visoft/ruby_odata ruby_odata library]</ref></li> <li>Client: Free OData V4.0 Library for Ruby<ref>[https://github.com/wrstudios/frodata Free OData V4.0 Library for Ruby]</ref></li> <li>Server: Safrano<ref>[https://safrano.aithscel.eu Safrano]</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--thers-'><h2 class='section-toggle'>== Others ==</h2><div class='wiki-body'><p>Other languages implemented include:<ref>{{cite web|url=http://www.odata.org/libraries/|title=Libraries|work=odata.org}}</ref></p> <ul> <li>AJAX: ASP.NET Ajax Library<ref>[http://ajax.codeplex.com/ ASP.NET Ajax Library]</ref> for getting to OData.</li> <li>C++: odatacpp_client<ref>[https://github.com/OData/odatacpp-client odatacpp_client]</ref> is a client-side-only implementation of the OData protocol.</li> <li>Windward Studios<ref>[https://www.windwardstudios.com/datasource/odata Windward Studios]</ref> supports OData in their Reporting & Document Generation Solutions.</li> <li>Reporting tool <a href='?title=List_%26_Label'>List & Label</a> has a specialized data provider for OData.</li> <li>Blackberry (C++): OData-BB10<ref>[https://github.com/blackberry/OData-BB10 OData-BB10]</ref> Open Data Protocol (OData) library for <a href='?title=BlackBerry_10'>BlackBerry 10</a> (BB10) Cascades apps</li> </ul></div></section><section class='wiki-section collapsible' id='section--pplications-'><h2 class='section-toggle'>= Applications =</h2><div class='wiki-body'><p>Applications include:<ref>{{cite web|url=http://www.odata.org/ecosystem/|title=Ecosystem|work=odata.org}}</ref></p> <ul> <li>Progress DataDirect Hybrid Data Pipeline<ref>[https://www.progress.com/cloud-and-hybrid-data-integration Progress DataDirect Hybrid Data Pipeline]</ref> can expose any cloud, <a href='?title=big_data'>big data</a> or relational data sources as OData end points</li> <li><a href='?title=Socrata'>Socrata</a> exposes an OData <a href='?title=API'>API</a>.</li> <li><a href='?title=Microsoft_Azure'>Microsoft Azure</a> exposes an OData <a href='?title=API'>API</a>.</li> <li>[https://docs.oracle.com/en/cloud/paas/analytics-cloud/acsds/supported-data-sources.html Oracle Analytics Cloud] can connect to an OData API</li> <li><a href='?title=SAP_NetWeaver'>SAP NetWeaver</a> Gateway<ref>{{cite web |url = http://scn.sap.com/community/netweaver-gateway | title = SAP NetWeaver Gateway | access-date = 2012-11-22}}</ref> provides OData access to SAP Business Suite and SAP Business Warehouse.</li> <li><a href='?title=IBM_WebSphere_eXtreme_Scale'>IBM WebSphere eXtreme Scale</a> REST data service can be accessed by any HTTP client using OData.<ref name="IBM developerWorks eXtreme Scale REST data service">[http://www.ibm.com/developerworks/websphere/downloads/xs_rest_service.html IBM developerWorks eXtreme Scale REST data service] (OData)</ref></li> <li><a href='?title=Microsoft_SharePoint'>Microsoft SharePoint</a> 2010 and up can expose its data as OData endpoint</li> <li><a href='?title=Office_365'>Office 365</a> exposes OData V4.0 APIs.<ref>{{Cite web|url=https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/|title=Welcome to Office 365 APIs|website=docs.microsoft.com|date=28 August 2018 |access-date=September 24, 2019}}</ref></li> <li><a href='?title=Salesforce.com'>Salesforce</a> Connect consumes OData APIs.<ref>{{cite web|title=Set Up Salesforce Connect to Access External Data with the OData 2.0 or 4.0 Adapter|url=https://help.salesforce.com/s/articleView?id=sf.platform_connect_setup.htm&type=5}}</ref></li> <li>Skyvia Connect<ref>[http://skyvia.com/connect/ Skyvia Connect]</ref> exposes cloud and database data via OData</li> <li><a href='?title=Tableau_Software'>Tableau</a> can connect to OData APIs.<ref>{{Cite web|url=https://help.tableau.com/current/pro/desktop/en-us/examples_odata.htm|title=OData - Tableau|website=help.tableau.com|access-date=September 24, 2019}}</ref></li> <li><a href='?title=Spotfire'>TIBCO Spotfire</a> can connect to OData APIs.<ref>{{Cite web|url=https://www.tibco.com/blog/2015/05/28/odata-and-spotfire/|title=OData and Spotfire|website=The TIBCO Blog|language=en-us|access-date=2016-03-30}}</ref></li> <li>Mulesoft<ref>[https://www.mulesoft.com/ Mulesoft]</ref> helps integrate with OData APIs.<ref>{{Cite web|url=https://www.mulesoft.com/exchange/|title=Anypoint Exchange|website=www.mulesoft.com|access-date=September 24, 2019}}</ref></li> <li>SuccessFactors<ref>[https://www.successfactors.com/ SuccessFactors]</ref> uses OData APIs</li> <li>Ceridian HCM's Dayforce<ref>[https://www.ceridian.com/ Ceridian HCM's Dayforce]</ref> uses Odata<ref>{{Cite web|url=https://www.ceridian.com/products/dayforce/hr/reporting|title=HR Reporting Software - Dayforce {{pipe}} Ceridian|website=www.ceridian.com|access-date=September 24, 2019}}</ref></li> <li><a href='?title=Redfish_%28specification%29'>Redfish</a> uses Odata<ref>{{Cite web|url=https://www.exxactcorp.com/blog/HPC/what-you-need-to-know-about-redfish-api|title=What You Need to Know About Redfish API|date=2017-12-01|website=Exxact|language=en-US|access-date=2019-08-31}}</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--ools'><h2 class='section-toggle'>Tools</h2><div class='wiki-body'><ul> <li>Nucleon Database Master <ref>{{cite web|url=http://mongodb-tools.com/tool/nucleon-database-master/|title= Nucleon Database Master|access-date=16 November 2017}}</ref></li> </ul></div></section><section class='wiki-section collapsible' id='section--ee-also'><h2 class='section-toggle'>See also</h2><div class='wiki-body'><ul> <li><a href='?title=GData'>GData</a> – competing protocol from Google</li> <li><a href='?title=Resource_Description_Framework'>Resource Description Framework</a> (RDF) – a similar concept by <a href='?title=World_Wide_Web_Consortium'>W3C</a></li> <li><a href='?title=GraphQL'>GraphQL</a> - a popular protocol originally from Facebook/Meta</li> </ul></div></section><section class='wiki-section collapsible' id='section--eferences'><h2 class='section-toggle'>References</h2><div class='wiki-body'><p>{{reflist}}</p></div></section><section class='wiki-section collapsible' id='section--xternal-links'><h2 class='section-toggle'>External links</h2><div class='wiki-body'><ul> <li>[https://www.odata.org/ Official website]</li> <li>[https://docs.microsoft.com/en-us/dotnet/framework/wcf/ Develop Service-Oriented Applications with WCF]</li> <li>[https://www.hanselman.com/blog/odata-basics-at-the-azgroups-day-of-net-with-scottgu OData Basics Presentation]</li> </ul></div></section><section class='wiki-section collapsible' id='section--ata-tandards-'><h2 class='section-toggle'>=OData OASIS Standards=</h2><div class='wiki-body'><ul> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html OData Version 4.0 Part 1: Protocol]</li> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/part2-url-conventions/odata-v4.0-os-part2-url-conventions.html OData Version 4.0 Part 2: URL Conventions]</li> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html OData Version 4.0 Part 3: Common Schema Definition Language (CSDL)]</li> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/ ABNF components - OData ABNF Construction Rules Version 4.0 and OData ABNF Test Cases]</li> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/models/MetadataService.edmx Vocabulary components - OData Core Vocabulary and OData Measures Vocabulary]</li> <li>[http://docs.oasis-open.org/odata/odata/v4.0/os/schemas/ XML Schemas - OData EDMX XML Schema and OData EDM XML Schema]</li> <li>[http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html OData JSON Format Version 4.0]</li> </ul></div></section><section class='wiki-section collapsible' id='section--ommittee-pecifications-'><h2 class='section-toggle'>=Committee Specifications=</h2><div class='wiki-body'><ul> <li>[http://docs.oasis-open.org/odata/odata-atom-format/v4.0/cs02/odata-atom-format-v4.0-cs02.html OData Atom Format Version 4.0]</li> <li>[http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs01/odata-data-aggregation-ext-v4.0-cs01.html OData Extension for Data Aggregation Version 4.0]</li> </ul></div></section><section class='wiki-section collapsible' id='section--ommittee-otes-'><h2 class='section-toggle'>=Committee Notes=</h2><div class='wiki-body'><ul> <li>[http://docs.oasis-open.org/odata/new-in-odata/v4.0/cn01/new-in-odata-v4.0-cn01.html What's New in OData Version 4.0]</li> </ul> <p>{{List of International Electrotechnical Commission standards}}</p> <p>{{ISO standards}}</p> <p><a href='?title=Category%3AAtom_%28web_standard%29'>Category:Atom (web standard)</a></p> <p><a href='?title=Category%3AWeb_syndication_formats'>Category:Web syndication formats</a></p> <p><a href='?title=Category%3AXML-based_standards'>Category:XML-based standards</a></p> <p><a href='?title=Category%3AISO%2FIEC_standards'>Category:ISO/IEC standards</a></p></div></section></div></main> <footer class="site-footer"> <div class="footer-container"> <div class="footer-links"> <a href="/about.php">About</a> <a href="/help.php">Help</a> <a href="/updates.php">Updates</a> <a href="/contact.php">Contact</a> <a href="/privacy.php">Privacy</a> <a href="/terms.php">Terms</a> <a href="https://github.com/yourusername/friendly-wiki" target="_blank" rel="noopener">GitHub</a> </div> <div class="footer-copy"> © 2025 Friendly Wiki. All rights reserved. </div> </div> </footer> <script> const toggle = document.getElementById('mobileMenuToggle'); const menu = document.getElementById('mobileMenu'); toggle.addEventListener('click', () => { menu.classList.toggle('active'); }); </script> <!-- Collapsible toggle --> <script> document.addEventListener("DOMContentLoaded", function () { const toggles = document.querySelectorAll('.section-toggle'); toggles.forEach(toggle => { toggle.addEventListener('click', function () { const section = toggle.closest('.collapsible'); const body = section.querySelector('.wiki-body'); body.classList.toggle('collapsed'); }); }); }); </script>