I am thrilled to announce that OData V4.0 has officially been approved as a new OASIS standard.
OData V4 is the result of a year and a half of hard work from the OASIS Technical Committee, addressing over 500 issues/requests through two committee specifications and three public reviews. Below are a few of the key new features added to address common user requests. A more complete set of changes from OData V3.0 can be found here.
- Entity Data Model Enhancements. OData defines a consumer-oriented Entity Data Model that helps general purpose clients understand how to interact with an OData service. OData V4 enhances the entity model, adding support for containment, singletons, enums and type definitions. Date/Time data types have been reworked to include separate Date, TimeOfDay, Duration, and DateTimeOffset data types. Complex types now support inheritance and navigation properties. Relationships, a key part of the entity model, are significantly simplified.
- Improved Support for Distributed Services. In a web of data, not all data comes from a single service. OData V4 breaks down silos between endpoints by supporting distributed services. Services can now reference models, vocabularies, and data in other services.
- Dynamic Schema. While metadata helps generic clients anticipate how to interact with a service, not all of the world fits into a pre-defined schema. OData V4 services are allowed greater flexibility in exposing dynamic properties, relationships, and operations.
- Improved Queryability. In today's device-centric world, bringing back the right subset of data is key to reducing round-trips, payload, and footprint. OData V4 includes syntax for applying filters, sorts, and selects against expanded properties, allowing clients to push processing to the service and more precisely specify the interesting set of data to be retrieved. Full text search functionality, recursive queries, and the use of user defined functions in predicates all help clients control the data returned from the service.
- Delta Support. Delta support allows clients to query services and receive just the set of deltas –changes—from a previous state. Designed for scalability, this hypermedia-driven model gives the service ultimate control over how changes are identified while providing a simple, well-defined model to the client.
- Annotation/Vocabulary Improvements. Annotations allow services to mark up both data and metadata with additional semantics. Annotation terms can be defined and shared as common semantic vocabularies across services, organizations, and industries. OData V4 considerably simplifies annotations while enhancing their expressivity and applicability.
- Asynchronous Support. Sometimes things take a while to process. Building on common HTTP headers and conventions, OData V4 defines an asynchronous pattern for long-running requests.
The OASIS Standard includes the OData V4.0 Protocol and OData V4.0 JSON Format. The OData V4.0 ATOM format is currently in Committee Specification stage until it receives at least two more official Statements of Use necessary to progress it to the final stage of OASIS standardization.
This important milestone does not conclude the work of the Technical Committee. The committee is already working on two extensions for OData.
- Aggregation Support. In a world where analytics plays an increasingly important role, we want to leverage OData's strengths in modeling, server-side processing, and simplified client payloads to support aggregation and analytic scenarios. The OData Extension for Data Aggregation Version 4.0, already in Committee Specification, defines annotations and compatible extensions to the OData query language for modeling and querying aggregate data.
- Temporal Support. The OData Technical Committee is working on an early draft of extensions for Temporal support, allowing (for example) clients to query data as-of a certain point in time or time range.
This is an incredibly exciting time for Open Data, as products and libraries are quickly rev'ing to support OData v4.0. Support for building OData V4 compliant clients and servers in Java, as well as consuming OData V4 from JavaScript clients, is already underway in the open source Apache Olingo incubator project. Microsoft has recently released versions of core OData V4 libraries for .NET, an OData Client for consuming OData V4 services, and support for building OData V4 services using a pre-release library in WebAPI.
Stay tuned for more information about upcoming support for the new OASIS OData v4.0 Standard!
Michael Pizzo
Principal Software Architect, Microsoft
Editor, OData Specification