Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow cycles #19

Draft
wants to merge 147 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
5d66d4d
Adapt terminology to the multi-parent case
HeikoTheissen May 19, 2023
09e9929
Avoid the word tree
HeikoTheissen May 23, 2023
23d69c8
Root means zero parents
HeikoTheissen May 23, 2023
890b53b
Subhierarchies have different roots.
HeikoTheissen May 23, 2023
02179ca
Allow for orphans
HeikoTheissen May 23, 2023
b097c0a
Island orphans
HeikoTheissen May 23, 2023
26d9806
Merge remote-tracking branch 'trial/main' into multiple-parents
HeikoTheissen May 25, 2023
36323cc
Errors in JSON code
HeikoTheissen May 25, 2023
8ee987e
style change
HeikoTheissen May 25, 2023
59cbfd9
Variable clean-up
HeikoTheissen May 25, 2023
884e089
CSDL-XML-Link
HeikoTheissen May 25, 2023
3ec3059
Non-standard roots
HeikoTheissen May 25, 2023
125b493
Avoid overlong line
HeikoTheissen May 25, 2023
ec3f3e0
First three parts (#11)
ralfhandl May 25, 2023
802159d
Merge branch 'tc/2023-05-31' of [email protected]:standardapi/odata-spec…
HeikoTheissen May 25, 2023
51d8798
Hierarchy maintenance (#7)
HeikoTheissen May 26, 2023
25ce482
Merge branch 'multiple-parents' of [email protected]:standardapi/odata-s…
HeikoTheissen May 26, 2023
9acc7b3
fine-tuning
HeikoTheissen May 26, 2023
b4ae6d9
fine-tuning
HeikoTheissen May 26, 2023
b6c2eba
extended example 109
HeikoTheissen May 26, 2023
e193e06
corrected example 109
HeikoTheissen May 26, 2023
d771974
rephrased
HeikoTheissen May 26, 2023
416ca06
replace @odata.type with @type etc.
HeikoTheissen May 26, 2023
a60efb9
indentation
HeikoTheissen May 26, 2023
6de8c2e
typos
HeikoTheissen May 26, 2023
c42f5ed
TC 2023-05-31 - additions Ralf (#12)
ralfhandl May 26, 2023
b810924
Merge branch 'tc/2023-05-31' of [email protected]:standardapi/odata-spec…
HeikoTheissen May 26, 2023
1b5da52
References in variable list
HeikoTheissen May 26, 2023
e3e8ebb
Sharpen ancestors definition
HeikoTheissen May 26, 2023
b68f856
Merge remote-tracking branch 'trial/tc/2023-05-31' into multiple-parents
HeikoTheissen May 26, 2023
1aabf22
@odata.id -> @id
HeikoTheissen May 26, 2023
79cf020
indentation
HeikoTheissen May 26, 2023
a2a1331
indentation
HeikoTheissen May 26, 2023
6f87a7f
@ralfhandl's suggestions
HeikoTheissen May 31, 2023
91f5c68
RH 2023-05-31 part 3 (#13)
ralfhandl May 31, 2023
95f4422
For each occurrence
HeikoTheissen May 31, 2023
0c42441
Merge remote-tracking branch 'trial/tc/2023-05-31' into multiple-parents
HeikoTheissen May 31, 2023
5575a69
Explicitly mention other values of M
HeikoTheissen May 31, 2023
bcc7d8e
example for non-standard root
HeikoTheissen May 31, 2023
5f193b0
Remove Phobos South Pole
HeikoTheissen May 31, 2023
657210b
Preserving -> subset, precedence -> order
HeikoTheissen May 31, 2023
50ba8ae
Merge remote-tracking branch 'trial/tc/2023-05-31' into multiple-parents
HeikoTheissen May 31, 2023
fa6a5c7
Merge remote-tracking branch 'trial/main' into multiple-parents
HeikoTheissen May 31, 2023
ba37eff
post-merge
HeikoTheissen May 31, 2023
96e7cdf
typo
HeikoTheissen Jun 1, 2023
eeb6315
@GEricson's suggestion
HeikoTheissen Jun 1, 2023
194c896
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 1, 2023
ff9cbd4
fine-tuning
HeikoTheissen Jun 1, 2023
3c43afd
AvailableOnAggregates
HeikoTheissen Jun 1, 2023
34b0fc2
More detailed revision history
HeikoTheissen Jun 1, 2023
30b0245
Include branch in title
HeikoTheissen Jun 1, 2023
c326f31
Remove redundant statement in `concat`
HeikoTheissen Jun 1, 2023
d793461
@sthagen's suggestion
HeikoTheissen Jun 1, 2023
1109928
fine-tuning
HeikoTheissen Jun 1, 2023
5ca0800
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 1, 2023
afc6b51
@GeraldKrause's suggestions
HeikoTheissen Jun 1, 2023
ee685b3
Merge remote-tracking branch 'origin/main' into multiple-parents
HeikoTheissen Jun 1, 2023
30876fd
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 1, 2023
5c93574
post-merge
HeikoTheissen Jun 1, 2023
fce3cc6
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 2, 2023
972d730
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 2, 2023
6f7664c
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 2, 2023
ab570b1
Merge branch 'main' of [email protected]:oasis-tcs/odata-specs.git into
HeikoTheissen Jun 2, 2023
a0c741d
Add reference for $filter=AbsentProperty eq null
HeikoTheissen Jun 2, 2023
716c74c
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 2, 2023
efd545c
Allow cycles
HeikoTheissen Jun 2, 2023
34110aa
@GeraldKrause's suggestions
HeikoTheissen Jun 3, 2023
6ea1764
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 3, 2023
aa82a52
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 3, 2023
9ee946a
typos
HeikoTheissen Jun 3, 2023
9548d3a
Distance
HeikoTheissen Jun 3, 2023
94fb9fb
@GeraldKrause's suggestions
HeikoTheissen Jun 5, 2023
bc67562
Fine-tuning
HeikoTheissen Jun 5, 2023
f3436aa
typo
HeikoTheissen Jun 5, 2023
8bf6f07
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 5, 2023
e5f4f46
@GeraldKrause - MON
HeikoTheissen Jun 6, 2023
927a7f4
Avoid page break in example data
HeikoTheissen Jun 6, 2023
e767d61
Trigger a PDF generation via GitHub Actions
HeikoTheissen Jun 6, 2023
87fad4b
auto-refreshed
HeikoTheissen Jun 6, 2023
e665708
re-phrasing
HeikoTheissen Jun 6, 2023
377d7cf
typo
HeikoTheissen Jun 6, 2023
e8dd8af
Examples 64 and 65
HeikoTheissen Jun 6, 2023
ae77df0
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 6, 2023
adbcf4d
Orphan example
HeikoTheissen Jun 6, 2023
90a1683
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 7, 2023
35d7160
@ralfhandl's suggestions
HeikoTheissen Jun 7, 2023
0b20c59
Example 64 rephrased
HeikoTheissen Jun 7, 2023
1709099
fine-tuning
HeikoTheissen Jun 7, 2023
d5b37f3
Merge remote-tracking branch 'origin/main' into tc/2023-06-07
HeikoTheissen Jun 7, 2023
8907fc1
Improve test
HeikoTheissen Jun 7, 2023
92c6ef9
Merge remote-tracking branch 'origin/tc/2023-06-07' into
HeikoTheissen Jun 7, 2023
ed8d26e
Root node <> start node
HeikoTheissen Jun 7, 2023
1664403
Rephrased
HeikoTheissen Jun 7, 2023
37211e1
Merge branch 'tc/2023-06-14' into multiple-parents
HeikoTheissen Jun 7, 2023
803574c
TC 2023-06-14
HeikoTheissen Jun 7, 2023
7e64005
Merge branch 'tc/2023-06-14' into multiple-parents
HeikoTheissen Jun 7, 2023
d42c8f7
Merge branch 'tc/2023-06-14' into multiple-parents
HeikoTheissen Jun 7, 2023
b278ada
Post-merge
HeikoTheissen Jun 7, 2023
db36e2c
No page-break after heading
HeikoTheissen Jun 12, 2023
a6d9035
Recursive hierarchy = parent + start nodes
HeikoTheissen Jun 12, 2023
bc60aeb
UpNode, actual and visible totals
HeikoTheissen Jun 13, 2023
7364668
rephrasing
HeikoTheissen Jun 13, 2023
15329e5
Move actual vs. visual example
HeikoTheissen Jun 14, 2023
59feb92
UpNode -> UpPath
HeikoTheissen Jun 14, 2023
3fb52d4
rephrasing
HeikoTheissen Jun 14, 2023
85c61b5
@ralfhandl's suggestions
HeikoTheissen Jun 14, 2023
6a5e2b5
descendants/ancestors with maximum distance
HeikoTheissen Jun 15, 2023
96d4a2b
Rephrase lib/README.md
HeikoTheissen Jun 15, 2023
c34e9d4
rephrasing
HeikoTheissen Jun 15, 2023
954caf5
Avoid // in web server
HeikoTheissen Jun 15, 2023
807ddb4
Cycle without UpNode is possible
HeikoTheissen Jun 15, 2023
beae7ad
Prohibit term casts in aggregatable expressions
HeikoTheissen Jun 15, 2023
6758209
SHOULD -> MAY
HeikoTheissen Jun 15, 2023
86e83fd
Remove redundancy
HeikoTheissen Jun 16, 2023
4eca918
Remark about start nodes of H'
HeikoTheissen Jun 16, 2023
318b8bd
Hierarchical parameter p
HeikoTheissen Jun 16, 2023
f7cad3a
Merge remote-tracking branch 'origin/tc/2023-06-14' into
HeikoTheissen Jun 16, 2023
ab004bd
missing Nullable
HeikoTheissen Jun 16, 2023
d6bb2f7
Discussion with SADL
HeikoTheissen Jun 19, 2023
f717376
POST multiple parents
HeikoTheissen Jun 19, 2023
44d247f
Avoid referential constraint in example 119
HeikoTheissen Jun 19, 2023
774307d
Rephrased
HeikoTheissen Jun 19, 2023
1b3e754
Merge remote-tracking branch 'origin/main' into multiple-parents
HeikoTheissen Jun 19, 2023
383a22d
PDF generation
invalid-email-address Jun 19, 2023
b502c4a
Example 119
HeikoTheissen Jun 20, 2023
bbb0844
Merge remote-tracking branch 'origin/main' into tc/2023-06-14
HeikoTheissen Jun 20, 2023
be61d82
Merge remote-tracking branch 'origin/tc/2023-06-14' into multiple-par…
HeikoTheissen Jun 20, 2023
040baa8
Merge branch 'multiple-parents' of [email protected]:oasis-tcs/odata-spe…
HeikoTheissen Jun 20, 2023
c1d3a62
Definition of root node
HeikoTheissen Jun 20, 2023
4aee568
Multiple parents with weights
HeikoTheissen Jun 21, 2023
e1c2873
Make root
HeikoTheissen Jun 21, 2023
6ae33b8
last-minute changes
HeikoTheissen Jun 21, 2023
3af5f99
Merge remote-tracking branch 'origin/main' into multiple-parents
HeikoTheissen Jun 22, 2023
0eab13d
Simplify `rolluprecursive` (#18)
HeikoTheissen Jun 23, 2023
ad05bc3
As discussed with @GeraldKrause
HeikoTheissen Jun 23, 2023
338063b
Define orphans only in connection with traverse (general case)
HeikoTheissen Jun 26, 2023
d1d73a9
@GeraldKrause's suggestions
HeikoTheissen Jun 26, 2023
70c068f
rephrased node identifier
HeikoTheissen Jun 26, 2023
159815a
rephrased again
HeikoTheissen Jun 26, 2023
16f9de2
@ThomasChadzelek's correction
HeikoTheissen Jun 26, 2023
eb1ddda
Remove redundancy from recursive hierarchy definition
HeikoTheissen Jun 27, 2023
9210ad6
Remove informative reference
HeikoTheissen Jun 27, 2023
bb5b3ee
Node identifier and parents for non-nodes are arbitrary
HeikoTheissen Jun 27, 2023
305c6f8
last-minute changes
HeikoTheissen Jun 28, 2023
17c2446
As discussed with @Hubert-Heijkers
HeikoTheissen Jun 28, 2023
c8a8fe0
Disallow cycles
HeikoTheissen Jun 28, 2023
e00013b
Re-allow cycles
HeikoTheissen Jun 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 41 additions & 35 deletions docs/odata-data-aggregation-ext/odata-data-aggregation-ext.html
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,14 @@ <h4 id="additional-artifacts"><a name="AdditionalArtifacts">Additional
<li>OData Aggregation ABNF Construction Rules Version 4.0: <a
href="https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-abnf.txt">https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-abnf.txt</a></li>
<li>OData Aggregation ABNF Test Cases: <a
href="https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-testcases.xml">https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-testcases.xml</a></li>
<li>OData Aggregation Vocabulary: <a
href="https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-testcases.yaml">https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/abnf/odata-aggregation-testcases.yaml</a></li>
<li>OData Aggregation Vocabulary:
<ul>
<li><a
href="https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/vocabularies/Org.OData.Aggregation.V1.json">https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/vocabularies/Org.OData.Aggregation.V1.json</a></li>
<li><a
href="https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/vocabularies/Org.OData.Aggregation.V1.xml">https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/csd04/vocabularies/Org.OData.Aggregation.V1.xml</a></li>
</ul></li>
</ul>
<h4 id="related-work"><a name="RelatedWork">Related work:</a></h4>
<p>This specification is related to:</p>
Expand Down Expand Up @@ -481,12 +486,12 @@ <h2 id="11-glossary"><a name="Glossary" href="#Glossary">1.1
Type</em></a> – a primitive type other than <code>Edm.Stream</code> or
subtypes of <code>Edm.Geography</code> or <code>Edm.Geometry</code></li>
<li><a name="DataAggregationPath"><em>Data Aggregation Path</em></a> – a
path that consists of one or more segments separated by a forward slash.
Segments are names of declared or dynamic structural or navigation
properties, or type-cast segments consisting of the (optionally
qualified) name of a structured type that is derived from the type
identified by the preceding path segment to reach properties declared by
the derived type.</li>
path that consists of one or more segments joined together by forward
slashes (<code>/</code>). Segments are names of declared or dynamic
structural or navigation properties, or type-cast segments consisting of
the (optionally qualified) name of a structured type that is derived
from the type identified by the preceding path segment to reach
properties declared by the derived type.</li>
<li><a name="Expression"><em>Expression</em></a> – derived from the
<code>commonExpr</code> rule (see <a
href="#ODataABNF">OData-ABNF</a>)</li>
Expand Down Expand Up @@ -567,12 +572,12 @@ <h2 id="11-glossary"><a name="Glossary" href="#Glossary">1.1
<hr />
<h1 id="2-overview"><a name="Overview" href="#Overview">2
Overview</a></h1>
<p>Open Data (OData) services expose a data model that describes the
schema of the service in terms of the Entity Data Model (EDM, see <a
href="#ODataCSDL">OData-CSDL</a>) and then allows for querying data in
terms of this model. The responses returned by an OData service are
based on that data model and retain the relationships between the
entities in the model.</p>
<p>Open Data Protocol (OData) services expose a data model that
describes the schema of the service in terms of the Entity Data Model
(EDM, see <a href="#ODataCSDL">OData-CSDL</a>) and then allows for
querying data in terms of this model. The responses returned by an OData
service are based on that data model and retain the relationships
between the entities in the model.</p>
<p>Extending the OData query features with simple aggregation
capabilities avoids cluttering OData services with an exponential number
of explicitly modeled "aggregation level entities" or else restricting
Expand Down Expand Up @@ -1091,18 +1096,18 @@ <h1 id="2-overview"><a name="Overview" href="#Overview">2
</g>
</svg>

<p>The Amount property in the Sale entity type is an <a
href="#AggregationCapabilities">aggregatable property</a>, and the
properties of the related entity types are groupable. These can be
<p>The <code>Amount</code> property in the <code>Sale</code> entity type
is an <a href="#AggregationCapabilities">aggregatable property</a>, and
the properties of the related entity types are groupable. These can be
arranged in four hierarchies:</p>
<ul>
<li>Product hierarchy based on <a
href="#AggregationCapabilities">groupable</a> properties of the Category
and Product entity types</li>
<li>Customer <a href="#LeveledHierarchy">hierarchy</a> based on Country
and Customer</li>
<li>Time <a href="#LeveledHierarchy">hierarchy</a> based on Year, Month
and Date</li>
href="#AggregationCapabilities">groupable</a> properties of the
<code>Category</code> and <code>Product</code> entity types</li>
<li>Customer <a href="#LeveledHierarchy">hierarchy</a> based on
<code>Country</code> and <code>Customer</code></li>
<li>Time <a href="#LeveledHierarchy">hierarchy</a> based on
<code>Year</code>, <code>Month</code>, and <code>Date</code></li>
<li>SalesOrganization <a href="#RecursiveHierarchy">hierarchy</a> based
on the recursive association to itself</li>
</ul>
Expand All @@ -1111,8 +1116,8 @@ <h1 id="2-overview"><a name="Overview" href="#Overview">2
and three "dimensions". This document will avoid such terms, as they are
heavily overloaded.</p>
</div>
<p>Query extensions and descriptive annotations can both be applied to
normalized as well as partly or fully denormalized schemas.</p>
<p>Query extensions and descriptive annotations can be applied to
normalized schemas as well as partly or fully denormalized schemas.</p>
<div class="example">
<p>Example 3: The following diagram depicts a denormalized schema for
the simple model.</p>
Expand Down Expand Up @@ -1764,7 +1769,7 @@ <h2 id="22-example-data"><a name="ExampleData" href="#ExampleData">2.2
transformation. The output set of the last set transformation in the
transformation sequence invoked by the system query option
<code>$apply</code> is the result of <code>$apply</code>. This is
consistent with the use of service-defined bindable and composable
consistent with the use of service-defined bound and composable
functions in path segments.</p>
<p>The system query option <code>$apply</code> MUST NOT be used if the
resource path addresses a single instance.</p>
Expand Down Expand Up @@ -1814,7 +1819,7 @@ <h2 id="22-example-data"><a name="ExampleData" href="#ExampleData">2.2
the plain-text number of items in the result of <code>$apply</code>.
This is similar to the combination of <code>/$count</code> and
<code>$filter</code>.</p>
<p>During serialization of the result of <code>$apply</code>, declared
<p>During serialization of the result of <code>$apply</code> declared
properties and dynamic properties are represented as defined by the
response format. Other properties have been aggregated away and are not
represented in the response. The entities returned in the request
Expand All @@ -1823,8 +1828,8 @@ <h2 id="22-example-data"><a name="ExampleData" href="#ExampleData">2.2
<h2
id="31-fundamentals-of-input-and-output-sets"><a name="FundamentalsofInputandOutputSets" href="#FundamentalsofInputandOutputSets">3.1
Fundamentals of Input and Output Sets</a></h2>
<p>(The definitions of italicized terms made in this section are used
throughout this text, always with a hyperlink to this section.)</p>
<p>The definitions of italicized terms made in this section are used
throughout this text, always with a hyperlink to this section.</p>
<h3
id="311-type-structure-and-context-url"><a name="TypeStructureandContextURL" href="#TypeStructureandContextURL">3.1.1
Type, Structure and Context URL</a></h3>
Expand Down Expand Up @@ -1861,11 +1866,12 @@ <h2 id="22-example-data"><a name="ExampleData" href="#ExampleData">2.2
properties that occurred in the input set.</li>
<li>Instances in an output set can have dynamic properties that did not
occur in the input set. The name for such a dynamic property is called
an alias, it is a SimpleIdentifier (see <a href="#ODataCSDL">OData-CSDL,
section 17.2</a>). Aliases MUST differ from names of declared properties
in the input type, from names of properties in the first input set, and
from names of properties in the current input set. Aliases in one
collection MUST also differ from each other.</li>
an alias, it is a simple identifier (see <a
href="#ODataCSDL">OData-CSDL, section 17.2</a>). Aliases MUST differ
from names of declared properties in the input type, from names of
properties in the first input set, and from names of properties in the
current input set. Aliases in one collection MUST also differ from each
other.</li>
</ul>
<p>Here is an overview of the structural changes made by different
transformations:</p>
Expand Down Expand Up @@ -2058,7 +2064,7 @@ <h2 id="22-example-data"><a name="ExampleData" href="#ExampleData">2.2
<h3
id="313-evaluation-of-data-aggregation-paths"><a name="EvaluationofDataAggregationPaths" href="#EvaluationofDataAggregationPaths">3.1.3
Evaluation of Data Aggregation Paths</a></h3>
<p>This document specifies when a <a href="#DataAggregationPath">data
<p>This document specifies how a <a href="#DataAggregationPath">data
aggregation path</a> that occurs in a request is evaluated by the
service. If such an evaluation fails, the service MUST reject the
request.</p>
Expand Down
Loading