-
Type:
New Feature
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: V4.0_CSD03
-
Fix Version/s: V4.0_CSD04
-
Component/s: Data Aggregation, Vocabularies
-
Labels:None
-
Environment:
Proposed
-
Proposal:
-
Resolution:
NavigationPropertyBindings are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used.
An easier alternative would be to use external targeting with a path that ends in a containment navigation property:
<Annotations Target="namespace.ContainerName/me/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations>
Field | Original Value | New Value |
---|---|---|
Priority | Major [ 3 ] | Minor [ 4 ] |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding that can be used with a Path ending in a containment navigation property and which do not specify a [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget], but serve as target for annotations. This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <NavigationPropertyBindingVariant Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </NavigationPropertyBindingVariant> </Singleton> {code} Instead of introducing a new element {{NavigationPropertyBindingVariant}}, the existing {{NavigationPropertyBinding}} could be extended: The {{Target}} attribute is no longer mandatory, and if it is absent * the {{Path}} must end in a containment navigation property * the {{NavigationPropertyBinding}} can be the target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="NavigationPropertyBinding"}}). These annotations then apply to the implicit entity set defined by the containment navigation property. |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding that can be used with a Path ending in a containment navigation property and which do not specify a [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget], but serve as target for annotations. This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <NavigationPropertyBindingVariant Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </NavigationPropertyBindingVariant> </Singleton> {code} Instead of introducing a new element {{NavigationPropertyBindingVariant}} (working title), the existing {{NavigationPropertyBinding}} could be extended: The {{Target}} attribute is no longer mandatory, and if it is absent * the {{Path}} must end in a containment navigation property * the {{NavigationPropertyBinding}} can be the target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="NavigationPropertyBinding"}}). These annotations then apply to the implicit entity set defined by the containment navigation property. |
Summary | Variant of NavigtionPropertyBinding for containment navigation properties | Variant of NavigationPropertyBinding for containment navigation properties |
Component/s | CSDL JSON [ 10920 ] | |
Component/s | CSDL XML [ 10268 ] |
Affects Version/s | V4.01_OS [ 17060 ] |
Fix Version/s | V4.02_WD01 [ 13172 ] |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding that can be used with a Path ending in a containment navigation property and which do not specify a [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget], but serve as target for annotations. This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <NavigationPropertyBindingVariant Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </NavigationPropertyBindingVariant> </Singleton> {code} Instead of introducing a new element {{NavigationPropertyBindingVariant}} (working title), the existing {{NavigationPropertyBinding}} could be extended: The {{Target}} attribute is no longer mandatory, and if it is absent * the {{Path}} must end in a containment navigation property * the {{NavigationPropertyBinding}} can be the target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="NavigationPropertyBinding"}}). These annotations then apply to the implicit entity set defined by the containment navigation property. |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of {{NavigationPropertyBinding}} called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}})This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of {{NavigationPropertyBinding}} called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}})This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. Annotation with external targeting: {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Summary | Variant of NavigationPropertyBinding for containment navigation properties | Annotations of implicit entity sets |
Summary | Annotations of implicit entity sets | Annotation of implicit entity sets |
Priority | Minor [ 4 ] | Major [ 3 ] |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} Such annotations then apply to the implicit entity set defined by the containment navigation property. Annotation with external targeting: {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see comment of Dec 11th 2020. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see comment of Dec 11th 2020. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see the comment of Dec 11th 2020 below. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see the comment of Dec 11th 2020 below. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/$ContainmentNavigationProperty/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see the comment of Dec 11th 2020 below. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Description |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. The following paragraphs are obsolete, see the comment of Dec 11th 2020 below. -I propose a "variant" of NavigationPropertyBinding called {{ContainmentNavigationProperty}} that has a {{Path}} ending in a containment navigation property and has no [BindingTarget|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_BindingTarget]. A ContainmentNavigationProperty can be a target for any annotation whose term {{AppliesTo="EntitySet"}} (no need to specify {{AppliesTo="ContainmentNavigationProperty"}}). This would make the NavigationRestrictions annotation obsolete and the example in [#92|https://github.com/oasis-tcs/odata-vocabularies/pull/92] could be rewritten as- {code:xml} <Singleton Name="me" …> <ContainmentNavigationProperty Path="Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </ContainmentNavigationProperty> </Singleton> {code} -Such annotations then apply to the implicit entity set defined by the containment navigation property.- -Annotation with external targeting:- {code:xml} <Annotations Target="namespace.ContainerName/me/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
[NavigationPropertyBindings|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/odata-csdl-xml-v4.01-os.html#sec_NavigationPropertyBinding] are used to assign an entity set to a Path ending in a non-containment navigation property. The assigned entity set can then be the target for annotations like Aggregation.CustomAggregate (see https://issues.oasis-open.org/browse/ODATA-1382).
Paths ending in a containment navigation property, which implicitly define an entity set, are treated totally different, however. In order to define a custom aggregate on this implicit entity set, the annotation Capabilities.NavigationRestrictions with type Aggregation.NavigationPropertyAggregationCapabilities/CustomAggregates must be used. An easier alternative would be to use external targeting with a path that ends in a containment navigation property: {code:xml} <Annotations Target="namespace.ContainerName/me/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Proposal |
Extend CSDL section ...
{quote}A term that applies to {{EntitySet}} or {{Collection}} can also target the implicit entity set(s) defined by a containment navigation property. The path expression for such a target must end in a containment navigation property. If the path traverses an entity set or collection-valued navigation properties, the term is applied to all implicit entity sets: {quote} Example: {code:xml} <Annotations Target="namespace.ContainerName/me/Mails/$EntitySet"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> <Annotations Target="namespace.ContainerName/Employees/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations>{code} |
|
Environment | Proposed |
Proposal |
Extend CSDL section ...
{quote}A term that applies to {{EntitySet}} or {{Collection}} can also target the implicit entity set(s) defined by a containment navigation property. The path expression for such a target must end in a containment navigation property. If the path traverses an entity set or collection-valued navigation properties, the term is applied to all implicit entity sets: {quote} Example: {code:xml} <Annotations Target="namespace.ContainerName/me/Mails/$EntitySet"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> <Annotations Target="namespace.ContainerName/Employees/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations>{code} |
Extend CSDL section ...
{quote}A term that applies to {{EntitySet}} or {{Collection}} can also target the implicit entity set(s) defined by a containment navigation property. The path expression for such a target must end in a containment navigation property. If the path traverses an entity set or collection-valued navigation properties, the term is applied to all implicit entity sets: {quote} Example: {code:xml} <Annotations Target="namespace.ContainerName/me/Mails/$EntitySet"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> <Annotations Target="namespace.ContainerName/Employees/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
Proposal |
Extend CSDL section ...
{quote}A term that applies to {{EntitySet}} or {{Collection}} can also target the implicit entity set(s) defined by a containment navigation property. The path expression for such a target must end in a containment navigation property. If the path traverses an entity set or collection-valued navigation properties, the term is applied to all implicit entity sets: {quote} Example: {code:xml} <Annotations Target="namespace.ContainerName/me/Mails/$EntitySet"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> <Annotations Target="namespace.ContainerName/Employees/Mails"> <Annotation Term="Aggregation.CustomAggregate" Qualifier="JunkRating" String="Edm.Int32"/> </Annotations> {code} |
No action, already covered by existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target]. |
Proposal | No action, already covered by existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target]. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target]. Add the following sentence to the definition of vocabulary terms like {{Aggregation.CustomAggregate}}:
bq. If an annotation with this term has as its target a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. |
Fix Version/s | V4.02_WD01 [ 13172 ] |
Component/s | Data Aggregation [ 10274 ] | |
Component/s | CSDL JSON [ 10920 ] | |
Component/s | CSDL XML [ 10268 ] |
Fix Version/s | V4.0_CSD04 [ 10567 ] |
Affects Version/s | V4.0_CSD03 [ 10335 ] | |
Affects Version/s | V4.01_OS [ 17060 ] |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target]. Add the following sentence to the definition of vocabulary terms like {{Aggregation.CustomAggregate}}:
bq. If an annotation with this term has as its target a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentence to the definition: {quote}If an annotation with this term has as its target a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. {quote} Other annotation terms to be changed in the same way: tbd |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentence to the definition: {quote}If an annotation with this term has as its target a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. {quote} Other annotation terms to be changed in the same way: tbd |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, add {{AppliesTo="NavigationProperty"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Other annotation terms to be changed in the same way: tbd |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to entity sets and whose term carries this tag is embedded in or targets a containment navigation property, the annotation's definition also applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to entity sets and whose term carries this tag is embedded in or targets a containment navigation property, the annotation's definition also applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property, the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property, the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> <Annotation Term="Core.Example"> <Record Type="Core.ExternalExampleValue"> <PropertyValue Property="ExternalValue" String="URL to me/Mails example"/> </Record> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" Default="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by the containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToImplicitEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description"> <String>Term is applicable to implicit as well as explicit entity sets</String> </Annotation> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag is embedded in or targets a containment navigation property [OData-CSDL, section 14.2.2], the annotation's definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton.</String> </Annotation> </Term> {code} |
Allow certain annotation terms to apply to entity sets if they are addressed via a given path. Tag such terms with a new annotation in the {{Core}} vocabulary:
{code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Proposal |
Allow certain annotation terms to apply to entity sets if they are addressed via a given path. Tag such terms with a new annotation in the {{Core}} vocabulary:
{code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and add the following sentences to the definition: {quote}If an annotation with this term is embedded in or targets a containment navigation property, the preceding definition applies to the implicit entity sets defined by that containment navigation property. If the containment navigation property is targeted via an entity set or singleton, this applies only to those implicit entity sets that are contained in an instance of that entity set or singleton. {quote} Or, instead of extending the definition, tag the term with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySets" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySet" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySet" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path.</String> </Annotation> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySet" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path. In the case of containment navigation properties, an entity set "addressed via an instance" is an implicit entity set contained in the instance.</String> </Annotation> </Term> {code} In a future version of the OData spec, such annotation targets should be expressed as {{EntitySet/NavigationProperty/}} with a trailing slash. |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntitySet" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity sets if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections and whose term carries this tag targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity sets that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path. In the case of containment navigation properties, an entity set "addressed via an instance" is an implicit entity set contained in the instance.</String> </Annotation> </Term> {code} In a future version of the OData spec, such annotation targets should be expressed as {{EntitySet/NavigationProperty/}} with a trailing slash. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntityCollection" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity collections if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections (and whose term carries this tag) targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity collections that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path. In the case of containment navigation properties, an entity collection "addressed via an instance" is an implicit entity set contained in the instance.</String> </Annotation> </Term> {code} In a future version of the OData spec, such annotation targets should be expressed as {{EntitySet/NavigationProperty/}} with a trailing slash. |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToAddressedEntityCollection" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="Term is also applicable to entity collections if they are addressed via a given path"/> <Annotation Term="Core.LongDescription"> <String>If an annotation that applies to collections (and whose term carries this tag) targets a navigation property via an entity set or singleton [[OData-CSDL, section 14.2.2](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs02/odata-csdl-xml-v4.01-cs02.html#sec_Target)], the annotation's definition applies to entity collections that are addressed via an instance of the entity set or singleton in the target path and through the same navigation properties that occur in the target path. In the case of containment navigation properties, an entity collection "addressed via an instance" is an implicit entity set contained in the instance.</String> </Annotation> </Term> {code} In a future version of the OData spec, such annotation targets should be expressed as {{EntitySet/NavigationProperty/}} with a trailing slash. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target of an annotation with this term must start with an entity container"/> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target of an annotation with this term must start with an entity container"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation be nested within an entity set or singleton"/> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation be nested within an entity set or singleton"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="EntitySet Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesToContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} See [PR #101|https://github.com/oasis-tcs/odata-vocabularies/pull/101]. |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} See [PR #101|https://github.com/oasis-tcs/odata-vocabularies/pull/101]. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Resolution | [PR #101|https://github.com/oasis-tcs/odata-vocabularies/pull/101]. |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms like {{Aggregation.CustomAggregate}}, set {{AppliesTo="Collection"}} and tag them with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms {{Aggregation.CustomAggregate}} and {{Aggregation.ApplySupported}}, add {{AppliesTo="Collection"}} and tag these terms with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms {{Aggregation.CustomAggregate}} and {{Aggregation.ApplySupported}}, add {{AppliesTo="Collection"}} and tag these terms with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms {{Aggregation.CustomAggregate}} and {{Aggregation.ApplySupported}}, add {{AppliesTo="Collection"}} and tag these terms with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} Deprecate terms {{Groupable}}, {{Aggregatable}}, complex type {{NavigationPropertyAggregationCapabilities}}. |
Status | New [ 10000 ] | Open [ 1 ] |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Resolved [ 5 ] |
Status | Resolved [ 5 ] | Applied [ 10002 ] |
Component/s | Vocabularies [ 10324 ] |
Status | Applied [ 10002 ] | Resolved [ 5 ] |
Status | Resolved [ 5 ] | Open [ 1 ] |
Proposal |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms {{Aggregation.CustomAggregate}} and {{Aggregation.ApplySupported}}, add {{AppliesTo="Collection"}} and tag these terms with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} Deprecate terms {{Groupable}}, {{Aggregatable}}, complex type {{NavigationPropertyAggregationCapabilities}}. |
Make use of existing specification text in section [14.2.2 Target|https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target].
For vocabulary terms {{Aggregation.CustomAggregate}} and {{Aggregation.ApplySupported}}, add {{AppliesTo="Collection"}} and tag these terms with a new annotation in the {{Core}} vocabulary: {code:xml} <Term Name="AppliesViaContainer" Type="Core.Tag" DefaultValue="true" Nullable="false" AppliesTo="Term"> <Annotation Term="Core.Description" String="The target path of an annotation with this term must start with an entity container or the annotation must be embedded within an entity container, entity set or singleton"/> </Term> {code} Deprecate terms {{Groupable}}, {{Aggregatable}}, complex type {{NavigationPropertyAggregationCapabilities}}. For compatibility reasons, do not use this technique for annotations in the {{Capabilities}} vocabulary. |
Status | Open [ 1 ] | Resolved [ 5 ] |
Status | Resolved [ 5 ] | Applied [ 10002 ] |
Status | Applied [ 10002 ] | Closed [ 6 ] |