From 58034bd58439a2da6bbd82c398ee7310819f4837 Mon Sep 17 00:00:00 2001 From: Ralf Handl Date: Fri, 8 Dec 2023 15:03:16 +0100 Subject: [PATCH] ODATA-1547 --- docs/odata-csdl-json/odata-csdl-json.html | 2 ++ docs/odata-csdl-json/odata-csdl-json.md | 12 ++++++++++++ docs/odata-csdl-xml/odata-csdl-xml.html | 2 ++ docs/odata-csdl-xml/odata-csdl-xml.md | 12 ++++++++++++ odata-csdl/7 Structural Property.md | 12 ++++++++++++ 5 files changed, 40 insertions(+) diff --git a/docs/odata-csdl-json/odata-csdl-json.html b/docs/odata-csdl-json/odata-csdl-json.html index 84a2c6351..451260b14 100644 --- a/docs/odata-csdl-json/odata-csdl-json.html +++ b/docs/odata-csdl-json/odata-csdl-json.html @@ -1217,6 +1217,7 @@

Property Object

7.1 Type

The property’s type MUST be a primitive type, complex type, or enumeration type in scope, or a collection of one of these types.

+

If the property is part of a chain of structural properties or containment navigation properties leading back to the property’s declaring type, then at least one property in this chain MUST be nullable or collection-valued, otherwise instances of the declaring type would have infinite depth.

A collection-valued property MAY be annotated with the Core.Ordered term, defined in OData-VocCore, to specify that it supports a stable ordering.

A collection-valued property MAY be annotated with the Core.PositionalInsert term, defined in OData-VocCore, to specify that it supports inserting items into a specific ordinal position.

@@ -1291,6 +1292,7 @@

Navi

8.1 Navigation Property Type

The navigation property’s type MUST be an entity type in scope, the abstract type Edm.EntityType, or a collection of one of these types.

+

If the property is part of a chain of structural properties or containment navigation properties leading back to the property’s declaring type, then at least one property in this chain MUST be nullable or collection-valued, otherwise instances of the declaring type would have infinite depth.

If the type is a collection, an arbitrary number of entities can be related. Otherwise there is at most one related entity.

The related entities MUST be of the specified entity type or one of its subtypes.

For a collection-valued containment navigation property the specified entity type MUST have a key defined.

diff --git a/docs/odata-csdl-json/odata-csdl-json.md b/docs/odata-csdl-json/odata-csdl-json.md index 4737ec656..e6bde47e7 100644 --- a/docs/odata-csdl-json/odata-csdl-json.md +++ b/docs/odata-csdl-json/odata-csdl-json.md @@ -1756,6 +1756,12 @@ The property's type MUST be a [primitive type](#PrimitiveTypes), [complex type](#ComplexType), or [enumeration type](#EnumerationType) in scope, or a collection of one of these types. +If the property is part of a chain of structural properties or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + A collection-valued property MAY be annotated with the [`Core.Ordered`](https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Core.V1.md#Ordered) term, defined in @@ -1922,6 +1928,12 @@ The navigation property's type MUST be an [entity type](#EntityType) in scope, the [abstract type](#BuiltInAbstractTypes) `Edm.EntityType`, or a collection of one of these types. +If the property is part of a chain of [structural properties ](#StructuralProperty) or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + If the type is a collection, an arbitrary number of entities can be related. Otherwise there is at most one related entity. diff --git a/docs/odata-csdl-xml/odata-csdl-xml.html b/docs/odata-csdl-xml/odata-csdl-xml.html index 1019fff83..a08a33160 100644 --- a/docs/odata-csdl-xml/odata-csdl-xml.html +++ b/docs/odata-csdl-xml/odata-csdl-xml.html @@ -1131,6 +1131,7 @@

7.1 Type

The property’s type MUST be a primitive type, complex type, or enumeration type in scope, or a collection of one of these types.

+

If the property is part of a chain of structural properties or containment navigation properties leading back to the property’s declaring type, then at least one property in this chain MUST be nullable or collection-valued, otherwise instances of the declaring type would have infinite depth.

A collection-valued property MAY be annotated with the Core.Ordered term, defined in OData-VocCore, to specify that it supports a stable ordering.

A collection-valued property MAY be annotated with the Core.PositionalInsert term, defined in OData-VocCore, to specify that it supports inserting items into a specific ordinal position.

@@ -1190,6 +1191,7 @@

8.1 Navigation Property Type

The navigation property’s type MUST be an entity type in scope, the abstract type Edm.EntityType, or a collection of one of these types.

+

If the property is part of a chain of structural properties or containment navigation properties leading back to the property’s declaring type, then at least one property in this chain MUST be nullable or collection-valued, otherwise instances of the declaring type would have infinite depth.

If the type is a collection, an arbitrary number of entities can be related. Otherwise there is at most one related entity.

The related entities MUST be of the specified entity type or one of its subtypes.

For a collection-valued containment navigation property the specified entity type MUST have a key defined.

diff --git a/docs/odata-csdl-xml/odata-csdl-xml.md b/docs/odata-csdl-xml/odata-csdl-xml.md index 9ac48e48a..94aca521c 100644 --- a/docs/odata-csdl-xml/odata-csdl-xml.md +++ b/docs/odata-csdl-xml/odata-csdl-xml.md @@ -1652,6 +1652,12 @@ The property's type MUST be a [primitive type](#PrimitiveTypes), [complex type](#ComplexType), or [enumeration type](#EnumerationType) in scope, or a collection of one of these types. +If the property is part of a chain of structural properties or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + A collection-valued property MAY be annotated with the [`Core.Ordered`](https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Core.V1.md#Ordered) term, defined in @@ -1806,6 +1812,12 @@ The navigation property's type MUST be an [entity type](#EntityType) in scope, the [abstract type](#BuiltInAbstractTypes) `Edm.EntityType`, or a collection of one of these types. +If the property is part of a chain of [structural properties ](#StructuralProperty) or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + If the type is a collection, an arbitrary number of entities can be related. Otherwise there is at most one related entity. diff --git a/odata-csdl/7 Structural Property.md b/odata-csdl/7 Structural Property.md index 63fc92b1b..108501d40 100644 --- a/odata-csdl/7 Structural Property.md +++ b/odata-csdl/7 Structural Property.md @@ -98,6 +98,12 @@ The property's type MUST be a [primitive type](#PrimitiveTypes), [complex type](#ComplexType), or [enumeration type](#EnumerationType) in scope, or a collection of one of these types. +If the property is part of a chain of structural properties or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + A collection-valued property MAY be annotated with the [`Core.Ordered`](https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Core.V1.md#Ordered) term, defined in @@ -353,6 +359,12 @@ The navigation property's type MUST be an [entity type](#EntityType) in scope, the [abstract type](#BuiltInAbstractTypes) `Edm.EntityType`, or a collection of one of these types. +If the property is part of a chain of [structural properties ](#StructuralProperty) or +[containment navigation properties](#ContainmentNavigationProperty) +leading back to the property's declaring type, then at least one property +in this chain MUST be nullable or collection-valued, +otherwise instances of the declaring type would have infinite depth. + If the type is a collection, an arbitrary number of entities can be related. Otherwise there is at most one related entity.