|
| 1 | +<?xml version="1.0" encoding="utf-8"?> |
| 2 | +<!-- |
| 3 | +
|
| 4 | + Technical Committee: |
| 5 | + OASIS Open Data Protocol (OData) TC |
| 6 | + https://www.oasis-open.org/committees/odata |
| 7 | +
|
| 8 | + Chairs: |
| 9 | + - Ralf Handl ([email protected]), SAP SE |
| 10 | + - Ram Jeyaraman ([email protected]), Microsoft |
| 11 | +
|
| 12 | + Editors: |
| 13 | + - Ralf Handl ([email protected]), SAP SE |
| 14 | + - Ram Jeyaraman ([email protected]), Microsoft |
| 15 | + - Michael Pizzo ([email protected]), Microsoft |
| 16 | +
|
| 17 | + Additional artifacts: |
| 18 | + This vocabulary is one component of a Work Product that also includes the following vocabulary components: |
| 19 | + - OData Core Vocabulary. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Core.V1.xml. |
| 20 | + - OData Measures Vocabulary. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Measures.V1.xml. |
| 21 | + - OData Capabilities Vocabulary. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Capabilities.V1.xml. |
| 22 | + - OData Validation Vocabulary. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Validation.V1.xml. |
| 23 | + - OData Aggregation Vocabulary. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Aggretation.V1.xml. |
| 24 | +
|
| 25 | + Related work: |
| 26 | + This vocabulary is related to: |
| 27 | + - OData Version 4.01 Part 1: Protocol. Latest version: http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html. |
| 28 | + - OData Version 4.01 Part 2: URL Conventions. Latest version: http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html. |
| 29 | + - OData Version 4.01 Part 3: Common Schema Definition Language (CSDL). Latest version: http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part3-csdl.html. |
| 30 | + - OData Extension for Data Aggregation Version 4.0. Latest version: http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/odata-data-aggregation-ext-v4.0.html. |
| 31 | +
|
| 32 | + This vocabulary replaces or supersedes: |
| 33 | + - OData Extension for Data Aggregation Version 4.0 Aggregation Vocabulary. |
| 34 | +
|
| 35 | + Abstract: |
| 36 | + This vocabulary defines terms to describe which data in a given entity model can be aggregated, and how. |
| 37 | +
|
| 38 | +--> |
| 39 | +<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> |
| 40 | + <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/vocabularies/Org.OData.Core.V1.xml"> |
| 41 | + <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core" /> |
| 42 | + </edmx:Reference> |
| 43 | + <edmx:DataServices> |
| 44 | + <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Org.OData.Aggregation.V1" Alias="Aggregation"> |
| 45 | + <Annotation Term="Core.Description"> |
| 46 | + <String>Terms to describe which data in a given entity model can be aggregated, and how.</String> |
| 47 | + </Annotation> |
| 48 | + |
| 49 | + <Term Name="ApplySupported" Type="Aggregation.ApplySupportedType" AppliesTo="EntityType ComplexType EntityContainer"> |
| 50 | + <Annotation Term="Core.Description"> |
| 51 | + <String>This structured type or entity container supports the $apply system query option</String> |
| 52 | + </Annotation> |
| 53 | + </Term> |
| 54 | + <ComplexType Name="ApplySupportedType"> |
| 55 | + <Property Name="Transformations" Type="Collection(Edm.String)" Nullable="false"> |
| 56 | + <Annotation Term="Core.Description" String="Transformations that can be used in $apply" /> |
| 57 | + </Property> |
| 58 | + <Property Name="CustomAggregationMethods" Type="Collection(Edm.String)" Nullable="false"> |
| 59 | + <Annotation Term="Core.Description" String="Qualified names of custom aggregation methods that can be used in aggregate(...with...)" /> |
| 60 | + </Property> |
| 61 | + <Property Name="Rollup" DefaultValue="MultipleHierarchies" Type="Aggregation.RollupType"> |
| 62 | + <Annotation Term="Core.Description" String="The service supports rollup hierarchies in a groupby transformation" /> |
| 63 | + </Property> |
| 64 | + <Property Name="PropertyRestrictions" DefaultValue="false" Type="Edm.Boolean"> |
| 65 | + <Annotation Term="Core.Description" |
| 66 | + String="Only properties tagged as Groupable can be used in the groupby transformation, and only those tagged as Aggregatable can be used in the aggregate transformation" /> |
| 67 | + </Property> |
| 68 | + </ComplexType> |
| 69 | + |
| 70 | + <EnumType Name="RollupType"> |
| 71 | + <Annotation Term="Core.Description" String="The number of rollup operators allowed in a groupby transformation" /> |
| 72 | + <Member Name="None" /> |
| 73 | + <Member Name="SingleHierarchy" /> |
| 74 | + <Member Name="MultipleHierarchies" /> |
| 75 | + </EnumType> |
| 76 | + |
| 77 | + <Term Name="Groupable" Type="Core.Tag" AppliesTo="Property NavigationProperty" DefaultValue="true"> |
| 78 | + <Annotation Term="Core.Description" String="This property can be used in the groupby transformation" /> |
| 79 | + </Term> |
| 80 | + |
| 81 | + <Term Name="Aggregatable" Type="Core.Tag" AppliesTo="Property NavigationProperty" DefaultValue="true"> |
| 82 | + <Annotation Term="Core.Description" String="This property can be used in the aggregate transformation" /> |
| 83 | + </Term> |
| 84 | + |
| 85 | + <Term Name="CustomAggregate" Type="Edm.String" AppliesTo="EntityType ComplexType EntityContainer"> |
| 86 | + <Annotation Term="Core.Description" String="Dynamic property that can be used in the aggregate transformation" /> |
| 87 | + <Annotation Term="Core.LongDescription" |
| 88 | + String="This term MUST be applied with a Qualifier, the Qualifier value is the name of the dynamic property. The value of the annotation MUST be the qualified name of a primitive type. The aggregated values will be of that type." /> |
| 89 | + </Term> |
| 90 | + |
| 91 | + <Term Name="ContextDefiningProperties" Type="Collection(Edm.PropertyPath)" Nullable="false" AppliesTo="Property Annotation"> |
| 92 | + <Annotation Term="Core.Description" |
| 93 | + String="The annotated property or custom aggregate is only well-defined in the context of these properties" /> |
| 94 | + <Annotation Term="Core.LongDescription"> |
| 95 | + <String>The context-defining properties need either be part of the result entities, or be restricted to a single value by a pre-filter operation. Examples are postal codes within a country, or monetary amounts whose context is the unit of currency.</String> |
| 96 | + </Annotation> |
| 97 | + </Term> |
| 98 | + |
| 99 | + <Term Name="LeveledHierarchy" Type="Collection(Edm.PropertyPath)" Nullable="false" AppliesTo="EntityType ComplexType"> |
| 100 | + <Annotation Term="Core.Description" String="Defines a leveled hierarchy by defining an ordered list of properties in the hierarchy" /> |
| 101 | + </Term> |
| 102 | + |
| 103 | + <Term Name="RecursiveHierarchy" Type="Aggregation.RecursiveHierarchyType" AppliesTo="EntityType ComplexType"> |
| 104 | + <Annotation Term="Core.Description" String="Defines a recursive hierarchy." /> |
| 105 | + </Term> |
| 106 | + |
| 107 | + <ComplexType Name="RecursiveHierarchyType"> |
| 108 | + <Property Name="NodeProperty" Type="Edm.PropertyPath" Nullable="false"> |
| 109 | + <Annotation Term="Core.Description" String="Property holding the hierarchy node value" /> |
| 110 | + </Property> |
| 111 | + <Property Name="ParentNavigationProperty" Type="Edm.NavigationPropertyPath" Nullable="false"> |
| 112 | + <Annotation Term="Core.Description" String="Property for navigating to the parent node" /> |
| 113 | + </Property> |
| 114 | + <Property Name="DistanceFromRootProperty" Type="Edm.PropertyPath" Nullable="true"> |
| 115 | + <Annotation Term="Core.Description" String="Property holding the number of edges between the node and the root node" /> |
| 116 | + </Property> |
| 117 | + <Property Name="IsLeafProperty" Type="Edm.PropertyPath" Nullable="true"> |
| 118 | + <Annotation Term="Core.RequiresType" String="Edm.Boolean" /> |
| 119 | + <Annotation Term="Core.Description" String="Property indicating whether the node is a leaf of the hierarchy" /> |
| 120 | + </Property> |
| 121 | + </ComplexType> |
| 122 | + |
| 123 | + <Function Name="isroot" IsBound="true"> |
| 124 | + <Annotation Term="Core.Description" |
| 125 | + String="Returns true, if and only if the value of the node property of the specified hierarchy is the root of the hierarchy" /> |
| 126 | + <Parameter Name="Entity" Type="Edm.EntityType" Nullable="false" /> |
| 127 | + <Parameter Name="Hierarchy" Type="Edm.String" Nullable="false" /> |
| 128 | + <ReturnType Type="Edm.Boolean" /> |
| 129 | + </Function> |
| 130 | + |
| 131 | + <Function Name="isdescendant" IsBound="true"> |
| 132 | + <Annotation Term="Core.Description" |
| 133 | + String="Returns true, if and only if the value of the node property of the specified hierarchy is a descendant of the given parent node with a distance of less than or equal to the optionally specified maximum distance" /> |
| 134 | + <Parameter Name="Entity" Type="Edm.EntityType" Nullable="false" /> |
| 135 | + <Parameter Name="Hierarchy" Type="Edm.String" Nullable="false" /> |
| 136 | + <Parameter Name="Node" Type="Edm.PrimitiveType" Nullable="false" /> |
| 137 | + <Parameter Name="MaxDistance" Type="Edm.Int16" /> |
| 138 | + <ReturnType Type="Edm.Boolean" /> |
| 139 | + </Function> |
| 140 | + |
| 141 | + <Function Name="isancestor" IsBound="true"> |
| 142 | + <Annotation Term="Core.Description" |
| 143 | + String="Returns true, if and only if the value of the node property of the specified hierarchy is an ancestor of the given child node with a distance of less than or equal to the optionally specified maximum distance" /> |
| 144 | + <Parameter Name="Entity" Type="Edm.EntityType" Nullable="false" /> |
| 145 | + <Parameter Name="Hierarchy" Type="Edm.String" Nullable="false" /> |
| 146 | + <Parameter Name="Node" Type="Edm.PrimitiveType" Nullable="false" /> |
| 147 | + <Parameter Name="MaxDistance" Type="Edm.Int16" /> |
| 148 | + <ReturnType Type="Edm.Boolean" /> |
| 149 | + </Function> |
| 150 | + |
| 151 | + <Function Name="issibling" IsBound="true"> |
| 152 | + <Annotation Term="Core.Description" |
| 153 | + String="Returns true, if and only if the value of the node property of the specified hierarchy has the same parent node as the specified node" /> |
| 154 | + <Parameter Name="Entity" Type="Edm.EntityType" Nullable="false" /> |
| 155 | + <Parameter Name="Hierarchy" Type="Edm.String" Nullable="false" /> |
| 156 | + <Parameter Name="Node" Type="Edm.PrimitiveType" Nullable="false" /> |
| 157 | + <ReturnType Type="Edm.Boolean" /> |
| 158 | + </Function> |
| 159 | + |
| 160 | + <Function Name="isleaf" IsBound="true"> |
| 161 | + <Annotation Term="Core.Description" |
| 162 | + String="Returns true, if and only if the value of the node property of the specified hierarchy has no descendants" /> |
| 163 | + <Parameter Name="Entity" Type=" Edm.EntityType" Nullable="false" /> |
| 164 | + <Parameter Name="Hierarchy" Type="Edm.String" Nullable="false" /> |
| 165 | + <ReturnType Type="Edm.Boolean" /> |
| 166 | + </Function> |
| 167 | + |
| 168 | + <Term Name="AvailableOnAggregates" Type="Aggregation.AvailableOnAggregatesType" AppliesTo="Action Function"> |
| 169 | + <Annotation Term="Core.Description" |
| 170 | + String="This action or function is available on aggregated entities if the RequiredProperties are still defined" /> |
| 171 | + </Term> |
| 172 | + <ComplexType Name="AvailableOnAggregatesType"> |
| 173 | + <Property Name="RequiredProperties" Type="Collection(Edm.PropertyPath)" Nullable="false" /> |
| 174 | + </ComplexType> |
| 175 | + |
| 176 | + </Schema> |
| 177 | + </edmx:DataServices> |
| 178 | +</edmx:Edmx> |
0 commit comments