Skip to content

Commit 462c953

Browse files
committed
odata-dd-2 resources -> standards
1 parent 712647a commit 462c953

2 files changed

Lines changed: 244 additions & 0 deletions

File tree

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
---
2+
parser: v2
3+
author_name: DJ Adams
4+
author_profile: https://github.com/qmacro
5+
auto_validation: false
6+
primary_tag: software-product>sap-business-technology-platform
7+
tags: [ software-product>sap-business-technology-platform, topic>cloud, programming-tool>odata, tutorial>beginner ]
8+
time: 20
9+
---
10+
11+
# Get to know the OData standards resources on the Web
12+
13+
<!-- description --> Get acquainted with the OData standards and how to navigate them.
14+
15+
## You will learn
16+
17+
- What the important Web based resources are for OData
18+
- How to make sense of them
19+
20+
## Intro
21+
22+
There are myriad resources on the Web about OData. After all, it's a standard that's been around since 2007. There are some key resources that are important to know about, and in this tutorial, you'll find out about them and become more comfortable navigating them.
23+
24+
---
25+
26+
### Understand OASIS and its role
27+
28+
OASIS is one of the world's foremost non-profit standards bodies, and is a destination for the discussion, management and standardization of open protocols, such as OData. Within OASIS there are various programmes, one of which is the set of [Projects and Technical Committees](https://www.oasis-open.org/projects-committees/).
29+
30+
Within the context of a Technical Committee, specifications are developed in the open, following a lightweight process of review, feedback, approval and publication. There is a Technical Committee in OASIS for OData - the [OASIS Open Data Protocol (OData) TC](https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=e7cac2a9-2d18-4640-b94d-018dc7d3f0e2).
31+
32+
### Take a first look at the technical work produced by the OData TC
33+
34+
The OData TC page lists various work products in the section titled "Technical Work Produced by the Committee" on [the main OData TC page](https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=e7cac2a9-2d18-4640-b94d-018dc7d3f0e2).
35+
36+
That list can be somewhat overwhelming at first, which is partly due to:
37+
38+
- OData's considerable core scope
39+
- use of other adjacent standards
40+
- a dedicated attention to detail
41+
- the protocol's inherent extensibility
42+
43+
It is also due to the review, feedback, approval and publication process. Although relatively lightweight, this process does mean that there are various stages that documents can be in, defined briefly in the process's [Specification Lifecycle](https://docs.oasis-open.org/templates/TCHandbook/content/tcprocess/standardsapprovalprocess/specificationlifecycle.htm). Such document stages are in this [OASIS Documents](https://github.com/qmacro/odata-specs/blob/master/overview.md) resource which attempts to show the stages and progress of key OData standards documents over time.
44+
45+
In that resource one can see the various stages represented, such as "cs" for Committee Specification, "cos" for Candidate OASIS Standard, "os" for OASIS Standard, and so on, stage identifiers that form part of the work product document's official name, such as:
46+
47+
<https://docs.oasis-open.org/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html>
48+
49+
Looking at this document as a typical example, what can we discern? Well:
50+
51+
- it is in an HTML format
52+
- it represents part 1 of the OData standard
53+
- that part being about the protocol (as opposed to the URL conventions)
54+
- the standard is at version 4.01 (the latest)
55+
- the specification lifecycle stage is "os" i.e. the final one (OASIS Standard)
56+
57+
We'll come back to this particular document later on in this tutorial.
58+
59+
### Get an overview of the OData standards documents
60+
61+
Going back to the list of work products, let's enumerate them and think briefly about what they are. Doing this is important if we want to be able to make sense of them, to navigate between and within them, and ultimately to find whatever we're looking for.
62+
63+
Open up the [OData TC page](https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=e7cac2a9-2d18-4640-b94d-018dc7d3f0e2) in a window separate to this one and jump to the [Technical Work Produced by the Committee](https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=e7cac2a9-2d18-4640-b94d-018dc7d3f0e2#technical) section, ready to scroll through it as you work through this section.
64+
65+
#### The main standard
66+
67+
There's the main standard itself, the "OData Version 4.01 OASIS Standard". This comprises three distinct parts:
68+
69+
- OData Version 4.01 Part 1: Protocol
70+
- OData Version 4.01 Part 2: URL Conventions
71+
- ABNF components: OData ABNF Construction Rules Version 4.01 and OData ABNF Test Cases Version 4.01
72+
73+
The [Augmented Backus-Naur form](https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form) (ABNF) resource is the formal grammar of the OData protocol as described, in a form (ABNF) which is common for such protocol format descriptions. There's the grammar itself in one file, and a series of test cases for the grammar in another. It's rare that you'll need to consult this.
74+
75+
The other two documents that form the main standard, Parts 1 and 2, are where most things in this OData mission, and most things that you'll encounter in normal circumstances when working with OData, are described.
76+
77+
Notice that each of these documents is available in different formats:
78+
79+
- an authorititave source format
80+
- other formats (downstream from the source format)
81+
82+
In this case, the authoritative source format for parts 1 and 2 is `.docx`, but in other OData standards documents cases, it is sometimes `.md`. Practically, one can use the `.html` format, as `.docx` is not compatible with the open Web.
83+
84+
#### CSDL as a supporting standard
85+
86+
Alongside the main standard there are supporting standards, the first one of which is expressed in a pair of documents:
87+
88+
- OData Common Schema Definition Language (CSDL) JSON Representation Version 4.01 OASIS Standard
89+
- OData Common Schema Definition Language (CSDL) XML Representation Version 4.01 OASIS Standard
90+
91+
These describe two representations of Common Schema Definition Language (CSDL), and we might be most familiar with the XML representation of CSDL, in that it's the EDMX in OData service metadata documents, such as [the one for the Northwind service we looked at in the previous tutorial](https://services.odata.org/V4/Northwind/Northwind.svc/$metadata). Each of these documents is also available in multiple formats, again, the `.docx` format being authoritative.
92+
93+
#### JSON format as a supporting standard
94+
95+
Next in the list of supporting standards is:
96+
97+
- OData JSON Format Version 4.01 OASIS Standard
98+
99+
This is the formal description of the JSON format used to represent resources such as entities and entity sets transmitted and received in the context of OData operations. In other words, it describes everything we need to know (and more) about OData JSON payloads. In earlier versions of the OData standard, a version of the XML-based Atom Syndication Format was used, but this has been largely superseded by this JSON format.
100+
101+
#### Extension standards
102+
103+
The OData standard is extensible, and in that context, the next two standards documents listed in the work products section are in this category:
104+
105+
- OData Extension for Data Aggregation Version 4.0 Committee Specification 03
106+
- OData Extension for Temporal Data Version 4.0 Committee Specification 01
107+
108+
Note that in addition to the multiple formats available for each extension standard, there are supplemental parts; as for the main OData standard, there's a pair of ABNF components (grammar construction rules, and test cases), and there's also a vocabulary, expressed in EDMX (and other formats) and containing annotation definitions relating to the given extension, definitions to be used in OData service metadata documents.
109+
110+
#### Other supporting standards
111+
112+
There is one more standard listed in the work products, that describes a method for retrying unsafe requests without incurring unintended side-effects. This is:
113+
114+
- Repeatable Requests Version 1.0 Committee Specification 01
115+
116+
By now, we know the drill. This is a standards document that is available in various formats, and is at a particular specification lifecycle stage.
117+
118+
#### Lifecycle stage identifiers
119+
120+
In each case, the URLs pointing to the standards resources contain a path info section that indicates the stage that resource is in. The stage also appears in the final "filename" section. Let's have a look at the relative path info sections of the URLs representing the authoritative sources for each of the standards we've seen.
121+
122+
First, there are the main standards:
123+
124+
- `/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.docx`
125+
- `/odata/odata/v4.01/os/part2-url-conventions/odata-v4.01-os-part2-url-conventions.docx`
126+
- `/odata/odata/v4.01/os/abnf/`
127+
- `/odata/odata-csdl-json/v4.01/os/odata-csdl-json-v4.01-os.docx`
128+
- `/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.docx`
129+
- `/odata/odata-json-format/v4.01/os/odata-json-format-v4.01-os.docx`
130+
131+
These are all "OASIS Standard" documents, each with the "os" stage identifier.
132+
133+
Here are the rest of the standards:
134+
135+
- `/odata/odata-data-aggregation-ext/v4.0/cs03/odata-data-aggregation-ext-v4.0-cs03.md`
136+
- `/odata/odata-temporal-ext/v4.0/cs01/odata-temporal-ext-v4.0-cs01.docx`
137+
- `/odata/repeatable-requests/v1.0/cs01/repeatable-requests-v1.0-cs01.docx`
138+
139+
All these are at various iteration levels of the "Committee Specification" stage ("cs"), with the extension for data aggregation being at level 03, and the other two being at level 01.
140+
141+
### Explore the document URL chains
142+
143+
We now know about the different technical work artifacts and how they are manifested, with the document URLs, each of which:
144+
145+
- describes a specific part of the overall OData standard
146+
- is tied to a particular specification lifecycle stage
147+
- is in a format indicated in the URL
148+
149+
Now, as a final step in learning about the OData standards resources, we should make sure we understand the myriad specification URLs at the top of any given document.
150+
151+
By way of an example, visit the (HTML version of the) [OData Version 4.01 Part 1: Protocol](https://docs.oasis-open.org/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html). The first section looks like this:
152+
153+
![odata-protocol-doc-first-section](odata-protocol-doc-first-section.png)
154+
155+
There are a lot of URLs here! But the pattern is straightforward, and following it is easy given what we now know. We should start by noticing the three groups:
156+
157+
- This stage
158+
- Previous stage
159+
- Latest stage
160+
161+
The URLs are there to allow the navigation forwards and backwards through time, through the different specification lifecycle stages the given document has been through.
162+
163+
> We should ignore the `.docx` and `.pdf` formats for the purposes of this exploration, and focus only on the `.html` format, for easy navigation. Note that the screenshot shows these HTML links with the standard "visited" color purple (as opposed to the standard blue of "unvisited" links), indicating that these are indeed the key links that have been navigated, while this section of the tutorial was being written.
164+
165+
The URLs for the "Latest stage" links do not contain any specification lifecycle indicators, and so can - and should - be used to generically and canonically refer to the latest stage version of the document in question.
166+
167+
The URLs for the links in the "This stage" and "Previous stage" sections do contain specification lifecycle indicators, and as such, are pointers to specific stage versions.
168+
169+
Thus requesting the resource at either of these two URLs ... will result in the same resource content:
170+
171+
- [/odata/odata/v4.01/odata-v4.01-part1-protocol.html](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html)
172+
- [/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html](https://docs.oasis-open.org/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html)
173+
174+
Following the "Previous stage" HTML link:
175+
176+
- [/odata/odata/v4.01/cs02/part1-protocol/odata-v4.01-cs02-part1-protocol.html](https://docs.oasis-open.org/odata/odata/v4.01/cs02/part1-protocol/odata-v4.01-cs02-part1-protocol.html)
177+
178+
leads to an earlier specification lifecycle stage (Committee Specification 02), which, in turn, via its own "Previous stage" link, leads to the next earliest, which is at the specification lifecycle stage with the indicator "csprd06" - Committee Specification / Public Review Draft 06:
179+
180+
- [/odata/odata/v4.01/csprd06/part1-protocol/odata-v4.01-csprd06-part1-protocol.html](https://docs.oasis-open.org/odata/odata/v4.01/csprd06/part1-protocol/odata-v4.01-csprd06-part1-protocol.html)
181+
182+
And so on, back in time.
183+
184+
We can visualize the "This", "Previous" and "Latest" link sets for the "OData Version 4.01 Part 1: Protocol" document like this:
185+
186+
```text
187+
+--------------+ +--------------------------------------+
188+
| | | |
189+
| Latest |--->| OASIS Standard |
190+
| stage | | |
191+
| | | |
192+
+--------------+ +--------------------------------------+
193+
|
194+
previous
195+
V
196+
+--------------------------------------+
197+
| |
198+
| Committee Specification 02 |
199+
| |
200+
| |
201+
+--------------------------------------+
202+
|
203+
previous
204+
V
205+
+--------------------------------------+
206+
| |
207+
| Committee Specification Draft 06 |
208+
| / Public Review Draft 06 |
209+
| |
210+
+--------------------------------------+
211+
|
212+
previous
213+
V
214+
+--------------------------------------+
215+
| |
216+
| Committee Specification Draft 05 |
217+
| / Public Review Draft 05 |
218+
| |
219+
+--------------------------------------+
220+
|
221+
previous
222+
V
223+
+--------------------------------------+
224+
| |
225+
| Committee Specification 01 |
226+
| |
227+
| |
228+
+--------------------------------------+
229+
|
230+
previous
231+
V
232+
+--------------------------------------+
233+
| |
234+
| ... |
235+
| |
236+
| |
237+
+--------------------------------------+
238+
```
239+
240+
### Further info
241+
242+
- [Guidelines for Visualizing Links](https://www.nngroup.com/articles/guidelines-for-visualizing-links/)
243+
- [OASIS document tree](https://github.com/qmacro/odata-specs/blob/master/overview.md)
244+
- [OData Vocabularies](https://github.com/oasis-tcs/odata-vocabularies)
196 KB
Loading

0 commit comments

Comments
 (0)