diff --git a/docs/odata-csdl-json/odata-csdl-json.html b/docs/odata-csdl-json/odata-csdl-json.html index b73cb87a6..f7120333b 100644 --- a/docs/odata-csdl-json/odata-csdl-json.html +++ b/docs/odata-csdl-json/odata-csdl-json.html @@ -698,14 +698,14 @@

-

Document Object

+

Document Object

A CSDL JSON document consists of a single JSON object. This document object MUST contain the member $Version.

The document object MAY contain the member $Reference to reference other CSDL documents.

It also MAY contain members for schemas.

If the CSDL JSON document is the metadata document of an OData service, the document object MUST contain the member $EntityContainer.

-

$Version

+

$Version

The value of $Version is a string containing either 4.0 or 4.01.

-

$EntityContainer

+

$EntityContainer

The value of $EntityContainer is the namespace-qualified name of the entity container of that service. This is the only place where a model element MUST be referenced with its namespace-qualified name and use of the alias-qualified name is not allowed.

@@ -724,9 +724,9 @@

4.1 ReferenceA reference MAY be annotated.

The Core.SchemaVersion annotation, defined in OData-VocCore, MAY be used to indicate a particular version of the referenced document. If the Core.SchemaVersion annotation is present, the $schemaversion system query option, defined OData-Protocol, SHOULD be used when retrieving the referenced schema document.

-

$Reference

+

$Reference

The value of $Reference is an object that contains one member per referenced CSDL document. The name of the pair is a URI for the referenced document. The URI MAY be relative to the document containing the $Reference. The value of each member is a reference object.

-

Reference Object

+

Reference Object

The reference object MAY contain the members $Include and $IncludeAnnotations as well as annotations.

@@ -758,12 +758,12 @@

4.2

The alias MUST NOT be one of the reserved values Edm, odata, System, or Transient.

An alias is only valid within the document in which it is declared; a referencing document may define its own aliases for included schemas.

-

$Include

+

$Include

The value of $Include is an array. Array items are objects that MUST contain the member $Namespace and MAY contain the member $Alias.

The item objects MAY contain annotations.

-

$Namespace

+

$Namespace

The value of $Namespace is a string containing the namespace of the included schema.

-

$Alias

+

$Alias

The value of $Alias is a string containing the alias for the included schema.

@@ -808,13 +808,13 @@

target MAY be specified. If a target namespace is specified, only those annotations which apply a term form the specified term namespace to a model element of the target namespace (with the specified qualifier, if present) SHOULD be included. If no target namespace is specified, all annotations within the referenced document from the specified term namespace (taking into account the qualifier, if present) SHOULD be included.

The target namespace also provides consumers insight about what namespaces are present in the referenced document. If the consumer is not interested in that particular target namespace, the consumer can opt not to inspect the referenced document.

-

$IncludeAnnotations

+

$IncludeAnnotations

The value of $IncludeAnnotations is an array. Array items are objects that MUST contain the member $TermNamespace and MAY contain the members $Qualifier and $TargetNamespace.

-

$TermNamespace

+

$TermNamespace

The value of $TermNamespace is a namespace.

-

$Qualifier

+

$Qualifier

The value of $Qualifier is a simple identifier.

-

$TargetNamespace

+

$TargetNamespace

The value of $TargetNamespace is a namespace.

@@ -863,7 +863,7 @@

5 Schema

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

The namespace MUST NOT be one of the reserved values Edm, odata, System, or Transient.

-

Schema Object

+

Schema Object

A schema is represented as a member of the document object whose name is the schema namespace. Its value is an object that MAY contain the members $Alias and $Annotations.

The schema object MAY contain members representing entity types, complex types, enumeration types, type definitions, actions, functions, terms, and an entity container.

The schema object MAY also contain annotations that apply to the schema itself.

@@ -874,7 +874,7 @@

5.1 Alias

Aliases are document-global, so all schemas defined within or included into a document MUST have different aliases, and aliases MUST differ from the namespaces of all schemas defined within or included into a document. Aliases defined by a schema can be used throughout the containing document and are not restricted to the schema that defines them.

The alias MUST NOT be one of the reserved values Edm, odata, System, or Transient.

-

$Alias

+

$Alias

The value of $Alias is a string containing the alias for the schema.

@@ -891,7 +891,7 @@

$Alias

5.2 Annotations with External Targeting

-

$Annotations

+

$Annotations

The value of $Annotations is an object with one member per annotation target. The member name is a path identifying the annotation target, the member value is an object containing annotations for that target.

@@ -913,7 +913,7 @@

6 Entity Type

An entity type can define two types of properties. A structural property is a named reference to a primitive, complex, or enumeration type, or a collection of primitive, complex, or enumeration types. A navigation property is a named reference to another entity type or collection of entity types.

All properties MUST have a unique name within an entity type. Properties MUST NOT have the same name as the declaring entity type. They MAY have the same name as one of the direct or indirect base types or derived types.

-

Entity Type Object

+

Entity Type Object

An entity type is represented as a member of the schema object whose name is the unqualified name of the entity type and whose value is an object.

The entity type object MUST contain the member $Kind with a string value of EntityType.

It MAY contain the members $BaseType, $Abstract, $OpenType, $HasStream, and $Key.

@@ -941,7 +941,7 @@

key as well as structural and navigation properties of its base type.

An entity type MUST NOT introduce an inheritance cycle by specifying a base type.

-

$BaseType

+

$BaseType

The value of $BaseType is the qualified name of the base type.

@@ -969,7 +969,7 @@

key or derive from a base type with a defined key.

An abstract entity type MUST NOT inherit from a non-abstract entity type.

-

$Abstract

+

$Abstract

The value of $Abstract is one of the Boolean literals true or false. Absence of the member means false.

6.3 Open Entity Type

@@ -977,7 +977,7 @@

6.3

An entity type derived from an open entity type MUST indicate that it is also open.

Note: structural and navigation properties MAY be returned by the service on instances of any structured type, whether or not the type is marked as open. Clients MUST always be prepared to deal with additional properties on instances of any structured type, see OData-Protocol.

-

$OpenType

+

$OpenType

The value of $OpenType is one of the Boolean literals true or false. Absence of the member means false.

6.4 Media Entity Type

@@ -985,7 +985,7 @@

An entity type derived from a media entity type MUST indicate that it is also a media entity type.

Media entity types MAY specify a list of acceptable media types using an annotation with term Core.AcceptableMediaTypes, see OData-VocCore.

-

$HasStream

+

$HasStream

The value of $HasStream is one of the Boolean literals true or false. Absence of the member means false.

6.5 Key

@@ -1017,7 +1017,7 @@

6.5 Key

An alias MUST NOT be defined if the key property is a primitive property of the entity type itself.

For key properties that are a property of a complex or navigation property, the alias MUST be used in the key predicate of URLs instead of the path to the property because the required percent-encoding of the forward slash separating segments of the path to the property would make URL construction and parsing rather complicated. The alias MUST NOT be used in the query part of URLs, where paths to properties don't require special encoding and are a standard constituent of expressions anyway.

-

$Key

+

$Key

The value of $Key is an array with one item per key property.

Key properties without a key alias are represented as strings containing the property name.

Key properties with a key alias are represented as objects with one member whose name is the key alias and whose value is a string containing the path to the property.

@@ -1102,7 +1102,7 @@

simple identifier. It is used when referencing, serializing or deserializing the property. It MUST be unique within the set of structural and navigation properties of the declaring structured type, and MUST NOT match the name of any navigation property in any of its base types. If a structural property with the same name is defined in any of this type's base types, then the property's type MUST be a type derived from the type specified for the property of the base type and constrains this property to be of the specified subtype for instances of this structured type. The name MUST NOT match the name of any structural or navigation property of any of this type's base types for OData 4.0 responses.

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

-

Property Object

+

Property Object

Structural properties are represented as members of the object representing a structured type. The member name is the property name, the member value is an object.

The property object MAY contain the member $Kind with a string value of Property. This member SHOULD be omitted to reduce document size.

It MAY contain the member $Type, $Collection, $Nullable, $MaxLength, $Unicode, $Precision, $Scale, $SRID, and $DefaultValue.

@@ -1128,7 +1128,7 @@

7.1 Type

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

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

-

$Type and $Collection

+

$Type and $Collection

For single-valued properties the value of $Type is the qualified name of the property's type.

For collection-valued properties the value of $Type is the qualified name of the property's item type, and the member $Collection MUST be present with the literal value true.

Absence of the $Type member means the type is Edm.String. This member SHOULD be omitted for string properties to reduce document size.

@@ -1145,7 +1145,7 @@

7.2 Type Facets<

7.2.1 Nullable

A Boolean value specifying whether the property can have the value null.

-

$Nullable

+

$Nullable

The value of $Nullable is one of the Boolean literals true or false. Absence of the member means false.

For single-valued properties the value true means that the property allows the null value.

For collection-valued properties the property value will always be a collection that MAY be empty. In this case $Nullable applies to items of the collection and specifies whether the collection MAY contain null values.

@@ -1154,7 +1154,7 @@

7.2.2 MaxLength

A positive integer value specifying the maximum length of a binary, stream or string value. For binary or stream values this is the octet length of the binary data, for string values it is the character length (number of code points for Unicode).

If no maximum length is specified, clients SHOULD expect arbitrary length.

-

$MaxLength

+

$MaxLength

The value of $MaxLength is a positive integer.

Note: OData-CSDL-XML defines a symbolic value max that is only allowed in OData 4.0 responses. This symbolic value is not allowed in CDSL JSON documents at all. Services MAY instead specify the concrete maximum length supported for the type by the service or omit the member entirely.

@@ -1164,7 +1164,7 @@

7.2.3 Precision

Note: service authors SHOULD be aware that some clients are unable to support a precision greater than 28 for decimal properties and 7 for temporal properties. Client developers MUST be aware of the potential for data loss when round-tripping values of greater precision. Updating via PATCH and exclusively specifying modified properties will reduce the risk for unintended data loss.

Note: duration properties supporting a granularity less than seconds (e.g. minutes, hours, days) can be annotated with term Measures.DurationGranularity, see OData-VocMeasures.

-

$Precision

+

$Precision

The value of $Precision is a number.

Absence of $Precision means arbitrary precision.

@@ -1184,7 +1184,7 @@

7.2.4 Scale

The value of Scale MUST be less than or equal to the value of Precision.

Note: if the underlying data store allows negative scale, services may use a Precision with the absolute value of the negative scale added to the actual number of significant decimal digits, and client-provided values may have to be rounded before being stored.

-

$Scale

+

$Scale

The value of $Scale is a number or a string with one of the symbolic values floating or variable.

Services SHOULD use lower-case values; clients SHOULD accept values in a case-insensitive manner.

Absence of $Scale means variable.

@@ -1232,7 +1232,7 @@

7.2.5 Unicode

For a string property the Unicode facet indicates whether the property might contain and accept string values with Unicode characters (code points) beyond the ASCII character set. The value false indicates that the property will only contain and accept string values with characters limited to the ASCII character set.

If no value is specified, the Unicode facet defaults to true.

-

$Unicode

+

$Unicode

The value of $Unicode is one of the Boolean literals true or false. Absence of the member means true.

7.2.6 SRID

@@ -1240,14 +1240,14 @@

7.2.6 SRID

The value of the SRID facet MUST be a non-negative integer or the special value variable. If no value is specified, the facet defaults to 0 for Geometry types or 4326 for Geography types.

The valid values of the SRID facet and their meanings are as defined by the European Petroleum Survey Group EPSG.

-

$SRID

+

$SRID

The value of $SRID is a string containing a number or the symbolic value variable.

7.2.7 Default Value

A primitive or enumeration property MAY define a default value that is used if the property is not explicitly represented in an annotation or the body of a request or response.

If no value is specified, the client SHOULD NOT assume a default value.

-

$DefaultValue

+

$DefaultValue

The value of $DefaultValue is the type-specific JSON representation of the default value of the property, see OData-JSON. For properties of type Edm.Decimal and Edm.Int64 the representation depends on the media type parameter IEEE754Compatible.


@@ -1256,7 +1256,7 @@

simple identifier. It is used when referencing, serializing or deserializing the navigation property. It MUST be unique within the set of structural and navigation properties of the declaring structured type, and MUST NOT match the name of any structural property in any of its base types. If a navigation property with the same name is defined in any of this type's base types, then the navigation property's type MUST be a type derived from the type specified for the navigation property of the base type, and constrains this navigation property to be of the specified subtype for instances of this structured type. The name MUST NOT match the name of any structural or navigation property of any of this type's base types for OData 4.0 responses.

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

-

Navigation Property Object

+

Navigation Property Object

Navigation properties are represented as members of the object representing a structured type. The member name is the property name, the member value is an object.

The navigation property object MUST contain the member $Kind with a string value of NavigationProperty.

It MUST contain the member $Type, and it MAY contain the members $Collection, $Nullable, $Partner, $ContainsTarget, $ReferentialConstraint, and $OnDelete.

@@ -1301,7 +1301,7 @@

Core.Ordered term, defined in OData-VocCore, to specify that it supports a stable ordering.

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

-

$Type and $Collection

+

$Type and $Collection

For single-valued navigation properties the value of $Type is the qualified name of the navigation property's type.

For collection-valued navigation properties the value of $Type is the qualified name of the navigation property's item type, and the member $Collection MUST be present with the literal value true.

@@ -1309,7 +1309,7 @@

A Boolean value specifying whether the declaring type MAY have no related entity. If false, instances of the declaring structured type MUST always have a related entity.

Nullable MUST NOT be specified for a collection-valued navigation property, a collection is allowed to have zero items.

-

$Nullable

+

$Nullable

The value of $Nullable is one of the Boolean literals true or false. Absence of the member means false.

8.3 Partner Navigation Property

@@ -1319,7 +1319,7 @@

If no partner navigation property is specified, no assumptions can be made as to whether one of the navigation properties on the target type will lead back to the source entity.

If a partner navigation property is specified, this partner navigation property MUST either specify the current navigation property as its partner to define a bi-directional relationship or it MUST NOT specify a partner navigation property. The latter can occur if the partner navigation property is defined on a complex type, or if the current navigation property is defined on a type derived from the type of the partner navigation property.

-

$Partner

+

$Partner

The value of $Partner is a string containing the path to the partner navigation property.

8.4 Containment Navigation Property

@@ -1336,7 +1336,7 @@

-

$ContainsTarget

+

$ContainsTarget

The value of $ContainsTarget is one of the Boolean literals true or false. Absence of the member means false.

8.5 Referential Constraint

@@ -1346,7 +1346,7 @@

-

$ReferentialConstraint

+

$ReferentialConstraint

The value of $ReferentialConstraint is an object with one member per referential constraint. The member name is the path to the dependent property, this path is relative to the structured type declaring the navigation property. The member value is a string containing the path to the principal property, this path is relative to the entity type that is the target of the navigation property.

It also MAY contain annotations. These are prefixed with the path of the dependent property of the annotated referential constraint.

@@ -1391,7 +1391,7 @@

8.6

If no on-delete action is specified, the action taken by the service is not predictable by the client and could vary per entity.

-

$OnDelete

+

$OnDelete

The value of $OnDelete is a string with one of the values Cascade, None, SetNull, or SetDefault.

Annotations for $OnDelete are prefixed with $OnDelete.

@@ -1417,7 +1417,7 @@

9 Complex Type

A complex type can define two types of properties. A structural property is a named reference to a primitive, complex, or enumeration type, or a collection of primitive, complex, or enumeration types. A navigation property is a named reference to an entity type or a collection of entity types.

All properties MUST have a unique name within a complex type. Properties MUST NOT have the same name as the declaring complex type. They MAY have the same name as one of the direct or indirect base types or derived types.

-

Complex Type Object

+

Complex Type Object

A complex type is represented as a member of the schema object whose name is the unqualified name of the complex type and whose value is an object.

The complex type object MUST contain the member $Kind with a string value of ComplexType. It MAY contain the members $BaseType, $Abstract, and $OpenType. It also MAY contain members representing structural properties and navigation properties as well as annotations.

@@ -1463,13 +1463,13 @@

section 14.2.

-

$BaseType

+

$BaseType

The value of $BaseType is the qualified name of the base type.

9.2 Abstract Complex Type

A complex type MAY indicate that it is abstract and cannot have instances.

-

$Abstract

+

$Abstract

The value of $Abstract is one of the Boolean literals true or false. Absence of the member means false.

9.3 Open Complex Type

@@ -1477,7 +1477,7 @@

A complex type derived from an open complex type MUST indicate that it is also open.

Note: structural and navigation properties MAY be returned by the service on instances of any structured type, whether or not the type is marked as open. Clients MUST always be prepared to deal with additional properties on instances of any structured type, see OData‑Protocol.

-

$OpenType

+

$OpenType

The value of $OpenType is one of the Boolean literals true or false. Absence of the member means false.


@@ -1487,7 +1487,7 @@

1

Although enumeration types have an underlying numeric value, the preferred representation for an enumeration value is the member name. Discrete sets of numeric values should be represented as numeric values annotated with the AllowedValues annotation defined in OData-VocCore.

Enumeration types marked as flags allow values that consist of more than one enumeration member at a time.

-

Enumeration Type Object

+

Enumeration Type Object

An enumeration type is represented as a member of the schema object whose name is the unqualified name of the enumeration type and whose value is an object.

The enumeration type object MUST contain the member $Kind with a string value of EnumType.

It MAY contain the members $UnderlyingType and $IsFlags.

@@ -1510,14 +1510,14 @@

-

$UnderlyingType

+

$UnderlyingType

The value of $UnderlyingType is the qualified name of the underlying type.

10.2 Flags Enumeration Type

An enumeration type MAY indicate that the enumeration type allows multiple members to be selected simultaneously.

If not explicitly specified, only one enumeration type member MAY be selected simultaneously.

-

$IsFlags

+

$IsFlags

The value of $IsFlags is one of the Boolean literals true or false. Absence of the member means false.

@@ -1548,7 +1548,7 @@

-

Enumeration Member Object

+

Enumeration Member Object

Enumeration type members are represented as JSON object members, where the object member name is the enumeration member name and the object member value is the enumeration member value.

For members of flags enumeration types a combined enumeration member value is equivalent to the bitwise OR of the discrete values.

Annotations for enumeration members are prefixed with the enumeration member name.

@@ -1573,7 +1573,7 @@

11 T

Type definitions can be used wherever a primitive type is used (other than as the underlying type in a new type definition) and are type-comparable with their underlying types and any type definitions defined using the same underlying type.

It is up to the definition of a term to specify whether and how annotations with this term propagate to places where the annotated type definition is used, and whether they can be overridden.

-

Type Definition Object

+

Type Definition Object

A type definition is represented as a member of the schema object whose name is the unqualified name of the type definition and whose value is an object.

The type definition object MUST contain the member $Kind with a string value of TypeDefinition and the member $UnderlyingType. It MAY contain the members $MaxLength, $Unicode, $Precision, $Scale, and $SRID, and it MAY contain annotations.

@@ -1604,7 +1604,7 @@

Type Defini

11.1 Underlying Primitive Type

The underlying type of a type definition MUST be a primitive type that MUST NOT be another type definition.

-

$UnderlyingType

+

$UnderlyingType

The value of $UnderlyingType is the qualified name of the underlying type.

The type definition MAY specify facets applicable to the underlying type. Possible facets are: $MaxLength, $Unicode, $Precision, $Scale, or $SRID.

@@ -1624,7 +1624,7 @@

Unbound actions do not support overloads. The names of all unbound actions MUST be unique within a schema.

An unbound action MAY have the same name as a bound action.

-

Action Overload Object

+

Action Overload Object

An action is represented as a member of the schema object whose name is the unqualified name of the action and whose value is an array. The array contains one object per action overload.

The action overload object MUST contain the member $Kind with a string value of Action.

It MAY contain the members $IsBound, $EntitySetPath, $Parameter, and $ReturnType, and it MAY contain annotations.

@@ -1651,7 +1651,7 @@

type definitions can be used to disambiguate overloads for both bound and unbound functions, even if they specify the same underlying type.

-

Function Overload Object

+

Function Overload Object

A function is represented as a member of the schema object whose name is the unqualified name of the function and whose value is an array. The array contains one object per function overload.

The function overload object MUST contain the member $Kind with a string value of Function.

It MUST contain the member $ReturnType, and it MAY contain the members $IsBound, $EntitySetPath, and $Parameter, and it MAY contain annotations.

@@ -1662,7 +1662,7 @@

action import.

Unbound functions are invoked as static functions within a common expression (see OData-URL, section 5.1.1), or from the entity container through a function import.

-

$IsBound

+

$IsBound

The value of $IsBound is one of the Boolean literals true or false. Absence of the member means false.

12.6 Entity Set Path

@@ -1671,14 +1671,14 @@

12.6

The first segment of the entity set path MUST be the name of the binding parameter. The remaining segments of the entity set path MUST represent navigation segments or type casts.

A navigation segment names the simple identifier of the navigation property to be traversed. A type-cast segment names the qualified name of the entity type that should be returned from the type cast.

-

$EntitySetPath

+

$EntitySetPath

The value of $EntitySetPath is a string containing the entity set path.

12.7 Composable Function

A function MAY indicate that it is composable. If not explicitly indicated, it is not composable.

A composable function can be invoked with additional path segments or key predicates appended to the resource path that identifies the composable function, and with system query options as appropriate for the type returned by the composable function.

-

$IsComposable

+

$IsComposable

The value of $IsComposable is one of the Boolean literals true or false. Absence of the member means false.

12.8 Return Type

@@ -1686,14 +1686,14 @@

12.8 Return Typ

The facets Nullable, MaxLength, Precision, Scale, and SRID can be used as appropriate to specify value restrictions of the return type, as well as the Unicode facet for 4.01 and greater payloads.

For a single-valued return type the facets apply to the returned value. For a collection-valued return type the facets apply to the items in the returned collection.

-

$ReturnType

+

$ReturnType

The value of $ReturnType is an object. It MAY contain the members $Type, $Collection, $Nullable, $MaxLength, $Unicode, $Precision, $Scale, and $SRID.

It also MAY contain annotations.

-

$Type and $Collection

+

$Type and $Collection

For single-valued return types the value of $Type is the qualified name of the returned type.

For collection-valued return types the value of $Type is the qualified name of the returned item type, and the member $Collection MUST be present with the literal value true.

Absence of the $Type member means the type is Edm.String.

-

$Nullable

+

$Nullable

The value of $Nullable is one of the Boolean literals true or false. Absence of the member means false.

If the return type is a collection of entity types, the $Nullable member has no meaning and MUST NOT be specified.

For other collection-valued return types the result will always be a collection that MAY be empty. In this case $Nullable applies to items of the collection and specifies whether the collection MAY contain null values.

@@ -1707,18 +1707,18 @@

12.9 Parameter<

The facets MaxLength, Precision, Scale, or SRID can be used as appropriate to specify value restrictions of the parameter, as well as the Unicode facet for 4.01 and greater payloads.

For single-valued parameters the facets apply to the parameter value. If the parameter value is a collection, the facets apply to the items in the collection.

-

$Parameter

+

$Parameter

The value of $Parameter is an array. The array contains one object per parameter.

-

Parameter Object

+

Parameter Object

A parameter object MUST contain the member $Name, and it MAY contain the members $Type, $Collection, $Nullable, $MaxLength, $Unicode, $Precision, $Scale, and $SRID.

Parameter objects MAY also contain annotations.

-

$Name

+

$Name

The value of $Name is a string containing the parameter name.

-

$Type and $Collection

+

$Type and $Collection

For single-valued parameters the value of $Type is the qualified name of the accepted type.

For collection-valued parameters the value of $Type is the qualified name of the accepted item type, and the member $Collection MUST be present with the literal value true.

Absence of the $Type member means the type is Edm.String.

-

$Nullable

+

$Nullable

The value of $Nullable is one of the Boolean literals true or false. Absence of the member means false.

For single-valued parameters the value true means that the parameter accepts a null value.

For collection-valued parameters the parameter value will always be a collection that MAY be empty. In this case $Nullable applies to items of the collection and specifies whether the collection MAY contain null values.

@@ -1789,7 +1789,7 @@

1

A singleton allows addressing a single entity directly from the entity container without having to know its key, and without requiring an entity set.

A function import or an action import is used to expose a function or action defined in an entity model as a top level resource.

-

Entity Container Object

+

Entity Container Object

An entity container is represented as a member of the schema object whose name is the unqualified name of the entity container and whose value is an object.

The entity container object MUST contain the member $Kind with a string value of EntityContainer.

The entity container object MAY contain the member $Extends, members representing entity sets, singletons, action imports, and function imports, as well as annotations.

@@ -1839,7 +1839,7 @@

If the "extending" entity container defines an entity set with the same name as defined in any of its "base" containers, then the entity set's type MUST specify an entity type derived from the entity type specified for the identically named entity set in the "base" container. The same holds for singletons. Action imports and function imports cannot be redefined, nor can the "extending" container define a child with the same name as a child of a different kind in a "base" container.

Note: services should not introduce cycles by extending entity containers. Clients should be prepared to process cycles introduced by extending entity containers.

-

$Extends

+

$Extends

The value of $Extends is the qualified name of the entity container to be extended.

@@ -1858,15 +1858,15 @@

13.2 Entity SetAn entity set MAY indicate whether it is included in the service document. If not explicitly indicated, it is included.

Entity sets that cannot be queried without specifying additional query options SHOULD NOT be included in the service document.

-

Entity Set Object

+

Entity Set Object

An entity set is represented as a member of the entity container object whose name is the name of the entity set and whose value is an object.

The entity set object MUST contain the members $Collection and $Type.

It MAY contain the members $IncludeInServiceDocument and $NavigationPropertyBinding as well as annotations.

-

$Collection

+

$Collection

The value of $Collection is the Booelan value true.

-

$Type

+

$Type

The value of $Type is the qualified name of an entity type.

-

$IncludeInServiceDocument

+

$IncludeInServiceDocument

The value of $IncludeInServiceDocument is one of the Boolean literals true or false. Absence of the member means true.

13.3 Singleton

@@ -1875,13 +1875,13 @@

13.3 Singleton<

A singleton MUST specify a type that MUST be an entity type in scope.

A singleton MUST reference an instance its entity type.

-

Singleton Object

+

Singleton Object

A singleton is represented as a member of the entity container object whose name is the name of the singleton and whose value is an object.

The singleton object MUST contain the member $Type and it MAY contain the member $Nullable.

It MAY contain the member $NavigationPropertyBinding as well as annotations.

-

$Type

+

$Type

The value of $Type is the qualified name of an entity type.

-

$Nullable

+

$Nullable

The value of $Nullable is one of the Boolean literals true or false. Absence of the member means false.In OData 4.0 responses this member MUST NOT be specified.

13.4 Navigation Property Binding

@@ -1900,7 +1900,7 @@

13.4.

If the target is a simple identifier, it MUST resolve to an entity set or singleton defined in the same entity container.

If the target is a target path, it MUST resolve to an entity set, singleton, or direct or indirect containment navigation property of a singleton in scope. The path can traverse single-valued containment navigation properties or single-valued complex properties before ending in a containment navigation property, and there MUST NOT be any non-containment navigation properties prior to the final segment.

-

$NavigationPropertyBinding

+

$NavigationPropertyBinding

The value of $NavigationPropertyBinding is an object. It consists of members whose name is the navigation property binding path and whose value is a string containing the navigation property binding target. If the target is in the same entity container, the target MUST NOT be prefixed with the qualified entity container name.

@@ -1939,14 +1939,14 @@

13.5 Acti

An action import MUST specify the name of an unbound action in scope.

If the imported action returns an entity or a collection of entities, a simple identifier or target path value MAY be specified to identify the entity set that contains the returned entities. If a simple identifier is specified, it MUST resolve to an entity set defined in the same entity container. If a target path is specified, it MUST resolve to an entity set in scope.

-

Action Import Object

+

Action Import Object

An action import is represented as a member of the entity container object whose name is the name of the action import and whose value is an object.

The action import object MUST contain the member $Action.

It MAY contain the member $EntitySet.

It MAY also contain annotations.

-

$Action

+

$Action

The value of $Action is a string containing the qualified name of an unbound action.

-

$EntitySet

+

$EntitySet

The value of $EntitySet is a string containing either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container.

13.6 Function Import

@@ -1956,16 +1956,16 @@

13.

If the imported function returns an entity or a collection of entities, a simple identifier or target path value MAY be specified to identify the entity set that contains the returned entities. If a simple identifier is specified, it MUST resolve to an entity set defined in the same entity container. If a target path is specified, it MUST resolve to an entity set in scope.

A function import for a parameterless function MAY indicate whether it is included in the service document. If not explicitly indicated, it is not included.

-

Function Import Object

+

Function Import Object

A function import is represented as a member of the entity container object whose name is the name of the function import and whose value is an object.

The function import object MUST contain the member $Function.

It MAY contain the members $EntitySet and $IncludeInServiceDocument.

It MAY also contain annotations.

-

$Function

+

$Function

The value of $Function is a string containing the qualified name of an unbound function.

-

$EntitySet

+

$EntitySet

The value of $EntitySet is a string containing either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container.

-

$IncludeInServiceDocument

+

$IncludeInServiceDocument

The value of $IncludeInServiceDocument is one of the Boolean literals true or false. Absence of the member means false.


@@ -2024,16 +2024,16 @@

14.1 Term

The term's name is a simple identifier that MUST be unique within its schema.

The term's type MUST be a type in scope, or a collection of a type in scope.

-

Term Object

+

Term Object

A term is represented as a member of the schema object whose name is the unqualified name of the term and whose value is an object.

The term object MUST contain the member $Kind with a string value of Term.

It MAY contain the members $Type, $Collection, $AppliesTo, $Nullable, $MaxLength, $Precision, $Scale, $SRID, and $DefaultValue, as well as $Unicode for 4.01 and greater payloads.

It MAY contain annotations.

-

$Type and $Collection

+

$Type and $Collection

For single-valued terms the value of $Type is the qualified name of the term's type.

For collection-valued terms the value of $Type is the qualified name of the term's item type, and the member $Collection MUST be present with the literal value true.

Absence of the $Type member means the type is Edm.String.

-

$DefaultValue

+

$DefaultValue

The value of $DefaultValue is the type-specific JSON representation of the default value of the term, see OData-JSON.

Note: the $DefaultValue member is purely for documentation and isomorphy to OData-CSDLXML. Annotations in CSDL JSON documents MUST always specify an explicit value.

@@ -2041,7 +2041,7 @@

A term MAY specialize another term in scope by specifying it as its base term.

When applying a specialized term, the base term MUST also be applied with the same qualifier, and so on until a term without a base term is reached.

-

$BaseTerm

+

$BaseTerm

The value of $BaseTerm is the qualified name of the base term.

14.1.2 Applicability

@@ -2189,7 +2189,7 @@

14.1.2
-

$AppliesTo

+

$AppliesTo

The value of $AppliesTo is an array whose items are strings containing symbolic values from the table above that identify model elements the term is intended to be applied to.

@@ -2210,7 +2210,7 @@

14.2 Annotation<

An annotation applies a term to a model element and defines how to calculate a value for the term application. Both term and model element MUST be in scope. Section 14.1.2 specifies which model elements MAY be annotated with a term.

The value of an annotation is specified as an annotation expression, which is either a constant expression representing a constant value, or a dynamic expression. The most common construct for assigning an annotation value is a path expression that refers to a property of the same or a related structured type.

-

Annotation Member

+

Annotation Member

An annotation is represented as a member whose name consists of an at (@) character, followed by the qualified name of a term, optionally followed by a hash (#) and a qualifier.

The value of the annotation MUST be a constant expression or dynamic expression.

The annotation can be a member of the object representing the model element it annotates, or a second-level member of the $Annotations member of a schema object.

@@ -2719,7 +2719,7 @@

14.4.1.7 Value P

The value path expression allows assigning a value by traversing an object graph. It can be used in annotations that target entity containers, entity sets, entity types, complex types, navigation properties of structured types, and structural properties of structured types. Its argument is an instance path.

The value of the path expression is the instance or collection of instances identified by the path.

-

$Path

+

$Path

Path expressions are represented as an object with a single member $Path whose value is a string containing a path.

@@ -2754,13 +2754,13 @@

OData-URL.

The other comparison operators require two operand expressions that evaluate to comparable values.

-

$And and $Or

+

$And and $Or

The And and Or logical expressions are represented as an object with a single member whose value is an array with two annotation expressions. The member name is one of $And, or $Or.

It MAY contain annotations.

-

$Not

+

$Not

Negation expressions are represented as an object with a single member $Not whose value is an annotation expression.

It MAY contain annotations.

-

$Eq, $Ne, $Gt, $Ge, $Lt, $Le, $Has, and $In

+

$Eq, $Ne, $Gt, $Ge, $Lt, $Le, $Has, and $In

All comparison expressions are represented as an object with a single member whose value is an array with two annotation expressions. The member name is one of $Eq, $Ne, $Gt, $Ge, $Lt, $Le, $Has, or $In.

They MAY contain annotations.

@@ -2901,10 +2901,10 @@

-

$Neg

+

$Neg

Negation expressions are represented as an object with a single member $Neg whose value is an annotation expression.

It MAY contain annotations.

-

$Add, $Sub, $Mul, $Div, $DivBy, and $Mod

+

$Add, $Sub, $Mul, $Div, $DivBy, and $Mod

These arithmetic expressions are represented as an object with as single member whose value is an array with two annotation expressions. The member name is one of $Add, $Sub, $Neg, $Mul, $Div, $DivBy, or $Mod.

They MAY contain annotations.

@@ -2979,7 +2979,7 @@

14.4.4 Apply Client-Side Functions

The apply expression enables a value to be obtained by applying a client-side function. The apply expression MAY have operand expressions. The operand expressions are used as parameters to the client-side function.

-

$Apply

+

$Apply

Apply expressions are represented as an object with a member $Apply whose value is an array of annotation expressions, and a member $Function whose value is a string containing the qualified name of the client-side function to be applied.

It MAY contain annotations.

@@ -3072,7 +3072,7 @@

14.4.5 Cast

The cast expression casts the value obtained from its single child expression to the specified type. The cast expression follows the same rules as the cast canonical function defined in OData-URL.

-

$Cast

+

$Cast

Cast expressions are represented as an object with a member $Cast whose value is an annotation expression, a member $Type whose value is a string containing the qualified type name, and optionally a member $Collection with a value of true.

It MAY contain annotations.

If the specified type is a primitive type or a collection of primitive types, the facet members $MaxLength, $Unicode, $Precision, $Scale, and $SRID MAY be specified if applicable to the specified primitive type. If the facet members are not specified, their values are considered unspecified.

@@ -3105,7 +3105,7 @@

14.4.7 If-The

The second and third child expressions are evaluated conditionally. The result MUST be type compatible with the type expected by the surrounding expression.

If the first expression evaluates to true, the second expression MUST be evaluated and its value MUST be returned as the result of the if-then-else expression. If the first expression evaluates to false and a third child element is present, it MUST be evaluated and its value MUST be returned as the result of the if-then-else expression. If no third expression is present, nothing is added to the surrounding collection.

-

$If

+

$If

Conditional expressions are represented as an object with a member $If whose value is an array of two or three annotation expressions.

It MAY contain annotations.

@@ -3124,7 +3124,7 @@

$If

14.4.8 Is-Of

The is-of expression checks whether the value obtained from its single child expression is compatible with the specified type. It returns true if the child expression returns a type that is compatible with the specified type, and false otherwise.

-

$IsOf

+

$IsOf

Is-of expressions are represented as an object with a member $IsOf whose value is an annotation expression, a member $Type whose value is a string containing an qualified type name, and optionally a member $Collection with a value of true.

It MAY contain annotations.

If the specified type is a primitive type or a collection of primitive types, the facet members $MaxLength, $Unicode, $Precision, $Scale, and $SRID MAY be specified if applicable to the specified primitive type. If the facet members are not specified, their values are considered unspecified.

@@ -3143,7 +3143,7 @@

14

A labeled element expression MUST contain exactly one child expression. The value of the child expression is also the value of the labeled element expression.

A labeled element expression MUST provide a simple identifier value as its name that MUST be unique within the schema containing the expression.

-

$LabeledElement

+

$LabeledElement

Labeled element expressions are represented as an object with a member $LabeledElement whose value is an annotation expression, and a member $Name whose value is a string containing the labeled element's name.

It MAY contain annotations.

@@ -3159,7 +3159,7 @@

$LabeledEle

14.4.10 Labeled Element Reference

The labeled element reference expression MUST specify the qualified name of a labeled element expression in scope and returns the value of the identified labeled element expression as its value.

-

$LabeledElementReference

+

$LabeledElementReference

Labeled element reference expressions are represented as an object with a member $LabeledElementReference whose value is a string containing an qualified name.

@@ -3178,7 +3178,7 @@

14.4.11 Null

"@UI.DisplayName": null,
-

$Null

+

$Null

Null expression containing annotations are represented as an object with a member $Null whose value is the literal null.

@@ -3234,7 +3234,7 @@

14.4.13

The URL reference expression MUST contain exactly one expression of type Edm.String. Its value is treated as a URL that MAY be relative or absolute; relative URLs are relative to the URL of the document containing the URL reference expression, or relative to a base URL specified in a format-specific way.

The response body of the GET request MUST be returned as the result of the URL reference expression. The result of the URL reference expression MUST be type compatible with the type expected by the surrounding expression.

-

$UrlRef

+

$UrlRef

URL reference expressions are represented as an object with a single member $UrlRef whose value is an annotation expression.

It MAY contain annotations.

@@ -3652,156 +3652,156 @@

[OpenUI5]

Appendix B. Table of JSON Objects and Members

diff --git a/docs/odata-csdl-json/odata-csdl-json.md b/docs/odata-csdl-json/odata-csdl-json.md index 19eafa7cc..370d0d18b 100644 --- a/docs/odata-csdl-json/odata-csdl-json.md +++ b/docs/odata-csdl-json/odata-csdl-json.md @@ -696,7 +696,7 @@ combination of term and qualifier. ::: {.varjson .rep} -### Document Object +### Document Object A CSDL JSON document consists of a single JSON object. This document object MUST contain the member `$Version`. @@ -706,11 +706,11 @@ It also MAY contain members for schemas. If the CSDL JSON document is the metadata document of an OData service, the document object MUST contain the member `$EntityContainer`. -### `$Version` +### `$Version` The value of `$Version` is a string containing either `4.0` or `4.01`. -### `$EntityContainer` +### `$EntityContainer` The value of `$EntityContainer` is the namespace-qualified name of the entity container of that service. This is the only place where a model element MUST be referenced with its namespace-qualified name and use of the alias-qualified name is not allowed. ::: @@ -755,14 +755,14 @@ annotation is present, the `$schemaversion` system query option, defined referenced schema document. ::: {.varjson .rep} -### `$Reference` +### `$Reference` The value of `$Reference` is an object that contains one member per referenced CSDL document. The name of the pair is a URI for the referenced document. The URI MAY be relative to the document containing the `$Reference`. The value of each member is a reference object. -### Reference Object +### Reference Object The reference object MAY contain the members [`$Include`](#IncludedSchema) and @@ -829,19 +829,19 @@ An alias is only valid within the document in which it is declared; a referencing document may define its own aliases for included schemas. ::: {.varjson .rep} -### `$Include` +### `$Include` The value of `$Include` is an array. Array items are objects that MUST contain the member `$Namespace` and MAY contain the member `$Alias`. The item objects MAY contain [annotations](#Annotation). -### `$Namespace` +### `$Namespace` The value of `$Namespace` is a string containing the namespace of the included schema. -### `$Alias` +### `$Alias` The value of `$Alias` is a string containing the alias for the included schema. @@ -926,21 +926,21 @@ not interested in that particular target namespace, the consumer can opt not to inspect the referenced document. ::: {.varjson .rep} -### `$IncludeAnnotations` +### `$IncludeAnnotations` The value of `$IncludeAnnotations` is an array. Array items are objects that MUST contain the member `$TermNamespace` and MAY contain the members `$Qualifier` and `$TargetNamespace`. -### `$TermNamespace` +### `$TermNamespace` The value of `$TermNamespace` is a namespace. -### `$Qualifier` +### `$Qualifier` The value of `$Qualifier` is a simple identifier. -### `$TargetNamespace` +### `$TargetNamespace` The value of `$TargetNamespace` is a namespace. ::: @@ -1019,7 +1019,7 @@ The namespace MUST NOT be one of the reserved values `Edm`, `odata`, `System`, or `Transient`. ::: {.varjson .rep} -### Schema Object +### Schema Object A schema is represented as a member of the document object whose name is the schema namespace. Its value is an object that MAY contain the @@ -1059,7 +1059,7 @@ The alias MUST NOT be one of the reserved values `Edm`, `odata`, `System`, or `Transient`. ::: {.varjson .rep} -### `$Alias` +### `$Alias` The value of `$Alias` is a string containing the alias for the schema. ::: @@ -1085,7 +1085,7 @@ description for the schema ## 5.2 Annotations with External Targeting ::: {.varjson .rep} -### `$Annotations` +### `$Annotations` The value of `$Annotations` is an object with one member per [annotation target](#Target). The member name is a path identifying the [annotation @@ -1136,7 +1136,7 @@ the same name as one of the direct or indirect base types or derived types. ::: {.varjson .rep} -### Entity Type Object +### Entity Type Object An entity type is represented as a member of the schema object whose name is the unqualified name of the entity type and whose value is an @@ -1188,7 +1188,7 @@ An entity type MUST NOT introduce an inheritance cycle by specifying a base type. ::: {.varjson .rep} -### `$BaseType` +### `$BaseType` The value of `$BaseType` is the qualified name of the base type. ::: @@ -1233,7 +1233,7 @@ An abstract entity type MUST NOT inherit from a non-abstract entity type. ::: {.varjson .rep} -### `$Abstract` +### `$Abstract` The value of `$Abstract` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -1257,7 +1257,7 @@ properties on instances of any structured type, see [OData-Protocol](#ODataProtocol). ::: {.varjson .rep} -### `$OpenType` +### `$OpenType` The value of `$OpenType` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -1286,7 +1286,7 @@ annotation with term see [OData-VocCore](#ODataVocCore). ::: {.varjson .rep} -### `$HasStream` +### `$HasStream` The value of `$HasStream `is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -1370,7 +1370,7 @@ used in the query part of URLs, where paths to properties don't require special encoding and are a standard constituent of expressions anyway. ::: {.varjson .rep} -### `$Key` +### `$Key` The value of `$Key` is an array with one item per key property. @@ -1502,7 +1502,7 @@ Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case. ::: {.varjson .rep} -### Property Object +### Property Object Structural properties are represented as members of the object representing a structured type. The member name is the property name, @@ -1557,7 +1557,7 @@ term, defined in [OData-VocCore](#ODataVocCore), to specify that it supports inserting items into a specific ordinal position. ::: {.varjson .rep} -### `$Type` and `$Collection` +### `$Type` and `$Collection` For single-valued properties the value of `$Type` is the qualified name of the property's type. @@ -1596,7 +1596,7 @@ A Boolean value specifying whether the property can have the value `null`. ::: {.varjson .rep} -### `$Nullable` +### `$Nullable` The value of `$Nullable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -1622,7 +1622,7 @@ If no maximum length is specified, clients SHOULD expect arbitrary length. ::: {.varjson .rep} -### `$MaxLength` +### `$MaxLength` The value of `$MaxLength` is a positive integer. @@ -1657,7 +1657,7 @@ Note: duration properties supporting a granularity less than seconds see [OData-VocMeasures](#ODataVocMeasures). ::: {.varjson .rep} -### `$Precision` +### `$Precision` The value of `$Precision` is a number. @@ -1708,7 +1708,7 @@ scale added to the actual number of significant decimal digits, and client-provided values may have to be rounded before being stored. ::: {.varjson .rep} -### `$Scale` +### `$Scale` The value of `$Scale` is a number or a string with one of the symbolic values `floating` or `variable`. @@ -1788,7 +1788,7 @@ limited to the ASCII character set. If no value is specified, the `Unicode` facet defaults to `true`. ::: {.varjson .rep} -### `$Unicode` +### `$Unicode` The value of `$Unicode` is one of the Boolean literals `true` or `false`. Absence of the member means `true`. @@ -1809,7 +1809,7 @@ The valid values of the `SRID` facet and their meanings are as defined by the European Petroleum Survey Group [EPSG](#_EPSG). ::: {.varjson .rep} -### `$SRID` +### `$SRID` The value of `$SRID` is a string containing a number or the symbolic value `variable`. @@ -1825,7 +1825,7 @@ the body of a request or response. If no value is specified, the client SHOULD NOT assume a default value. ::: {.varjson .rep} -### `$DefaultValue` +### `$DefaultValue` The value of `$DefaultValue` is the type-specific JSON representation of the default value of the property, see @@ -1861,7 +1861,7 @@ Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case. ::: {.varjson .rep} -### Navigation Property Object +### Navigation Property Object Navigation properties are represented as members of the object representing a structured type. The member name is the property name, @@ -1944,7 +1944,7 @@ term, defined in [OData-VocCore](#ODataVocCore), to specify that it supports inserting items into a specific ordinal position. ::: {.varjson .rep} -### `$Type` and `$Collection` +### `$Type` and `$Collection` For single-valued navigation properties the value of `$Type` is the qualified name of the navigation property's type. @@ -1965,7 +1965,7 @@ Nullable MUST NOT be specified for a collection-valued navigation property, a collection is allowed to have zero items. ::: {.varjson .rep} -### `$Nullable` +### `$Nullable` The value of `$Nullable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2005,7 +2005,7 @@ navigation property is defined on a type derived from the type of the partner navigation property. ::: {.varjson .rep} -### `$Partner` +### `$Partner` The value of `$Partner` is a string containing the path to the partner navigation property. @@ -2080,7 +2080,7 @@ entity. This may lead to problems for clients if the contained entity can also be reached via a non-containment navigation path. ::: {.varjson .rep} -### `$ContainsTarget` +### `$ContainsTarget` The value of `$ContainsTarget` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2113,7 +2113,7 @@ property and the principal property are not nullable, then the dependent property MUST NOT be nullable. ::: {.varjson .rep} -### `$ReferentialConstraint` +### `$ReferentialConstraint` The value of `$ReferentialConstraint` is an object with one member per referential constraint. The member name is the path to the dependent @@ -2190,7 +2190,7 @@ If no on-delete action is specified, the action taken by the service is not predictable by the client and could vary per entity. ::: {.varjson .rep} -### `$OnDelete` +### `$OnDelete` The value of `$OnDelete` is a string with one of the values `Cascade`, `None`, `SetNull`, or `SetDefault`. @@ -2246,7 +2246,7 @@ the same name as one of the direct or indirect base types or derived types. ::: {.varjson .rep} -### Complex Type Object +### Complex Type Object A complex type is represented as a member of the schema object whose name is the unqualified name of the complex type and whose value is an @@ -2317,7 +2317,7 @@ The rules for annotations of derived complex types are described in [section 14.2](#Annotation). ::: {.varjson .rep} -### `$BaseType` +### `$BaseType` The value of `$BaseType` is the qualified name of the base type. ::: @@ -2329,7 +2329,7 @@ A complex type MAY indicate that it is abstract and cannot have instances. ::: {.varjson .rep} -### `$Abstract` +### `$Abstract` The value of `$Abstract` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2353,7 +2353,7 @@ properties on instances of any structured type, see [OData‑Protocol](#ODataProtocol). ::: {.varjson .rep} -### `$OpenType` +### `$OpenType` The value of `$OpenType` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2381,7 +2381,7 @@ Enumeration types marked as flags allow values that consist of more than one enumeration member at a time. ::: {.varjson .rep} -### Enumeration Type Object +### Enumeration Type Object An enumeration type is represented as a member of the schema object whose name is the unqualified name of the enumeration type and whose @@ -2424,7 +2424,7 @@ An enumeration type MAY specify one of `Edm.Byte`, `Edm.SByte`, If not explicitly specified, `Edm.Int32` is used as the underlying type. ::: {.varjson .rep} -### `$UnderlyingType` +### `$UnderlyingType` The value of `$UnderlyingType` is the qualified name of the underlying type. @@ -2440,7 +2440,7 @@ If not explicitly specified, only one enumeration type member MAY be selected simultaneously. ::: {.varjson .rep} -### `$IsFlags` +### `$IsFlags` The value of `$IsFlags` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2495,7 +2495,7 @@ selected members is the bitwise OR of the discrete numeric member values. ::: {.varjson .rep} -### Enumeration Member Object +### Enumeration Member Object Enumeration type members are represented as JSON object members, where the object member name is the enumeration member name and the object @@ -2549,7 +2549,7 @@ annotations with this term propagate to places where the annotated type definition is used, and whether they can be overridden. ::: {.varjson .rep} -### Type Definition Object +### Type Definition Object A type definition is represented as a member of the schema object whose name is the unqualified name of the type definition and whose value is @@ -2598,7 +2598,7 @@ The underlying type of a type definition MUST be a primitive type that MUST NOT be another type definition. ::: {.varjson .rep} -### `$UnderlyingType` +### `$UnderlyingType` The value of `$UnderlyingType` is the qualified name of the underlying type. @@ -2661,7 +2661,7 @@ schema. An unbound action MAY have the same name as a bound action. ::: {.varjson .rep} -### Action Overload Object +### Action Overload Object An action is represented as a member of the schema object whose name is the unqualified name of the action and whose value is an array. The @@ -2727,7 +2727,7 @@ disambiguate overloads for both bound and unbound functions, even if they specify the same underlying type. ::: {.varjson .rep} -### Function Overload Object +### Function Overload Object A function is represented as a member of the schema object whose name is the unqualified name of the function and whose value is an array. The @@ -2760,7 +2760,7 @@ Unbound functions are invoked as static functions within a common expression or from the entity container through a [function import](#FunctionImport). ::: {.varjson .rep} -### `$IsBound` +### `$IsBound` The value of `$IsBound` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2787,7 +2787,7 @@ type-cast segment names the [qualified name](#QualifiedName) of the entity type that should be returned from the type cast. ::: {.varjson .rep} -### `$EntitySetPath` +### `$EntitySetPath` The value of `$EntitySetPath` is a string containing the entity set path. @@ -2805,7 +2805,7 @@ composable function, and with system query options as appropriate for the type returned by the composable function. ::: {.varjson .rep} -### `$IsComposable` +### `$IsComposable` The value of `$IsComposable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2827,7 +2827,7 @@ For a collection-valued return type the facets apply to the items in the returned collection. ::: {.varjson .rep} -### `$ReturnType` +### `$ReturnType` The value of `$ReturnType` is an object. It MAY contain the members `$Type`, `$Collection`, `$Nullable`, [`$MaxLength`](#MaxLength), @@ -2836,7 +2836,7 @@ and [`$SRID`](#SRID). It also MAY contain [annotations](#Annotation). -### `$Type` and `$Collection` +### `$Type` and `$Collection` For single-valued return types the value of `$Type` is the qualified name of the returned type. @@ -2847,7 +2847,7 @@ present with the literal value `true`. Absence of the `$Type` member means the type is `Edm.String`. -### `$Nullable` +### `$Nullable` The value of `$Nullable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -2892,12 +2892,12 @@ the parameter value is a collection, the facets apply to the items in the collection. ::: {.varjson .rep} -### `$Parameter` +### `$Parameter` The value of `$Parameter` is an array. The array contains one object per parameter. -### Parameter Object +### Parameter Object A parameter object MUST contain the member `$Name`, and it MAY contain the members `$Type`, `$Collection`, `$Nullable`, @@ -2906,11 +2906,11 @@ the members `$Type`, `$Collection`, `$Nullable`, Parameter objects MAY also contain [annotations](#Annotation). -### `$Name` +### `$Name` The value of `$Name` is a string containing the parameter name. -### `$Type` and `$Collection` +### `$Type` and `$Collection` For single-valued parameters the value of `$Type` is the qualified name of the accepted type. @@ -2921,7 +2921,7 @@ present with the literal value `true`. Absence of the `$Type` member means the type is `Edm.String`. -### `$Nullable` +### `$Nullable` The value of `$Nullable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -3045,7 +3045,7 @@ import*](#ActionImport) is used to expose a function or action defined in an entity model as a top level resource. ::: {.varjson .rep} -### Entity Container Object +### Entity Container Object An entity container is represented as a member of the schema object whose name is the unqualified name of the entity container and whose @@ -3126,7 +3126,7 @@ containers. Clients should be prepared to process cycles introduced by extending entity containers. ::: {.varjson .rep} -### `$Extends` +### `$Extends` The value of `$Extends` is the qualified name of the entity container to be extended. @@ -3168,7 +3168,7 @@ Entity sets that cannot be queried without specifying additional query options SHOULD NOT be included in the service document. ::: {.varjson .rep} -### Entity Set Object +### Entity Set Object An entity set is represented as a member of the entity container object whose name is the name of the entity set and whose value is an object. @@ -3180,15 +3180,15 @@ It MAY contain the members `$IncludeInServiceDocument` and [`$NavigationPropertyBinding`](#NavigationPropertyBinding) as well as [annotations](#Annotation). -### `$Collection` +### `$Collection` The value of `$Collection` is the Booelan value `true`. -### `$Type` +### `$Type` The value of `$Type` is the qualified name of an entity type. -### `$IncludeInServiceDocument` +### `$IncludeInServiceDocument` The value of `$IncludeInServiceDocument` is one of the Boolean literals `true` or `false`. Absence of the member means `true`. @@ -3208,7 +3208,7 @@ A singleton MUST specify a type that MUST be an entity type in scope. A singleton MUST reference an instance its entity type. ::: {.varjson .rep} -### Singleton Object +### Singleton Object A singleton is represented as a member of the entity container object whose name is the name of the singleton and whose value is an object. @@ -3220,11 +3220,11 @@ It MAY contain the member [`$NavigationPropertyBinding`](#NavigationPropertyBinding) as well as [annotations](#Annotation). -### `$Type` +### `$Type` The value of `$Type` is the qualified name of an entity type. -### `$Nullable` +### `$Nullable` The value of `$Nullable` is one of the Boolean literals `true` or `false`. Absence of the member means `false`.In OData 4.0 responses this @@ -3304,7 +3304,7 @@ before ending in a containment navigation property, and there MUST NOT be any non-containment navigation properties prior to the final segment. ::: {.varjson .rep} -### `$NavigationPropertyBinding` +### `$NavigationPropertyBinding` The value of `$NavigationPropertyBinding` is an object. It consists of members whose name is the navigation property binding path and whose @@ -3378,7 +3378,7 @@ container. If a [target path](#TargetPath) is specified, it MUST resolve to an entity set in scope. ::: {.varjson .rep} -### Action Import Object +### Action Import Object An action import is represented as a member of the entity container object whose name is the name of the action import and whose value is an @@ -3390,12 +3390,12 @@ It MAY contain the member `$EntitySet`. It MAY also contain [annotations](#Annotation). -### `$Action` +### `$Action` The value of `$Action` is a string containing the qualified name of an unbound action. -### `$EntitySet` +### `$EntitySet` The value of `$EntitySet` is a string containing either the unqualified name of an entity set in the same entity container or a path to an @@ -3428,7 +3428,7 @@ is included in the service document. If not explicitly indicated, it is not included. ::: {.varjson .rep} -### Function Import Object +### Function Import Object A function import is represented as a member of the entity container object whose name is the name of the function import and whose value is @@ -3440,18 +3440,18 @@ It MAY contain the members `$EntitySet` and `$IncludeInServiceDocument`. It MAY also contain [annotations](#Annotation). -### `$Function` +### `$Function` The value of `$Function` is a string containing the qualified name of an unbound function. -### `$EntitySet` +### `$EntitySet` The value of `$EntitySet` is a string containing either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container. -### `$IncludeInServiceDocument` +### `$IncludeInServiceDocument` The value of `$IncludeInServiceDocument` is one of the Boolean literals `true` or `false`. Absence of the member means `false`. @@ -3568,7 +3568,7 @@ The term's type MUST be a type in scope, or a collection of a type in scope. ::: {.varjson .rep} -### Term Object +### Term Object A term is represented as a member of the schema object whose name is the unqualified name of the term and whose value is an object. @@ -3584,7 +3584,7 @@ It MAY contain the members `$Type`, `$Collection`, It MAY contain [annotations](#Annotation). -### `$Type` and `$Collection` +### `$Type` and `$Collection` For single-valued terms the value of `$Type` is the qualified name of the term's type. @@ -3595,7 +3595,7 @@ with the literal value `true`. Absence of the `$Type` member means the type is `Edm.String`. -### `$DefaultValue` +### `$DefaultValue` The value of `$DefaultValue` is the type-specific JSON representation of the default value of the term, see @@ -3617,7 +3617,7 @@ with the same qualifier, and so on until a term without a base term is reached. ::: {.varjson .rep} -### `$BaseTerm` +### `$BaseTerm` The value of `$BaseTerm` is the qualified name of the base term. ::: @@ -3670,7 +3670,7 @@ Symbolic Value|Model Element `UrlRef` |UrlRef annotation expression ::: {.varjson .rep} -### `$AppliesTo` +### `$AppliesTo` The value of `$AppliesTo` is an array whose items are strings containing symbolic values from the table above that identify model elements the @@ -3713,7 +3713,7 @@ an annotation value is a [path expression](#ValuePath) that refers to a property of the same or a related structured type. ::: {.varjson .rep} -### Annotation Member +### Annotation Member An annotation is represented as a member whose name consists of an at (`@`) character, followed by the qualified name of a term, optionally @@ -4596,7 +4596,7 @@ The value of the path expression is the instance or collection of instances identified by the path. ::: {.varjson .rep} -### `$Path` +### `$Path` Path expressions are represented as an object with a single member `$Path` whose value is a string containing a path. @@ -4649,7 +4649,7 @@ The other comparison operators require two operand expressions that evaluate to comparable values. ::: {.varjson .rep} -### `$And` and `$Or` +### `$And` and `$Or` The `And` and `Or` logical expressions are represented as an object with a single member whose value is an array with two annotation expressions. @@ -4657,14 +4657,14 @@ The member name is one of `$And`, or `$Or`. It MAY contain [annotations](#Annotation). -### `$Not` +### `$Not` Negation expressions are represented as an object with a single member `$Not` whose value is an annotation expression. It MAY contain [annotations](#Annotation). -### `$Eq`, `$Ne`, `$Gt`, `$Ge`, `$Lt`, `$Le`, `$Has`, and `$In` +### `$Eq`, `$Ne`, `$Gt`, `$Ge`, `$Lt`, `$Le`, `$Has`, and `$In` All comparison expressions are represented as an object with a single member whose value is an array with two annotation expressions. The @@ -4797,14 +4797,14 @@ to a numeric value. The other arithmetic operators require two operand expressions that evaluate to numeric values. ::: {.varjson .rep} -### `$Neg` +### `$Neg` Negation expressions are represented as an object with a single member `$Neg` whose value is an annotation expression. It MAY contain [annotations](#Annotation). -### `$Add`, `$Sub`, `$Mul`, `$Div`, `$DivBy`, and `$Mod` +### `$Add`, `$Sub`, `$Mul`, `$Div`, `$DivBy`, and `$Mod` These arithmetic expressions are represented as an object with as single member whose value is an array with two annotation expressions. The @@ -4895,7 +4895,7 @@ The operand expressions are used as parameters to the client-side function. ::: {.varjson .rep} -### `$Apply` +### `$Apply` Apply expressions are represented as an object with a member `$Apply` whose value is an array of annotation expressions, and a member @@ -5076,7 +5076,7 @@ rules as the `cast` canonical function defined in [OData-URL](#ODataURL). ::: {.varjson .rep} -### `$Cast` +### `$Cast` Cast expressions are represented as an object with a member `$Cast` whose value is an annotation expression, a member `$Type` whose value is @@ -5159,7 +5159,7 @@ third expression is present, nothing is added to the surrounding collection. ::: {.varjson .rep} -### `$If` +### `$If` Conditional expressions are represented as an object with a member `$If` whose value is an array of two or three annotation expressions. @@ -5194,7 +5194,7 @@ child expression is compatible with the specified type. It returns the specified type, and `false` otherwise. ::: {.varjson .rep} -### `$IsOf` +### `$IsOf` Is-of expressions are represented as an object with a member `$IsOf` whose value is an annotation expression, a member `$Type` whose value is @@ -5241,7 +5241,7 @@ identifier](#SimpleIdentifier) value as its name that MUST be unique within the schema containing the expression. ::: {.varjson .rep} -### `$LabeledElement` +### `$LabeledElement` Labeled element expressions are represented as an object with a member `$LabeledElement` whose value is an annotation expression, and a member @@ -5272,7 +5272,7 @@ in scope and returns the value of the identified labeled element expression as its value. ::: {.varjson .rep} -### `$LabeledElementReference` +### `$LabeledElementReference` Labeled element reference expressions are represented as an object with a member `$LabeledElementReference` whose value is a string containing @@ -5308,7 +5308,7 @@ Example 85: ::: ::: {.varjson .rep} -### `$Null` +### `$Null` Null expression containing [annotations](#Annotations) are represented as an object with a member `$Null` whose value is the literal `null`. @@ -5419,7 +5419,7 @@ expression MUST be type compatible with the type expected by the surrounding expression. ::: {.varjson .rep} -### `$UrlRef` +### `$UrlRef` URL reference expressions are represented as an object with a single member `$UrlRef` whose value is an annotation expression. @@ -5948,121 +5948,121 @@ https://openui5.hana.ondemand.com/1.40.10/#docs/guide/87aac894a40640f89920d7b2a4 # Appendix B. Table of JSON Objects and Members ::: toc -- [Document Object](#DocumentObject1) - - [`$Version`](#Version1.1) - - [`$EntityContainer`](#EntityContainer1.2) - - [`$Reference`](#Reference1.3) -- [Reference Object](#ReferenceObject2) - - [`$Include`](#Include2.1) - - [`$Namespace`](#Namespace2.2) - - [`$Alias`](#Alias2.3) - - [`$IncludeAnnotations`](#IncludeAnnotations2.4) - - [`$TermNamespace`](#TermNamespace2.5) - - [`$Qualifier`](#Qualifier2.6) - - [`$TargetNamespace`](#TargetNamespace2.7) -- [Schema Object](#SchemaObject3) - - [`$Alias`](#Alias3.1) - - [`$Annotations`](#Annotations3.2) -- [Entity Type Object](#EntityTypeObject4) - - [`$BaseType`](#BaseType4.1) - - [`$Abstract`](#Abstract4.2) - - [`$OpenType`](#OpenType4.3) - - [`$HasStream`](#HasStream4.4) - - [`$Key`](#Key4.5) -- [Property Object](#PropertyObject5) - - [`$Type`](#Type5.1) - - [`$Collection`](#Collection5.2) - - [`$Nullable`](#Nullable5.3) - - [`$MaxLength`](#MaxLength5.4) - - [`$Precision`](#Precision5.5) - - [`$Scale`](#Scale5.6) - - [`$Unicode`](#Unicode5.7) - - [`$SRID`](#SRID5.8) - - [`$DefaultValue`](#DefaultValue5.9) -- [Navigation Property Object](#NavigationPropertyObject6) - - [`$Type`](#Type6.1) - - [`$Collection`](#Collection6.2) - - [`$Nullable`](#Nullable6.3) - - [`$Partner`](#Partner6.4) - - [`$ContainsTarget`](#ContainsTarget6.5) - - [`$ReferentialConstraint`](#ReferentialConstraint6.6) - - [`$OnDelete`](#OnDelete6.7) -- [Complex Type Object](#ComplexTypeObject7) - - [`$BaseType`](#BaseType7.1) - - [`$Abstract`](#Abstract7.2) - - [`$OpenType`](#OpenType7.3) -- [Enumeration Type Object](#EnumerationTypeObject8) - - [`$UnderlyingType`](#UnderlyingType8.1) - - [`$IsFlags`](#IsFlags8.2) -- [Enumeration Member Object](#EnumerationMemberObject9) -- [Type Definition Object](#TypeDefinitionObject10) - - [`$UnderlyingType`](#UnderlyingType10.1) -- [Action Overload Object](#ActionOverloadObject11) -- [Function Overload Object](#FunctionOverloadObject12) - - [`$IsBound`](#IsBound12.1) - - [`$EntitySetPath`](#EntitySetPath12.2) - - [`$IsComposable`](#IsComposable12.3) - - [`$ReturnType`](#ReturnType12.4) - - [`$Type`](#Type12.5) - - [`$Collection`](#Collection12.6) - - [`$Nullable`](#Nullable12.7) - - [`$Parameter`](#Parameter12.8) -- [Parameter Object](#ParameterObject13) - - [`$Name`](#Name13.1) - - [`$Type`](#Type13.2) - - [`$Collection`](#Collection13.3) - - [`$Nullable`](#Nullable13.4) -- [Entity Container Object](#EntityContainerObject14) - - [`$Extends`](#Extends14.1) -- [Entity Set Object](#EntitySetObject15) - - [`$Collection`](#Collection15.1) - - [`$Type`](#Type15.2) - - [`$IncludeInServiceDocument`](#IncludeInServiceDocument15.3) -- [Singleton Object](#SingletonObject16) - - [`$Type`](#Type16.1) - - [`$Nullable`](#Nullable16.2) - - [`$NavigationPropertyBinding`](#NavigationPropertyBinding16.3) -- [Action Import Object](#ActionImportObject17) - - [`$Action`](#Action17.1) - - [`$EntitySet`](#EntitySet17.2) -- [Function Import Object](#FunctionImportObject18) - - [`$Function`](#Function18.1) - - [`$EntitySet`](#EntitySet18.2) - - [`$IncludeInServiceDocument`](#IncludeInServiceDocument18.3) -- [Term Object](#TermObject19) - - [`$Type`](#Type19.1) - - [`$Collection`](#Collection19.2) - - [`$DefaultValue`](#DefaultValue19.3) - - [`$BaseTerm`](#BaseTerm19.4) - - [`$AppliesTo`](#AppliesTo19.5) -- [Annotation Member](#AnnotationMember20) - - [`$Path`](#Path20.1) - - [`$And`](#And20.2) - - [`$Or`](#Or20.3) - - [`$Not`](#Not20.4) - - [`$Eq`](#Eq20.5) - - [`$Ne`](#Ne20.6) - - [`$Gt`](#Gt20.7) - - [`$Ge`](#Ge20.8) - - [`$Lt`](#Lt20.9) - - [`$Le`](#Le20.10) - - [`$Has`](#Has20.11) - - [`$In`](#In20.12) - - [`$Neg`](#Neg20.13) - - [`$Add`](#Add20.14) - - [`$Sub`](#Sub20.15) - - [`$Mul`](#Mul20.16) - - [`$Div`](#Div20.17) - - [`$DivBy`](#DivBy20.18) - - [`$Mod`](#Mod20.19) - - [`$Apply`](#Apply20.20) - - [`$Cast`](#Cast20.21) - - [`$If`](#If20.22) - - [`$IsOf`](#IsOf20.23) - - [`$LabeledElement`](#LabeledElement20.24) - - [`$LabeledElementReference`](#LabeledElementReference20.25) - - [`$Null`](#Null20.26) - - [`$UrlRef`](#UrlRef20.27) +- [Document Object](#DocumentObject.1) + - [`$Version`](#Version.1.1) + - [`$EntityContainer`](#EntityContainer.1.2) + - [`$Reference`](#Reference.1.3) +- [Reference Object](#ReferenceObject.2) + - [`$Include`](#Include.2.1) + - [`$Namespace`](#Namespace.2.2) + - [`$Alias`](#Alias.2.3) + - [`$IncludeAnnotations`](#IncludeAnnotations.2.4) + - [`$TermNamespace`](#TermNamespace.2.5) + - [`$Qualifier`](#Qualifier.2.6) + - [`$TargetNamespace`](#TargetNamespace.2.7) +- [Schema Object](#SchemaObject.3) + - [`$Alias`](#Alias.3.1) + - [`$Annotations`](#Annotations.3.2) +- [Entity Type Object](#EntityTypeObject.4) + - [`$BaseType`](#BaseType.4.1) + - [`$Abstract`](#Abstract.4.2) + - [`$OpenType`](#OpenType.4.3) + - [`$HasStream`](#HasStream.4.4) + - [`$Key`](#Key.4.5) +- [Property Object](#PropertyObject.5) + - [`$Type`](#Type.5.1) + - [`$Collection`](#Collection.5.2) + - [`$Nullable`](#Nullable.5.3) + - [`$MaxLength`](#MaxLength.5.4) + - [`$Precision`](#Precision.5.5) + - [`$Scale`](#Scale.5.6) + - [`$Unicode`](#Unicode.5.7) + - [`$SRID`](#SRID.5.8) + - [`$DefaultValue`](#DefaultValue.5.9) +- [Navigation Property Object](#NavigationPropertyObject.6) + - [`$Type`](#Type.6.1) + - [`$Collection`](#Collection.6.2) + - [`$Nullable`](#Nullable.6.3) + - [`$Partner`](#Partner.6.4) + - [`$ContainsTarget`](#ContainsTarget.6.5) + - [`$ReferentialConstraint`](#ReferentialConstraint.6.6) + - [`$OnDelete`](#OnDelete.6.7) +- [Complex Type Object](#ComplexTypeObject.7) + - [`$BaseType`](#BaseType.7.1) + - [`$Abstract`](#Abstract.7.2) + - [`$OpenType`](#OpenType.7.3) +- [Enumeration Type Object](#EnumerationTypeObject.8) + - [`$UnderlyingType`](#UnderlyingType.8.1) + - [`$IsFlags`](#IsFlags.8.2) +- [Enumeration Member Object](#EnumerationMemberObject.9) +- [Type Definition Object](#TypeDefinitionObject.10) + - [`$UnderlyingType`](#UnderlyingType.10.1) +- [Action Overload Object](#ActionOverloadObject.11) +- [Function Overload Object](#FunctionOverloadObject.12) + - [`$IsBound`](#IsBound.12.1) + - [`$EntitySetPath`](#EntitySetPath.12.2) + - [`$IsComposable`](#IsComposable.12.3) + - [`$ReturnType`](#ReturnType.12.4) + - [`$Type`](#Type.12.5) + - [`$Collection`](#Collection.12.6) + - [`$Nullable`](#Nullable.12.7) + - [`$Parameter`](#Parameter.12.8) +- [Parameter Object](#ParameterObject.13) + - [`$Name`](#Name.13.1) + - [`$Type`](#Type.13.2) + - [`$Collection`](#Collection.13.3) + - [`$Nullable`](#Nullable.13.4) +- [Entity Container Object](#EntityContainerObject.14) + - [`$Extends`](#Extends.14.1) +- [Entity Set Object](#EntitySetObject.15) + - [`$Collection`](#Collection.15.1) + - [`$Type`](#Type.15.2) + - [`$IncludeInServiceDocument`](#IncludeInServiceDocument.15.3) +- [Singleton Object](#SingletonObject.16) + - [`$Type`](#Type.16.1) + - [`$Nullable`](#Nullable.16.2) + - [`$NavigationPropertyBinding`](#NavigationPropertyBinding.16.3) +- [Action Import Object](#ActionImportObject.17) + - [`$Action`](#Action.17.1) + - [`$EntitySet`](#EntitySet.17.2) +- [Function Import Object](#FunctionImportObject.18) + - [`$Function`](#Function.18.1) + - [`$EntitySet`](#EntitySet.18.2) + - [`$IncludeInServiceDocument`](#IncludeInServiceDocument.18.3) +- [Term Object](#TermObject.19) + - [`$Type`](#Type.19.1) + - [`$Collection`](#Collection.19.2) + - [`$DefaultValue`](#DefaultValue.19.3) + - [`$BaseTerm`](#BaseTerm.19.4) + - [`$AppliesTo`](#AppliesTo.19.5) +- [Annotation Member](#AnnotationMember.20) + - [`$Path`](#Path.20.1) + - [`$And`](#And.20.2) + - [`$Or`](#Or.20.3) + - [`$Not`](#Not.20.4) + - [`$Eq`](#Eq.20.5) + - [`$Ne`](#Ne.20.6) + - [`$Gt`](#Gt.20.7) + - [`$Ge`](#Ge.20.8) + - [`$Lt`](#Lt.20.9) + - [`$Le`](#Le.20.10) + - [`$Has`](#Has.20.11) + - [`$In`](#In.20.12) + - [`$Neg`](#Neg.20.13) + - [`$Add`](#Add.20.14) + - [`$Sub`](#Sub.20.15) + - [`$Mul`](#Mul.20.16) + - [`$Div`](#Div.20.17) + - [`$DivBy`](#DivBy.20.18) + - [`$Mod`](#Mod.20.19) + - [`$Apply`](#Apply.20.20) + - [`$Cast`](#Cast.20.21) + - [`$If`](#If.20.22) + - [`$IsOf`](#IsOf.20.23) + - [`$LabeledElement`](#LabeledElement.20.24) + - [`$LabeledElementReference`](#LabeledElementReference.20.25) + - [`$Null`](#Null.20.26) + - [`$UrlRef`](#UrlRef.20.27) ::: ------- diff --git a/docs/odata-csdl-xml/odata-csdl-xml.html b/docs/odata-csdl-xml/odata-csdl-xml.html index 3192e4162..53cd0886d 100644 --- a/docs/odata-csdl-xml/odata-csdl-xml.html +++ b/docs/odata-csdl-xml/odata-csdl-xml.html @@ -693,12 +693,12 @@

4
-

Element edmx:Edmx

+

Element edmx:Edmx

The edmx:Edmx element is the root element of a CSDL XML document. It MUST contain the Version attribute and it MUST contain exactly one edmx:DataServices element.

It MAY contain edmx:Reference elements to reference other CSDL documents.

-

Attribute Version

+

Attribute Version

The Version attribute specifies the OData protocol version of the service. For OData 4.0 responses the value of this attribute MUST be 4.0. For OData 4.01 responses the value of this attribute MUST be 4.01. Services MUST return an OData 4.0 response if the request was made with an OData-MaxVersion header with a value of 4.0.

-

Element edmx:DataServices

+

Element edmx:DataServices

The edmx:DataServices element MUST contain one or more edm:Schema elements which define the schemas exposed by the OData service.

@@ -716,11 +716,11 @@

4.1 ReferenceA reference MAY be annotated.

The Core.SchemaVersion annotation, defined in OData-VocCore, MAY be used to indicate a particular version of the referenced document. If the Core.SchemaVersion annotation is present, the $schemaversion system query option, defined OData-Protocol, SHOULD be used when retrieving the referenced schema document.

-

Element edmx:Reference

+

Element edmx:Reference

The edmx:Reference element specifies external CSDL documents referenced by the referencing document. The child elements edmx:Include and edmx:IncludeAnnotations specify which parts of the referenced document are available for use in the referencing document.

The edmx:Reference element MUST contain the Uri attribute, and it MUST contain at least one edmx:Include or edmx:IncludeAnnotations child element.

It MAY contain edm:Annotation elements.

-

Attribute Uri

+

Attribute Uri

The value of Uri is an absolute or relative URI; relative URIs are relative to the xml:base attribute, see XML-Base.

@@ -751,12 +751,12 @@

4.2

The alias MUST NOT be one of the reserved values Edm, odata, System, or Transient.

An alias is only valid within the document in which it is declared; a referencing document may define its own aliases for included schemas.

-

Element edmx:Include

+

Element edmx:Include

The edmx:Include element specifies a schema to include from the referenced CSDL document. It MUST provide the Namespace attribute and it MAY provide the Alias attribute.

It MAY contain edm:Annotation elements.

-

Attribute Namespace

+

Attribute Namespace

The value of Namespace is the namespace of a schema defined in the referenced CSDL document.

-

Attribute Alias

+

Attribute Alias

The value of Alias is a simple identifier that can be used in qualified names instead of the namespace.

@@ -786,14 +786,14 @@

target MAY be specified. If a target namespace is specified, only those annotations which apply a term form the specified term namespace to a model element of the target namespace (with the specified qualifier, if present) SHOULD be included. If no target namespace is specified, all annotations within the referenced document from the specified term namespace (taking into account the qualifier, if present) SHOULD be included.

The target namespace also provides consumers insight about what namespaces are present in the referenced document. If the consumer is not interested in that particular target namespace, the consumer can opt not to inspect the referenced document.

-

Element edmx:IncludeAnnotations

+

Element edmx:IncludeAnnotations

The edmx:IncludeAnnotations element specifies the annotations to include from the referenced CSDL document. If no edmx:IncludeAnnotations element is specified, a client MAY ignore all annotations in the referenced document that are not explicitly used in an edm:Path expression of the referencing document.

The edmx:IncludeAnnotations element MUST provide the TermNamespace attribute, and it MAY provide the Qualifier and TargetNamespace attribute.

-

Attribute TermNamespace

+

Attribute TermNamespace

The value of TermNamespace is a namespace.

-

Attribute Qualifier

+

Attribute Qualifier

The value of Qualifier is a simple identifier.

-

Attribute TargetNamespace

+

Attribute TargetNamespace

The value of TargetNamespace is a namespace.

@@ -831,10 +831,10 @@

5 Schema

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

The namespace MUST NOT be one of the reserved values Edm, odata, System, or Transient.

-

Element edm:Schema

+

Element edm:Schema

The edm:Schema element defines a schema. It MUST contain the Namespace attribute and it MAY contain the Alias attribute.

It MAY contain elements edm:Action, edm:Annotations, edm:Annotation, edm:ComplexType, edm:EntityContainer, edm:EntityType, edm:EnumType, edm:Function, edm:Term, or edm:TypeDefinition.

-

Attribute Namespace

+

Attribute Namespace

The value of Namespace is the namespace of the schema

5.1 Alias

@@ -843,7 +843,7 @@

5.1 Alias

Aliases are document-global, so all schemas defined within or included into a document MUST have different aliases, and aliases MUST differ from the namespaces of all schemas defined within or included into a document. Aliases defined by a schema can be used throughout the containing document and are not restricted to the schema that defines them.

The alias MUST NOT be one of the reserved values Edm, odata, System, or Transient.

-

Attribute Alias

+

Attribute Alias

The value of Alias is a simple identifier.

@@ -855,12 +855,12 @@

Attribute Alias

5.2 Annotations with External Targeting

-

Element edm:Annotations

+

Element edm:Annotations

The edm:Annotations element is used to apply a group of annotations to a single model element. It MUST contain the Target attribute and it MAY contain the Qualifier attribute.

It MUST contain at least one edm:Annotation element.

-

Attribute Target

+

Attribute Target

The value of Target is a path expression identifying the annotation target. It MUST resolve to a model element in scope.

-

Attribute Qualifier

+

Attribute Qualifier

The value of Qualifier is a simple identifier.

@@ -877,12 +877,12 @@

6 Entity Type

An entity type can define two types of properties. A structural property is a named reference to a primitive, complex, or enumeration type, or a collection of primitive, complex, or enumeration types. A navigation property is a named reference to another entity type or collection of entity types.

All properties MUST have a unique name within an entity type. Properties MUST NOT have the same name as the declaring entity type. They MAY have the same name as one of the direct or indirect base types or derived types.

-

Element edm:EntityType

+

Element edm:EntityType

The edm:EntityType element MUST contain the Name attribute, and it MAY contain the BaseType, Abstract, OpenType, and HasStream attributes.

It MAY contain edm:Property and edm:NavigationProperty elements describing the properties of the entity type.

It MAY contain one edm:Key element.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the entity type's name.

@@ -902,7 +902,7 @@

key as well as structural and navigation properties of its base type.

An entity type MUST NOT introduce an inheritance cycle by specifying a base type.

-

Attribute BaseType

+

Attribute BaseType

The value of BaseType is the qualified name of the base type.

@@ -920,7 +920,7 @@

key or derive from a base type with a defined key.

An abstract entity type MUST NOT inherit from a non-abstract entity type.

-

Attribute Abstract

+

Attribute Abstract

The value of Abstract is one of the Boolean literals true or false. Absence of the attribute means false.

6.3 Open Entity Type

@@ -928,7 +928,7 @@

6.3

An entity type derived from an open entity type MUST indicate that it is also open.

Note: structural and navigation properties MAY be returned by the service on instances of any structured type, whether or not the type is marked as open. Clients MUST always be prepared to deal with additional properties on instances of any structured type, see OData-Protocol.

-

Attribute OpenType

+

Attribute OpenType

The value of OpenType is one of the Boolean literals true or false. Absence of the attribute means false.

6.4 Media Entity Type

@@ -936,7 +936,7 @@

An entity type derived from a media entity type MUST indicate that it is also a media entity type.

Media entity types MAY specify a list of acceptable media types using an annotation with term Core.AcceptableMediaTypes, see OData-VocCore.

-

Attribute HasStream

+

Attribute HasStream

The value of HasStream is one of the Boolean literals true or false. Absence of the attribute means false.

6.5 Key

@@ -968,13 +968,13 @@

6.5 Key

An alias MUST NOT be defined if the key property is a primitive property of the entity type itself.

For key properties that are a property of a complex or navigation property, the alias MUST be used in the key predicate of URLs instead of the path to the property because the required percent-encoding of the forward slash separating segments of the path to the property would make URL construction and parsing rather complicated. The alias MUST NOT be used in the query part of URLs, where paths to properties don't require special encoding and are a standard constituent of expressions anyway.

-

Element edm:Key

+

Element edm:Key

The edm:Key element MUST contain at least one edm:PropertyRef element.

-

Element edm:PropertyRef

+

Element edm:PropertyRef

The edm:PropertyRef element MUST contain the Name attribute and MAY contain the Alias attribute.

-

Attribute Name

+

Attribute Name

The value of Name is a path expression leading to a primitive property. The names of the properties in the path are joined together by forward slashes.

-

Attribute Alias

+

Attribute Alias

The value of Alias is a simple identifier.

@@ -1034,10 +1034,10 @@

simple identifier. It is used when referencing, serializing or deserializing the property. It MUST be unique within the set of structural and navigation properties of the declaring structured type, and MUST NOT match the name of any navigation property in any of its base types. If a structural property with the same name is defined in any of this type's base types, then the property's type MUST be a type derived from the type specified for the property of the base type and constrains this property to be of the specified subtype for instances of this structured type. The name MUST NOT match the name of any structural or navigation property of any of this type's base types for OData 4.0 responses.

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

-

Element edm:Property

+

Element edm:Property

The edm:Property element MUST contain the Name and the Type attribute, and it MAY contain the facet attributes Nullable, MaxLength, Unicode, Precision, Scale, SRID, and DefaultValue.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the property's name.

@@ -1054,7 +1054,7 @@

7.1 Type

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

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

-

Attribute Type

+

Attribute Type

For single-valued properties the value of Type is the qualified name of the property's type.

For collection-valued properties the value of Type is the character sequence Collection( followed by the qualified name of the property's item type, followed by a closing parenthesis ).

@@ -1068,7 +1068,7 @@

7.2 Type Facets<

7.2.1 Nullable

A Boolean value specifying whether the property can have the value null.

-

Attribute Nullable

+

Attribute Nullable

The value of Nullable is one of the Boolean literals true or false.

For single-valued properties the value true means that the property allows the null value.

For collection-valued properties the property value will always be a collection that MAY be empty. In this case the Nullable attribute applies to items of the collection and specifies whether the collection MAY contain null values.

@@ -1080,7 +1080,7 @@

7.2.2 MaxLength

A positive integer value specifying the maximum length of a binary, stream or string value. For binary or stream values this is the octet length of the binary data, for string values it is the character length (number of code points for Unicode).

If no maximum length is specified, clients SHOULD expect arbitrary length.

-

Attribute MaxLength

+

Attribute MaxLength

The value of MaxLength is a positive integer or the symbolic value max as a shorthand for the maximum length supported for the type by the service.

Note: the symbolic value max is only allowed in OData 4.0 responses; it is deprecated in OData 4.01. While clients MUST be prepared for this symbolic value, OData 4.01 and greater services MUST NOT return the symbolic value max and MAY instead specify the concrete maximum length supported for the type by the service or omit the attribute entirely.

@@ -1090,7 +1090,7 @@

7.2.3 Precision

Note: service authors SHOULD be aware that some clients are unable to support a precision greater than 28 for decimal properties and 7 for temporal properties. Client developers MUST be aware of the potential for data loss when round-tripping values of greater precision. Updating via PATCH and exclusively specifying modified properties will reduce the risk for unintended data loss.

Note: duration properties supporting a granularity less than seconds (e.g. minutes, hours, days) can be annotated with term Measures.DurationGranularity, see OData-VocMeasures.

-

Attribute Precision

+

Attribute Precision

The value of Precision is a number.

If not specified for a decimal property, the decimal property has arbitrary precision.

If not specified for a temporal property, the temporal property has a precision of zero.

@@ -1108,7 +1108,7 @@

7.2.4 Scale

The value of Scale MUST be less than or equal to the value of Precision.

Note: if the underlying data store allows negative scale, services may use a Precision with the absolute value of the negative scale added to the actual number of significant decimal digits, and client-provided values may have to be rounded before being stored.

-

Attribute Scale

+

Attribute Scale

The value of Scale is a number or one of the symbolic values floating or variable.

Services SHOULD use lower-case values; clients SHOULD accept values in a case-insensitive manner.

If not specified, the Scale facet defaults to zero.

@@ -1133,7 +1133,7 @@

7.2.5 Unicode

For a string property the Unicode facet indicates whether the property might contain and accept string values with Unicode characters (code points) beyond the ASCII character set. The value false indicates that the property will only contain and accept string values with characters limited to the ASCII character set.

If no value is specified, the Unicode facet defaults to true.

-

Attribute Unicode

+

Attribute Unicode

The value of Unicode is one of the Boolean literals true or false. Absence of the attribute means true.

7.2.6 SRID

@@ -1141,14 +1141,14 @@

7.2.6 SRID

The value of the SRID facet MUST be a non-negative integer or the special value variable. If no value is specified, the facet defaults to 0 for Geometry types or 4326 for Geography types.

The valid values of the SRID facet and their meanings are as defined by the European Petroleum Survey Group EPSG.

-

Attribute SRID

+

Attribute SRID

The value of SRID is a number or the symbolic value variable.

7.2.7 Default Value

A primitive or enumeration property MAY define a default value that is used if the property is not explicitly represented in an annotation or the body of a request or response.

If no value is specified, the client SHOULD NOT assume a default value.

-

Attribute DefaultValue

+

Attribute DefaultValue

Default values of type Edm.String MUST be represented according to the XML escaping rules for character data in attribute values. Values of other primitive types MUST be represented according to the appropriate alternative in the primitiveValue rule defined in OData-ABNF, i.e. Edm.Binary as binaryValue, Edm.Boolean as booleanValue etc.


@@ -1157,11 +1157,11 @@

simple identifier. It is used when referencing, serializing or deserializing the navigation property. It MUST be unique within the set of structural and navigation properties of the declaring structured type, and MUST NOT match the name of any structural property in any of its base types. If a navigation property with the same name is defined in any of this type's base types, then the navigation property's type MUST be a type derived from the type specified for the navigation property of the base type, and constrains this navigation property to be of the specified subtype for instances of this structured type. The name MUST NOT match the name of any structural or navigation property of any of this type's base types for OData 4.0 responses.

Names are case-sensitive, but service authors SHOULD NOT choose names that differ only in case.

-

Element edm:NavigationProperty

+

Element edm:NavigationProperty

The edm:NavigationProperty element MUST contain the Name and Type attributes, and it MAY contain the attributes Nullable, Partner, and ContainsTarget.

It MAY contain child elements edm:ReferentialConstraint and at most one child element edm:OnDelete.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the navigation property's name.

@@ -1187,7 +1187,7 @@

Core.Ordered term, defined in OData-VocCore, to specify that it supports a stable ordering.

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

-

Attribute Type

+

Attribute Type

For single-valued navigation properties the value of Type is the qualified name of the navigation property's type.

For collection-valued navigation properties the value of Type is the character sequence Collection( followed by the qualified name of the navigation property's item type, followed by a closing parenthesis ).

@@ -1195,7 +1195,7 @@

A Boolean value specifying whether the declaring type MAY have no related entity. If false, instances of the declaring structured type MUST always have a related entity.

Nullable MUST NOT be specified for a collection-valued navigation property, a collection is allowed to have zero items.

-

Attribute Nullable

+

Attribute Nullable

The value of Nullable is one of the Boolean literals true or false. Absence of the attribute means true.

8.3 Partner Navigation Property

@@ -1205,7 +1205,7 @@

If no partner navigation property is specified, no assumptions can be made as to whether one of the navigation properties on the target type will lead back to the source entity.

If a partner navigation property is specified, this partner navigation property MUST either specify the current navigation property as its partner to define a bi-directional relationship or it MUST NOT specify a partner navigation property. The latter can occur if the partner navigation property is defined on a complex type, or if the current navigation property is defined on a type derived from the type of the partner navigation property.

-

Attribute Partner

+

Attribute Partner

The value of Partner is the path to the of the partner navigation property.

8.4 Containment Navigation Property

@@ -1222,7 +1222,7 @@

-

Attribute ContainsTarget

+

Attribute ContainsTarget

The value of ContainsTarget is one of the Boolean literals true or false. Absence of the attribute means false.

8.5 Referential Constraint

@@ -1232,12 +1232,12 @@

-

Element edm:ReferentialConstraint

+

Element edm:ReferentialConstraint

The edm:ReferentialConstraint element MUST contain the attributes Property and ReferencedProperty.

It MAY contain edm:Annotation elements.

-

Attribute Property

+

Attribute Property

The Property attribute specifies the property that takes part in the referential constraint on the dependent structured type. Its value MUST be a path expression resolving to a property of the dependent structured type itself or to a property of a complex property (recursively) of the dependent structured type. The names of the properties in the path are joined together by forward slashes. The path is relative to the dependent structured type declaring the navigation property.

-

Attribute ReferencedProperty

+

Attribute ReferencedProperty

The ReferencedProperty attribute specifies the corresponding property of the principal entity type. Its value MUST be a path expression resolving to a property of the principal entity type itself or to a property of a complex property (recursively) of the principal entity type that MUST have the same type as the property of the dependent entity type. The path is relative to the entity type that is the target of the navigation property.

@@ -1275,10 +1275,10 @@

8.6

If no on-delete action is specified, the action taken by the service is not predictable by the client and could vary per entity.

-

Element edm:OnDelete

+

Element edm:OnDelete

The edm:OnDelete element MUST contain the Action attribute.

It MAY contain edm:Annotation elements.

-

Attribute Action

+

Attribute Action

The value of Action is one of the values Cascade, None, SetNull, or SetDefault.

@@ -1300,11 +1300,11 @@

9 Complex Type

A complex type can define two types of properties. A structural property is a named reference to a primitive, complex, or enumeration type, or a collection of primitive, complex, or enumeration types. A navigation property is a named reference to an entity type or a collection of entity types.

All properties MUST have a unique name within a complex type. Properties MUST NOT have the same name as the declaring complex type. They MAY have the same name as one of the direct or indirect base types or derived types.

-

Element edm:ComplexType

+

Element edm:ComplexType

The edm:ComplexType element MUST contain the Name attribute, and it MAY contain the BaseType, Abstract, and OpenType attributes.

It MAY contain edm:Property and edm:NavigationProperty elements describing the properties of the complex type.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the complex type's name.

@@ -1332,13 +1332,13 @@

section 14.2.

-

Attribute BaseType

+

Attribute BaseType

The value of BaseType is the qualified name of the base type.

9.2 Abstract Complex Type

A complex type MAY indicate that it is abstract and cannot have instances.

-

Attribute Abstract

+

Attribute Abstract

The value of Abstract is one of the Boolean literals true or false. Absence of the attribute means false.

9.3 Open Complex Type

@@ -1346,7 +1346,7 @@

A complex type derived from an open complex type MUST indicate that it is also open.

Note: structural and navigation properties MAY be returned by the service on instances of any structured type, whether or not the type is marked as open. Clients MUST always be prepared to deal with additional properties on instances of any structured type, see OData‑Protocol.

-

Attribute OpenType

+

Attribute OpenType

The value of OpenType is one of the Boolean literals true or false. Absence of the attribute means false.


@@ -1356,11 +1356,11 @@

1

Although enumeration types have an underlying numeric value, the preferred representation for an enumeration value is the member name. Discrete sets of numeric values should be represented as numeric values annotated with the AllowedValues annotation defined in OData-VocCore.

Enumeration types marked as flags allow values that consist of more than one enumeration member at a time.

-

Element edm:EnumType

+

Element edm:EnumType

The edm:EnumType element MUST contain the Name attribute, and it MAY contain the UnderlyingType and IsFlags attributes.

It MUST contain one or more edm:Member elements defining the members of the enumeration type.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the enumeration type's name.

@@ -1376,14 +1376,14 @@

-

Attribute UnderlyingType

+

Attribute UnderlyingType

The value of UnderlyingType is the qualified name of the underlying type.

10.2 Flags Enumeration Type

An enumeration type MAY indicate that the enumeration type allows multiple members to be selected simultaneously.

If not explicitly specified, only one enumeration type member MAY be selected simultaneously.

-

Attribute IsFlags

+

Attribute IsFlags

The value of IsFlags is one of the Boolean literals true or false. Absence of the attribute means false.

@@ -1411,12 +1411,12 @@

-

Element edm:Member

+

Element edm:Member

The edm:Member element MUST contain the Name attribute and it MAY contain the Value attribute.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the enumeration member's name.

-

Attribute Value

+

Attribute Value

If the IsFlags attribute has a value of false, either all members MUST specify an integer value for the Value attribute, or all members MUST NOT specify a value for the Value attribute. If no values are specified, the members are assigned consecutive integer values in the order of their appearance, starting with zero for the first member. Client libraries MUST preserve elements in document order.

If the IsFlags attribute has a value of true, a non-negative integer value MUST be specified for the Value attribute. A combined value is equivalent to the bitwise OR of the discrete values.

@@ -1444,10 +1444,10 @@

11 T

Type definitions can be used wherever a primitive type is used (other than as the underlying type in a new type definition) and are type-comparable with their underlying types and any type definitions defined using the same underlying type.

It is up to the definition of a term to specify whether and how annotations with this term propagate to places where the annotated type definition is used, and whether they can be overridden.

-

Element edm:TypeDefinition

+

Element edm:TypeDefinition

The edm:TypeDefinition element MUST contain the Name and UnderlyingType attributes.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the type definition's name.

@@ -1470,7 +1470,7 @@

11.1 Underlying Primitive Type

The underlying type of a type definition MUST be a primitive type that MUST NOT be another type definition.

-

Attribute UnderlyingType

+

Attribute UnderlyingType

The value of UnderlyingType is the qualified name of the underlying type.

The type definition MAY specify facets applicable to the underlying type. Possible facets are: MaxLength, Unicode, Precision, Scale, or SRID.

@@ -1490,11 +1490,11 @@

Unbound actions do not support overloads. The names of all unbound actions MUST be unique within a schema.

An unbound action MAY have the same name as a bound action.

-

Element edm:Action

+

Element edm:Action

The edm:Action element MUST contain the Name attribute and it MAY contain the IsBound and EntitySetPath attributes.

It MAY contain at most one edm:ReturnType element and MAY contain edm:Parameter elements.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the action's name.

12.3 Function

@@ -1519,11 +1519,11 @@

type definitions can be used to disambiguate overloads for both bound and unbound functions, even if they specify the same underlying type.

-

Element edm:Function

+

Element edm:Function

The edm:Function element MUST contain the Name attribute and it MAY contain the IsBound and EntitySetPath attributes.

It MUST contain one edm:ReturnType element, and it MAY contain edm:Parameter elements.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the action's name.

12.5 Bound or Unbound Action or Function Overloads

@@ -1532,7 +1532,7 @@

action import.

Unbound functions are invoked as static functions within a common expression (see OData-URL, section 5.1.1), or from the entity container through a function import.

-

Attribute IsBound

+

Attribute IsBound

The value of IsBound is one of the Boolean literals true or false. Absence of the attribute means false.

12.6 Entity Set Path

@@ -1541,14 +1541,14 @@

12.6

The first segment of the entity set path MUST be the name of the binding parameter. The remaining segments of the entity set path MUST represent navigation segments or type casts.

A navigation segment names the simple identifier of the navigation property to be traversed. A type-cast segment names the qualified name of the entity type that should be returned from the type cast.

-

Attribute EntitySetPath

+

Attribute EntitySetPath

The value of EntitySetPath is the entity set path.

12.7 Composable Function

A function MAY indicate that it is composable. If not explicitly indicated, it is not composable.

A composable function can be invoked with additional path segments or key predicates appended to the resource path that identifies the composable function, and with system query options as appropriate for the type returned by the composable function.

-

Attribute IsComposable

+

Attribute IsComposable

The value of IsComposable is one of the Boolean literals true or false. Absence of the attribute means false.

12.8 Return Type

@@ -1556,13 +1556,13 @@

12.8 Return Typ

The facets Nullable, MaxLength, Precision, Scale, and SRID can be used as appropriate to specify value restrictions of the return type, as well as the Unicode facet for 4.01 and greater payloads.

For a single-valued return type the facets apply to the returned value. For a collection-valued return type the facets apply to the items in the returned collection.

-

Element edm:ReturnType

+

Element edm:ReturnType

The edm:ReturnType element MUST contain the Type attribute, and it MAY contain the attributes Nullable, MaxLength, Unicode, Precision, Scale, and SRID.

It MAY contain edm:Annotation elements.

-

Attribute Type

+

Attribute Type

For single-valued return types the value of Type is the qualified name of the return type.

For collection-valued return types the value of Type is the character sequence Collection( followed by the qualified name of the return item type, followed by a closing parenthesis ).

-

Attribute Nullable

+

Attribute Nullable

The value of Nullable is one of the Boolean literals true or false. Absence of the attribute means true.

If the return type is a collection of entity types, the Nullable attribute has no meaning and MUST NOT be specified.

For other collection-valued return types the result will always be a collection that MAY be empty. In this case the Nullable attribute applies to items of the collection and specifies whether the collection MAY contain null values.

@@ -1576,15 +1576,15 @@

12.9 Parameter<

The facets MaxLength, Precision, Scale, or SRID can be used as appropriate to specify value restrictions of the parameter, as well as the Unicode facet for 4.01 and greater payloads.

For single-valued parameters the facets apply to the parameter value. If the parameter value is a collection, the facets apply to the items in the collection.

-

Element edm:Parameter

+

Element edm:Parameter

The edm:Parameter element MUST contain the Name and the Type attribute, and it MAY contain the attributes Nullable, MaxLength, Unicode, Precision, Scale, and SRID.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the parameter's name.

-

Attribute Type

+

Attribute Type

For single-valued parameters the value of Type is the qualified name of the parameter.

For collection-valued parameters the value of Type is the character sequence Collection( followed by the qualified name of the parameter's type, followed by a closing parenthesis ).

-

Attribute Nullable

+

Attribute Nullable

The value of Nullable is one of the Boolean literals true or false. Absence of the attribute means true.

The value true means that the parameter accepts a null value.

@@ -1623,10 +1623,10 @@

1

A singleton allows addressing a single entity directly from the entity container without having to know its key, and without requiring an entity set.

A function import or an action import is used to expose a function or action defined in an entity model as a top level resource.

-

Element edm:EntityContainer

+

Element edm:EntityContainer

The edm:EntityContainer MUST contain one or more edm:EntitySet, edm:Singleton, edm:ActionImport, or edm:FunctionImport elements.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the entity container's name.

@@ -1653,7 +1653,7 @@

If the "extending" entity container defines an entity set with the same name as defined in any of its "base" containers, then the entity set's type MUST specify an entity type derived from the entity type specified for the identically named entity set in the "base" container. The same holds for singletons. Action imports and function imports cannot be redefined, nor can the "extending" container define a child with the same name as a child of a different kind in a "base" container.

Note: services should not introduce cycles by extending entity containers. Clients should be prepared to process cycles introduced by extending entity containers.

-

Attribute Extends

+

Attribute Extends

The value of Extends is the qualified name of the entity container to be extended.

@@ -1670,15 +1670,15 @@

13.2 Entity SetAn entity set MAY indicate whether it is included in the service document. If not explicitly indicated, it is included.

Entity sets that cannot be queried without specifying additional query options SHOULD NOT be included in the service document.

-

Element edm:EntitySet

+

Element edm:EntitySet

The edm:EntitySet element MUST contain the attributes Name and EntityType, and it MAY contain the IncludeInServiceDocument attribute.

It MAY contain edm:NavigationPropertyBinding elements.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the entity set's name.

-

Attribute EntityType

+

Attribute EntityType

The value of EntityType is the qualified name of an entity type in scope.

-

Attribute IncludeInServiceDocument

+

Attribute IncludeInServiceDocument

The value of IncludeInServiceDocument is one of the Boolean literals true or false. Absence of the attribute means true.

13.3 Singleton

@@ -1687,15 +1687,15 @@

13.3 Singleton<

A singleton MUST specify a type that MUST be an entity type in scope.

A singleton MUST reference an instance its entity type.

-

Element edm:Singleton

+

Element edm:Singleton

The edm:Singleton element MUST include the attributes Name and Type, and it MAY contain the Nullable attribute.

It MAY contain edm:NavigationPropertyBinding elements.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the singleton's name.

-

Attribute Type

+

Attribute Type

The value of Type is whose value is the qualified name of an entity type in scope.

-

Attribute Nullable

+

Attribute Nullable

The value of Nullable is one of the Boolean literals true or false.

If no value is specified, the Nullable attribute defaults to false.

In OData 4.0 responses this attribute MUST NOT be specified.

@@ -1716,11 +1716,11 @@

13.4.

If the target is a simple identifier, it MUST resolve to an entity set or singleton defined in the same entity container.

If the target is a target path, it MUST resolve to an entity set, singleton, or direct or indirect containment navigation property of a singleton in scope. The path can traverse single-valued containment navigation properties or single-valued complex properties before ending in a containment navigation property, and there MUST NOT be any non-containment navigation properties prior to the final segment.

-

Element edm:NavigationPropertyBinding

+

Element edm:NavigationPropertyBinding

The edm:NavigationPropertyBinding element MUST contain the attributes Path and Target.

-

Attribute Path

+

Attribute Path

The value of Path is a path expression.

-

Attribute Target

+

Attribute Target

The value of Target is a target path.

@@ -1750,14 +1750,14 @@

13.5 Acti

An action import MUST specify the name of an unbound action in scope.

If the imported action returns an entity or a collection of entities, a simple identifier or target path value MAY be specified to identify the entity set that contains the returned entities. If a simple identifier is specified, it MUST resolve to an entity set defined in the same entity container. If a target path is specified, it MUST resolve to an entity set in scope.

-

Element edm:ActionImport

+

Element edm:ActionImport

The edm:ActionImport element MUST contain the attributes Name and Action, and it MAY contain the EntitySet attribute.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the action import's name.

-

Attribute Action

+

Attribute Action

The value of Action is the qualified name of an unbound action.

-

Attribute EntitySet

+

Attribute EntitySet

The value of EntitySet is either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container.

13.6 Function Import

@@ -1767,15 +1767,15 @@

13.

If the imported function returns an entity or a collection of entities, a simple identifier or target path value MAY be specified to identify the entity set that contains the returned entities. If a simple identifier is specified, it MUST resolve to an entity set defined in the same entity container. If a target path is specified, it MUST resolve to an entity set in scope.

A function import for a parameterless function MAY indicate whether it is included in the service document. If not explicitly indicated, it is not included.

-

Element edm:FunctionImport

+

Element edm:FunctionImport

The edm:FunctionImport element MUST contain the attributes Name and Function, and it MAY contain the attributes EntitySet and IncludeInServiceDocument.

-

Attribute Name

+

Attribute Name

The value of Name is the function import's name.

-

Attribute Function

+

Attribute Function

The value of Function is the qualified name of an unbound function.

-

Attribute EntitySet

+

Attribute EntitySet

The value of EntitySet is either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container.

-

Attribute IncludeInServiceDocument

+

Attribute IncludeInServiceDocument

The value of IncludeInServiceDocument is one of the Boolean literals true or false. Absence of the attribute means false.


@@ -1821,17 +1821,17 @@

14.1 Term

The term's name is a simple identifier that MUST be unique within its schema.

The term's type MUST be a type in scope, or a collection of a type in scope.

-

Element edm:Term

+

Element edm:Term

The edm:Term element MUST contain the attributes Name and Type. It MAY contain the attributes BaseTerm and AppliesTo.

It MAY specify values for the Nullable, [ ]{.apple-converted-space}MaxLength, Precision, Scale, or SRID facet attributes, as well as the Unicode facet attribute for 4.01 and greater payloads. These facets and their implications are described in section 7.2.

A edm:Term element whose Type attribute specifies a primitive or enumeration type MAY define a value for the DefaultValue attribute.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the term's name.

-

Attribute Type

+

Attribute Type

For single-valued properties the value of Type is the qualified name of the property's type.

For collection-valued properties the value of Type is the character sequence Collection( followed by the qualified name of the property's item type, followed by a closing parenthesis ).

-

Attribute DefaultValue

+

Attribute DefaultValue

The value of this attribute determines the value of the term when applied in an edm:Annotation without providing an expression.

Default values of type Edm.String MUST be represented according to the XML escaping rules for character data in attribute values. Values of other primitive types MUST be represented according to the appropriate alternative in the primitiveValue rule defined in OData-ABNF, i.e. Edm.Binary as binaryValue, Edm.Boolean as booleanValue etc.

If no value is specified, the DefaultValue attribute defaults to null.

@@ -1840,7 +1840,7 @@

A term MAY specialize another term in scope by specifying it as its base term.

When applying a specialized term, the base term MUST also be applied with the same qualifier, and so on until a term without a base term is reached.

-

Attribute BaseTerm

+

Attribute BaseTerm

The value of BaseTerm is the qualified name of the base term.

14.1.2 Applicability

@@ -1988,7 +1988,7 @@

14.1.2
-

Attribute AppliesTo

+

Attribute AppliesTo

The value of AppliesTo is a whitespace-separated list of symbolic values from the table above that identify model elements the term is intended to be applied to.

@@ -2007,13 +2007,13 @@

14.2 Annotation<

An annotation applies a term to a model element and defines how to calculate a value for the term application. Both term and model element MUST be in scope. Section 14.1.2 specifies which model elements MAY be annotated with a term.

The value of an annotation is specified as an annotation expression, which is either a constant expression representing a constant value, or a dynamic expression. The most common construct for assigning an annotation value is a path expression that refers to a property of the same or a related structured type.

-

Element edm:Annotation

+

Element edm:Annotation

The edm:Annotation element MUST contain the attribute Term, and it MAY contain the attribute Qualifier.

The value of the annotation MAY be a constant expression or dynamic expression.

If no expression is specified for a term with a primitive type, the annotation evaluates to the default value of the term definition. If no expression is specified for a term with a complex type, the annotation evaluates to a complex instance with default values for its properties. If no expression is specified for a collection-valued term, the annotation evaluates to an empty collection.

An edm:Annotation element can be used as a child of the model element it annotates, or as the child of an edm:Annotations element that targets the model element to be annotated.

An edm:Annotation element MAY contain edm:Annotation elements that annotate the annotation.

-

Attribute Term

+

Attribute Term

The value of Term is the qualified name of a term in scope.

@@ -2036,7 +2036,7 @@

14.2.1 QualifierA term can be applied multiple times to the same model element by providing a qualifier to distinguish the annotations. The qualifier is a simple identifier.

The combination of target model element, term, and qualifier uniquely identifies an annotation.

-

Attribute Qualifier

+

Attribute Qualifier

Annotation elements that are children of an edm:Annotations element MUST NOT provide a value for the qualifier attribute if the parent edm:Annotations element provides a value for the qualifier attribute.

@@ -2187,7 +2187,7 @@

14.3.1 Binary

-

Expression edm:Binary

+

Expression edm:Binary

The edm:Binary expression evaluates to a primitive binary value. A binary expression MUST be assigned a value conforming to the rule binaryValue in OData-ABNF.

The binary expression MAY be provided using element notation or attribute notation.

@@ -2201,7 +2201,7 @@

Expression

14.3.2 Boolean

-

Expression edm:Bool

+

Expression edm:Bool

The edm:Bool expression evaluates to a primitive Boolean value. A Boolean expression MUST be assigned a Boolean value.

The Boolean expression MAY be provided using element notation or attribute notation.

@@ -2215,7 +2215,7 @@

Expression

14.3.3 Date

-

Expression edm:Date

+

Expression edm:Date

The edm:Date expression evaluates to a primitive date value. A date expression MUST be assigned a value of type xs:date, see XML-Schema-2, section 3.3.9. The value MUST also conform to rule dateValue in OData-ABNF, i.e. it MUST NOT contain a time-zone offset.

The date expression MAY be provided using element notation or attribute notation.

@@ -2229,7 +2229,7 @@

Expression

14.3.4 DateTimeOffset

-

Expression edm:DateTimeOffset

+

Expression edm:DateTimeOffset

The edm:DateTimeOffset expression evaluates to a primitive datetimestamp value with a time-zone offset. A datetimestamp expression MUST be assigned a value of type xs:dateTimeStamp, see XML-Schema-2, section 3.4.28. The value MUST also conform to rule dateTimeOffsetValue in OData-ABNF, i.e. it MUST NOT contain an end-of-day fragment (24:00:00).

The datetimestamp expression MAY be provided using element notation or attribute notation.

@@ -2245,7 +2245,7 @@

14.3.5 Decimal

-

Expression edm:Decimal

+

Expression edm:Decimal

The edm:Decimal expression evaluates to a primitive decimal value. A decimal expression MUST be assigned a value conforming to the rule decimalValue in OData-ABNF.

The decimal expression MAY be provided using element notation or attribute notation.

@@ -2261,7 +2261,7 @@

Expression

14.3.6 Duration

-

Expression edm:Duration

+

Expression edm:Duration

The edm:Duration expression evaluates to a primitive duration value. A duration expression MUST be assigned a value of type xs:dayTimeDuration, see XML-Schema-2, section 3.4.27.

The duration expression MAY be provided using element notation or attribute notation.

@@ -2275,7 +2275,7 @@

Expressio

14.3.7 Enumeration Member

-

Expression edm:EnumMember

+

Expression edm:EnumMember

The edm:EnumMember expression references a member of an enumeration type. An enumeration member expression MUST be assigned a value that consists of the qualified name of the enumeration type, followed by a forward slash and the name of the enumeration member. If the enumeration type specifies an IsFlags attribute with value true, the expression MAY also be assigned a whitespace-separated list of values. Each of these values MUST resolve to the name of a member of the enumeration type of the specified term.

The enumeration member expression MAY be provided using element notation or attribute notation.

@@ -2299,7 +2299,7 @@

Expre

14.3.8 Floating-Point Number

-

Expression edm:Float

+

Expression edm:Float

The edm:Float expression evaluates to a primitive floating point (or double) value. A float expression MUST be assigned a value conforming to the rule doubleValue in OData-ABNF.

The float expression MAY be provided using element notation or attribute notation.

@@ -2313,7 +2313,7 @@

Expression

14.3.9 Guid

-

Expression edm:Guid

+

Expression edm:Guid

The edm:Guid expression evaluates to a primitive guid value. A guid expression MUST be assigned a value conforming to the rule guidValue in OData-ABNF.

The guid expression MAY be provided using element notation or attribute notation.

@@ -2328,7 +2328,7 @@

Expression

14.3.10 Integer

-

Expression edm:Int

+

Expression edm:Int

The edm:Int expression evaluates to a primitive integer value. An integer MUST be assigned a value conforming to the rule int64Value in OData-ABNF.

The integer expression MAY be provided using element notation or attribute notation.

@@ -2344,7 +2344,7 @@

Expression ed

14.3.11 String

-

Expression edm:String

+

Expression edm:String

The edm:String expression evaluates to a primitive string value. A string expression MUST be assigned a value of the type xs:string, see XML-Schema-2, section 3.3.1.

The string expression MAY be provided using element notation or attribute notation.

@@ -2358,7 +2358,7 @@

Expression

14.3.12 Time of Day

-

Expression edm:TimeOfDay

+

Expression edm:TimeOfDay

The edm:TimeOfDay expression evaluates to a primitive time value. A time-of-day expression MUST be assigned a value conforming to the rule timeOfDayValue in OData-ABNF.

The time-of-day expression MAY be provided using element notation or attribute notation.

@@ -2503,7 +2503,7 @@

1

A term or term property of type Edm.AnnotationPath can be annotated with term Validation.AllowedTerms (see OData-VocValidation) if its intended value is an annotation path that ends in a term cast with one of the listed terms.

The value of the annotation path expression is the path itself, not the value of the annotation identified by the path. This is useful for terms that reuse or refer to other terms.

-

Expression edm:AnnotationPath

+

Expression edm:AnnotationPath

The edm:AnnotationPath expression MAY be provided using element notation or attribute notation.

@@ -2522,7 +2522,7 @@

built-in type Edm.ModelElementPath. Its argument is a model path.

The value of the model element path expression is the path itself, not the instance(s) identified by the path.

-

Expression edm:ModelElementPath

+

Expression edm:ModelElementPath

The edm:ModelElementPath expression MAY be provided using element notation or attribute notation.

@@ -2541,7 +2541,7 @@

-

Expression edm:NavigationPropertyPath

+

Expression edm:NavigationPropertyPath

The edm:NavigationPropertyPath expression MAY be provided using element notation or attribute notation.

@@ -2566,7 +2566,7 @@

14.4.1.

The value of the property path expression is the path itself, not the value of the structural property or the value of the term cast identified by the path.

-

Expression edm:PropertyPath

+

Expression edm:PropertyPath

The edm:PropertyPath MAY be provided using either element notation or attribute notation.

@@ -2588,7 +2588,7 @@

14.4.1.7 Value P

The value path expression allows assigning a value by traversing an object graph. It can be used in annotations that target entity containers, entity sets, entity types, complex types, navigation properties of structured types, and structural properties of structured types. Its argument is an instance path.

The value of the path expression is the instance or collection of instances identified by the path.

-

Expression edm:Path

+

Expression edm:Path

The edm:Path expression MAY be provided using element notation or attribute notation.

@@ -2621,13 +2621,13 @@

OData-URL.

The other comparison operators require two operand expressions that evaluate to comparable values.

-

Expressions edm:And and edm:Or

+

Expressions edm:And and edm:Or

The And and Or logical expressions are represented as elements edm:And and edm:Or that MUST contain two annotation expressions.

It MAY contain edm:Annotation elements.

-

Expression edm:Not

+

Expression edm:Not

Negation expressions are represented as an element edm:Not that MUST contain a single annotation expression.

It MAY contain edm:Annotation elements.

-

Expressions edm:Eq, edm:Ne, edm:Gt, edm:Ge, edm:Lt, edm:Le, edm:Has, and edm:In

+

Expressions edm:Eq, edm:Ne, edm:Gt, edm:Ge, edm:Lt, edm:Le, edm:Has, and edm:In

All comparison expressions are represented as an element that MUST contain two annotation expressions.

They MAY contain edm:Annotation elements.

@@ -2722,10 +2722,10 @@

-

Expression edm:Neg

+

Expression edm:Neg

Negation expressions are represented as an element edm:Neg that MUST contain a single annotation expression.

It MAY contain edm:Annotation elements.

-

Expressions edm:Add, edm:Sub, edm:Mul, edm:Div, edm:DivBy, and edm:Mod

+

Expressions edm:Add, edm:Sub, edm:Mul, edm:Div, edm:DivBy, and edm:Mod

These arithmetic expressions are represented as an element that MUST contain two annotation expressions.

They MAY contain edm:Annotation elements.

@@ -2762,10 +2762,10 @@

14.4.4 Apply Client-Side Functions

The apply expression enables a value to be obtained by applying a client-side function. The apply expression MAY have operand expressions. The operand expressions are used as parameters to the client-side function.

-

Expression edm:Apply

+

Expression edm:Apply

The edm:Apply element MUST contain the Function attribute and MAY contain annotation expressions as operands for the applied function.

It MAY contain more edm:Annotation elements.

-

Attribute Function

+

Attribute Function

The value of Function is the qualified name of the client-side function to apply.

OData defines the following functions. Services MAY support additional functions that MUST be qualified with a namespace other than odata. Function names qualified with odata are reserved for this specification and its future versions.

@@ -2828,10 +2828,10 @@

14.4.5 Cast

The cast expression casts the value obtained from its single child expression to the specified type. The cast expression follows the same rules as the cast canonical function defined in OData-URL.

-

Expression edm:Cast

+

Expression edm:Cast

The edm:Cast element MUST contain the Type attribute and MUST contain exactly one expression.

It MAY contain edm:Annotation elements.

-

Attribute Type

+

Attribute Type

The value of Type is a qualified type name in scope, or the character sequence Collection( followed by the qualified name of a type in scope, followed by a closing parenthesis ).

If the specified type is a primitive type or a collection of a primitive type, the facet attributes MaxLength, Unicode, Precision, Scale, and SRID MAY be specified if applicable to the specified primitive type. If the facet attributes are not specified, their values are considered unspecified.

@@ -2846,7 +2846,7 @@

14.4.6 Collection

The collection expression enables a value to be obtained from zero or more item expressions. The value calculated by the collection expression is the collection of the values calculated by each of the item expressions. The values of the child expressions MUST all be type compatible.

-

Expression edm:Collection

+

Expression edm:Collection

The edm:Collection element contains zero or more child expressions.

@@ -2865,7 +2865,7 @@

14.4.7 If-The

The second and third child expressions are evaluated conditionally. The result MUST be type compatible with the type expected by the surrounding expression.

If the first expression evaluates to true, the second expression MUST be evaluated and its value MUST be returned as the result of the if-then-else expression. If the first expression evaluates to false and a third child element is present, it MUST be evaluated and its value MUST be returned as the result of the if-then-else expression. If no third expression is present, nothing is added to the surrounding collection.

-

Expression edm:If

+

Expression edm:If

The edm:If element MUST contain two or three child expressions that MUST use element notation.

It MAY contain edm:Annotation elements.

@@ -2882,7 +2882,7 @@

Expression edm:

14.4.8 Is-Of

The is-of expression checks whether the value obtained from its single child expression is compatible with the specified type. It returns true if the child expression returns a type that is compatible with the specified type, and false otherwise.

-

Expression edm:UrlRef

+

Expression edm:UrlRef

The edm:UrlRef expression MAY be provided using element notation or attribute notation.

Relative URLs are relative to the xml:base attribute, see XML-Base.

In element notation it MAY contain edm:Annotation elements.

@@ -2900,11 +2900,11 @@

14

A labeled element expression MUST contain exactly one child expression. The value of the child expression is also the value of the labeled element expression.

A labeled element expression MUST provide a simple identifier value as its name that MUST be unique within the schema containing the expression.

-

Expression edm:LabeledElement

+

Expression edm:LabeledElement

The edm:LabeledElement element MUST contain the Name attribute.

It MUST contain a child expression written either in attribute notation or element notation.

It MAY contain edm:Annotation elements.

-

Attribute Name

+

Attribute Name

The value of Name is the labeled element's name.

@@ -2922,7 +2922,7 @@

14.4.10 Labeled Element Reference

The labeled element reference expression MUST specify the qualified name of a labeled element expression in scope and returns the value of the identified labeled element expression as its value.

-

Expression edm:LabeledElementReference

+

Expression edm:LabeledElementReference

The edm:LabeledElementReference element MUST contain the qualified name of a labeled element expression in its body.

@@ -2934,7 +2934,7 @@

14.4.11 Null

The null expression indicates the absence of a value. The null expression MAY be annotated.

-

Expression edm:Null

+

Expression edm:Null

The edm:Null element MAY contain edm:Annotation elements.

@@ -2957,15 +2957,15 @@

14.4.12 Record

A record expression contains zero or more property value expressions. For each single-valued structural or navigation property of the record expression's type that is neither nullable nor specifies a default value a property value expression MUST be provided. The only exception is if the record expression is the value of an annotation for a term that has a base term whose type is structured and directly or indirectly inherits from the type of its base term. In this case, property values that already have been specified in the annotation for the base term or its base term etc. need not be specified again.

For collection-valued properties the absence of a property value expression is equivalent to specifying an empty collection as its value.

-

Expression edm:Record

+

Expression edm:Record

The edm:Record element MAY contain the Type attribute and MAY contain edm:PropertyValue elements.

It MAY contain edm:Annotation elements.

-

Attribute Type

+

Attribute Type

The value of Type is the qualified name of a structured type in scope.

-

Element edm:PropertyValue

+

Element edm:PropertyValue

The edm:PropertyValue element MUST contain the Property attribute, and it MUST contain exactly one expression that MAY be provided using either element notation or attribute notation.

It MAY contain edm:Annotation elements.

-

Attribute Property

+

Attribute Property

The value of Property is the name of a property of the type of the enclosing edm:Record expression.

@@ -2995,7 +2995,7 @@

14.4.13

The URL reference expression MUST contain exactly one expression of type Edm.String. Its value is treated as a URL that MAY be relative or absolute; relative URLs are relative to the URL of the document containing the URL reference expression, or relative to a base URL specified in a format-specific way.

The response body of the GET request MUST be returned as the result of the URL reference expression. The result of the URL reference expression MUST be type compatible with the type expected by the surrounding expression.

-

Expression edm:UrlRef

+

Expression edm:UrlRef

The edm:UrlRef expression MAY be provided using element notation or attribute notation.

Relative URLs are relative to the xml:base attribute, see XML-Base.

In element notation it MAY contain edm:Annotation elements.

@@ -3297,239 +3297,239 @@
[OpenUI5]

Appendix B. Table of XML Elements and Attributes


diff --git a/docs/odata-csdl-xml/odata-csdl-xml.md b/docs/odata-csdl-xml/odata-csdl-xml.md index 9b70b1e11..de12484c0 100644 --- a/docs/odata-csdl-xml/odata-csdl-xml.md +++ b/docs/odata-csdl-xml/odata-csdl-xml.md @@ -639,7 +639,7 @@ combination of term and qualifier. ::: {.varxml .rep} -### Element `edmx:Edmx` +### Element `edmx:Edmx` The `edmx:Edmx` element is the root element of a CSDL XML document. It MUST contain the `Version` attribute and it MUST contain exactly one @@ -648,7 +648,7 @@ MUST contain the `Version` attribute and it MUST contain exactly one It MAY contain [`edmx:Reference`](#Reference) elements to reference other CSDL documents. -### Attribute `Version` +### Attribute `Version` The `Version` attribute specifies the OData protocol version of the service. For OData 4.0 responses the value of this attribute MUST be @@ -656,7 +656,7 @@ service. For OData 4.0 responses the value of this attribute MUST be `4.01.` Services MUST return an OData 4.0 response if the request was made with an `OData-MaxVersion `header with a value of `4.0`. -### Element `edmx:DataServices` +### Element `edmx:DataServices` The `edmx:DataServices` element MUST contain one or more [`edm:Schema`](#Schema) elements which define the schemas exposed by the @@ -703,7 +703,7 @@ referenced schema document. ::: {.varxml .rep} -### Element `edmx:Reference` +### Element `edmx:Reference` The `edmx:Reference` element specifies external CSDL documents referenced by the referencing document. The child elements @@ -718,7 +718,7 @@ MUST contain at least one [`edmx:Include`](#IncludedSchema) or It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Uri` +### Attribute `Uri` The value of `Uri` is an absolute or relative URI; relative URIs are relative to the `xml:base` attribute, see @@ -785,7 +785,7 @@ referencing document may define its own aliases for included schemas. ::: {.varxml .rep} -### Element `edmx:Include` +### Element `edmx:Include` The `edmx:Include` element specifies a schema to include from the referenced CSDL document. It MUST provide the `Namespace` attribute and @@ -793,12 +793,12 @@ it MAY provide the `Alias` attribute. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Namespace` +### Attribute `Namespace` The value of `Namespace` is the namespace of a schema defined in the referenced CSDL document. -### Attribute `Alias` +### Attribute `Alias` The value of `Alias` is a [simple identifier](#SimpleIdentifier) that can be used in qualified names instead of the namespace. @@ -868,7 +868,7 @@ not to inspect the referenced document. ::: {.varxml .rep} -### Element `edmx:IncludeAnnotations` +### Element `edmx:IncludeAnnotations` The `edmx:IncludeAnnotations` element specifies the annotations to include from the referenced CSDL document. If no @@ -880,15 +880,15 @@ The `edmx:IncludeAnnotations` element MUST provide the `TermNamespace` attribute, and it MAY provide the `Qualifier` and `TargetNamespace` attribute. -### Attribute `TermNamespace` +### Attribute `TermNamespace` The value of `TermNamespace` is a namespace. -### Attribute `Qualifier` +### Attribute `Qualifier` The value of `Qualifier` is a [simple identifier](#SimpleIdentifier). -### Attribute `TargetNamespace` +### Attribute `TargetNamespace` The value of `TargetNamespace` is a namespace. ::: @@ -955,7 +955,7 @@ The namespace MUST NOT be one of the reserved values `Edm`, `odata`, ::: {.varxml .rep} -### Element `edm:Schema` +### Element `edm:Schema` The `edm:Schema` element defines a schema. It MUST contain the `Namespace` attribute and it MAY @@ -969,7 +969,7 @@ It MAY contain elements [`edm:Action`](#Action), [`edm:Function`](#Function), [`edm:Term`](#Term), or [`edm:TypeDefinition`](#TypeDefinition). -### Attribute `Namespace` +### Attribute `Namespace` The value of `Namespace` is the namespace of the schema ::: @@ -1000,7 +1000,7 @@ The alias MUST NOT be one of the reserved values `Edm`, `odata`, ::: {.varxml .rep} -### Attribute `Alias` +### Attribute `Alias` The value of `Alias` is a [simple identifier](#SimpleIdentifier). ::: @@ -1021,7 +1021,7 @@ schema ::: {.varxml .rep} -### Element `edm:Annotations` +### Element `edm:Annotations` The `edm:Annotations` element is used to apply a group of annotations to a single model element. It MUST contain the `Target` attribute and it @@ -1029,12 +1029,12 @@ MAY contain the `Qualifier` attribute. It MUST contain at least one [`edm:Annotation`](#Annotation) element. -### Attribute `Target` +### Attribute `Target` The value of `Target` is a path expression identifying the [annotation target](#Target). It MUST resolve to a model element in scope. -### Attribute `Qualifier` +### Attribute `Qualifier` The value of `Qualifier` is a [simple identifier](#SimpleIdentifier). ::: @@ -1076,7 +1076,7 @@ types. ::: {.varxml .rep} -### Element `edm:EntityType` +### Element `edm:EntityType` The `edm:EntityType` element MUST contain the `Name` attribute, and it MAY contain the [`BaseType`](#DerivedEntityType), @@ -1091,7 +1091,7 @@ It MAY contain one [`edm:Key`](#Key) element. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the entity type's name. ::: @@ -1125,7 +1125,7 @@ base type. ::: {.varxml .rep} -### Attribute `BaseType` +### Attribute `BaseType` The value of `BaseType` is the qualified name of the base type. ::: @@ -1159,7 +1159,7 @@ type. ::: {.varxml .rep} -### Attribute `Abstract` +### Attribute `Abstract` The value of `Abstract` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -1183,7 +1183,7 @@ properties on instances of any structured type, see ::: {.varxml .rep} -### Attribute `OpenType` +### Attribute `OpenType` The value of `OpenType` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -1212,7 +1212,7 @@ see [OData-VocCore](#ODataVocCore). ::: {.varxml .rep} -### Attribute `HasStream` +### Attribute `HasStream` The value of `HasStream` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -1299,23 +1299,23 @@ special encoding and are a standard constituent of expressions anyway. ::: {.varxml .rep} -### Element `edm:Key` +### Element `edm:Key` The `edm:Key` element MUST contain at least one `edm:PropertyRef` element. -### Element `edm:PropertyRef` +### Element `edm:PropertyRef` The `edm:PropertyRef` element MUST contain the `Name` attribute and MAY contain the `Alias` attribute. -### Attribute `Name` +### Attribute `Name` The value of `Name` is a path expression leading to a primitive property. The names of the properties in the path are joined together by forward slashes. -### Attribute `Alias` +### Attribute `Alias` The value of `Alias` is a [simple identifier](#SimpleIdentifier). ::: @@ -1415,7 +1415,7 @@ that differ only in case. ::: {.varxml .rep} -### Element `edm:Property` +### Element `edm:Property` The `edm:Property` element MUST contain the `Name` and the `Type` attribute, and it MAY contain the facet attributes @@ -1425,7 +1425,7 @@ attribute, and it MAY contain the facet attributes It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the property's name. ::: @@ -1462,7 +1462,7 @@ supports inserting items into a specific ordinal position. ::: {.varxml .rep} -### Attribute `Type` +### Attribute `Type` For single-valued properties the value of `Type` is the qualified name of the property's type. @@ -1495,7 +1495,7 @@ A Boolean value specifying whether the property can have the value ::: {.varxml .rep} -### Attribute `Nullable` +### Attribute `Nullable` The value of `Nullable` is one of the Boolean literals `true` or `false`. @@ -1531,7 +1531,7 @@ length. ::: {.varxml .rep} -### Attribute `MaxLength` +### Attribute `MaxLength` The value of `MaxLength` is a positive integer or the symbolic value `max` as a shorthand for the maximum length supported for the type by @@ -1569,7 +1569,7 @@ see [OData-VocMeasures](#ODataVocMeasures). ::: {.varxml .rep} -### Attribute `Precision` +### Attribute `Precision` The value of `Precision` is a number. @@ -1625,7 +1625,7 @@ client-provided values may have to be rounded before being stored. ::: {.varxml .rep} -### Attribute `Scale` +### Attribute `Scale` The value of `Scale` is a number or one of the symbolic values `floating` or `variable`. @@ -1682,7 +1682,7 @@ If no value is specified, the `Unicode` facet defaults to `true`. ::: {.varxml .rep} -### Attribute `Unicode` +### Attribute `Unicode` The value of `Unicode` is one of the Boolean literals `true` or `false`. Absence of the attribute means `true`. @@ -1703,7 +1703,7 @@ by the European Petroleum Survey Group [EPSG](#_EPSG). ::: {.varxml .rep} -### Attribute `SRID` +### Attribute `SRID` The value of `SRID` is a number or the symbolic value `variable`. ::: @@ -1718,7 +1718,7 @@ If no value is specified, the client SHOULD NOT assume a default value. ::: {.varxml .rep} -### Attribute `DefaultValue` +### Attribute `DefaultValue` Default values of type `Edm.String` MUST be represented according to the XML escaping rules for character data in attribute values. Values of @@ -1755,7 +1755,7 @@ that differ only in case. ::: {.varxml .rep} -### Element `edm:NavigationProperty` +### Element `edm:NavigationProperty` The `edm:NavigationProperty` element MUST contain the `Name` and `Type` attributes, and it MAY contain the attributes @@ -1769,7 +1769,7 @@ child element [`edm:OnDelete`](#OnDeleteAction). It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the navigation property's name. ::: @@ -1820,7 +1820,7 @@ supports inserting items into a specific ordinal position. ::: {.varxml .rep} -### Attribute `Type` +### Attribute `Type` For single-valued navigation properties the value of `Type` is the qualified name of the navigation property's type. @@ -1841,7 +1841,7 @@ property, a collection is allowed to have zero items. ::: {.varxml .rep} -### Attribute `Nullable` +### Attribute `Nullable` The value of `Nullable` is one of the Boolean literals `true` or `false`. Absence of the attribute means `true`. @@ -1881,7 +1881,7 @@ partner navigation property. ::: {.varxml .rep} -### Attribute `Partner` +### Attribute `Partner` The value of `Partner` is the path to the of the partner navigation property. @@ -1956,7 +1956,7 @@ can also be reached via a non-containment navigation path. ::: {.varxml .rep} -### Attribute `ContainsTarget` +### Attribute `ContainsTarget` The value of `ContainsTarget` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -1990,14 +1990,14 @@ property MUST NOT be nullable. ::: {.varxml .rep} -### Element `edm:ReferentialConstraint` +### Element `edm:ReferentialConstraint` The `edm:ReferentialConstraint` element MUST contain the attributes `Property` and `ReferencedProperty`. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Property` +### Attribute `Property` The `Property` attribute specifies the property that takes part in the referential constraint on the dependent structured type. Its value MUST @@ -2007,7 +2007,7 @@ dependent structured type. The names of the properties in the path are joined together by forward slashes. The path is relative to the dependent structured type declaring the navigation property. -### Attribute `ReferencedProperty` +### Attribute `ReferencedProperty` The `ReferencedProperty` attribute specifies the corresponding property of the principal entity type. Its value MUST be a path expression @@ -2075,13 +2075,13 @@ not predictable by the client and could vary per entity. ::: {.varxml .rep} -### Element `edm:OnDelete` +### Element `edm:OnDelete` The `edm:OnDelete` element MUST contain the `Action` attribute. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Action` +### Attribute `Action` The value of `Action` is one of the values `Cascade`, `None`, `SetNull`, or `SetDefault`. @@ -2131,7 +2131,7 @@ types. ::: {.varxml .rep} -### Element `edm:ComplexType` +### Element `edm:ComplexType` The `edm:ComplexType` element MUST contain the `Name` attribute, and it MAY contain the [`BaseType`](#DerivedComplexType), @@ -2144,7 +2144,7 @@ properties of the complex type. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the complex type's name. ::: @@ -2187,7 +2187,7 @@ The rules for annotations of derived complex types are described in ::: {.varxml .rep} -### Attribute `BaseType` +### Attribute `BaseType` The value of `BaseType` is the qualified name of the base type. ::: @@ -2199,7 +2199,7 @@ instances. ::: {.varxml .rep} -### Attribute `Abstract` +### Attribute `Abstract` The value of `Abstract` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -2223,7 +2223,7 @@ properties on instances of any structured type, see ::: {.varxml .rep} -### Attribute `OpenType` +### Attribute `OpenType` The value of `OpenType` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -2252,7 +2252,7 @@ one enumeration member at a time. ::: {.varxml .rep} -### Element `edm:EnumType` +### Element `edm:EnumType` The `edm:EnumType` element MUST contain the Name attribute, and it MAY contain the [`UnderlyingType`](#UnderlyingIntegerType) and @@ -2263,7 +2263,7 @@ elements defining the members of the enumeration type. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the enumeration type's name. ::: @@ -2289,7 +2289,7 @@ If not explicitly specified, `Edm.Int32` is used as the underlying type. ::: {.varxml .rep} -### Attribute `UnderlyingType` +### Attribute `UnderlyingType` The value of `UnderlyingType` is the qualified name of the underlying type. @@ -2306,7 +2306,7 @@ selected simultaneously. ::: {.varxml .rep} -### Attribute `IsFlags` +### Attribute `IsFlags` The value of `IsFlags` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -2358,18 +2358,18 @@ values. ::: {.varxml .rep} -### Element `edm:Member` +### Element `edm:Member` The `edm:Member` element MUST contain the `Name` attribute and it MAY contain the `Value` attribute. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the enumeration member's name. -### Attribute `Value` +### Attribute `Value` If the [`IsFlags`](#FlagsEnumerationType) attribute has a value of `false`, either all members MUST specify an integer value for the @@ -2429,14 +2429,14 @@ definition is used, and whether they can be overridden. ::: {.varxml .rep} -### Element `edm:TypeDefinition` +### Element `edm:TypeDefinition` The `edm:TypeDefinition` element MUST contain the `Name` and [`UnderlyingType`](#UnderlyingPrimitiveType) attributes. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the type definition's name. ::: @@ -2469,7 +2469,7 @@ MUST NOT be another type definition. ::: {.varxml .rep} -### Attribute `UnderlyingType` +### Attribute `UnderlyingType` The value of `UnderlyingType` is the qualified name of the underlying type. @@ -2531,7 +2531,7 @@ An unbound action MAY have the same name as a bound action. ::: {.varxml .rep} -### Element `edm:Action` +### Element `edm:Action` The `edm:Action` element MUST contain the `Name` attribute and it MAY contain the [`IsBound`](#BoundorUnboundActionorFunctionOverloads) and @@ -2542,7 +2542,7 @@ MAY contain [`edm:Parameter`](#Parameter) elements. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the action's name. ::: @@ -2597,7 +2597,7 @@ they specify the same underlying type. ::: {.varxml .rep} -### Element `edm:Function` +### Element `edm:Function` The `edm:Function` element MUST contain the `Name` attribute and it MAY contain the [`IsBound`](#BoundorUnboundActionorFunctionOverloads) and @@ -2608,7 +2608,7 @@ contain [`edm:Parameter`](#Parameter) elements. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the action's name. ::: @@ -2631,7 +2631,7 @@ or from the entity container through a [function import](#FunctionImport). ::: {.varxml .rep} -### Attribute `IsBound` +### Attribute `IsBound` The value of `IsBound` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -2658,7 +2658,7 @@ entity type that should be returned from the type cast. ::: {.varxml .rep} -### Attribute `EntitySetPath` +### Attribute `EntitySetPath` The value of `EntitySetPath` is the entity set path. ::: @@ -2675,7 +2675,7 @@ the type returned by the composable function. ::: {.varxml .rep} -### Attribute `IsComposable` +### Attribute `IsComposable` The value of `IsComposable` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -2697,7 +2697,7 @@ returned collection. ::: {.varxml .rep} -### Element `edm:ReturnType` +### Element `edm:ReturnType` The `edm:ReturnType` element MUST contain the `Type` attribute, and it MAY contain the attributes `Nullable`, [`MaxLength`](#MaxLength), @@ -2706,7 +2706,7 @@ MAY contain the attributes `Nullable`, [`MaxLength`](#MaxLength), It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Type` +### Attribute `Type` For single-valued return types the value of `Type` is the qualified name of the return type. @@ -2715,7 +2715,7 @@ For collection-valued return types the value of `Type` is the character sequence `Collection(` followed by the qualified name of the return item type, followed by a closing parenthesis `)`. -### Attribute `Nullable` +### Attribute `Nullable` The value of `Nullable` is one of the Boolean literals `true` or `false`. Absence of the attribute means `true`. @@ -2761,7 +2761,7 @@ the collection. ::: {.varxml .rep} -### Element `edm:Parameter` +### Element `edm:Parameter` The `edm:Parameter` element MUST contain the `Name` and the `Type` attribute, and it MAY contain the attributes `Nullable`, @@ -2770,11 +2770,11 @@ attribute, and it MAY contain the attributes `Nullable`, It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the parameter's name. -### Attribute `Type` +### Attribute `Type` For single-valued parameters the value of `Type` is the qualified name of the parameter. @@ -2783,7 +2783,7 @@ For collection-valued parameters the value of `Type` is the character sequence `Collection(` followed by the qualified name of the parameter's type, followed by a closing parenthesis `)`. -### Attribute `Nullable` +### Attribute `Nullable` The value of `Nullable` is one of the Boolean literals `true` or `false`. Absence of the attribute means `true`. @@ -2870,7 +2870,7 @@ in an entity model as a top level resource. ::: {.varxml .rep} -### Element `edm:EntityContainer` +### Element `edm:EntityContainer` The `edm:EntityContainer` MUST contain one or more [`edm:EntitySet`](#EntitySet), [`edm:Singleton`](#Singleton), @@ -2879,7 +2879,7 @@ The `edm:EntityContainer` MUST contain one or more It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the entity container's name. ::: @@ -2928,7 +2928,7 @@ extending entity containers. ::: {.varxml .rep} -### Attribute `Extends` +### Attribute `Extends` The value of `Extends` is the qualified name of the entity container to be extended. @@ -2967,7 +2967,7 @@ options SHOULD NOT be included in the service document. ::: {.varxml .rep} -### Element `edm:EntitySet` +### Element `edm:EntitySet` The `edm:EntitySet` element MUST contain the attributes `Name` and `EntityType`, and it MAY contain the `IncludeInServiceDocument` @@ -2978,16 +2978,16 @@ It MAY contain It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the entity set's name. -### Attribute `EntityType` +### Attribute `EntityType` The value of `EntityType` is the qualified name of an entity type in scope. -### Attribute `IncludeInServiceDocument` +### Attribute `IncludeInServiceDocument` The value of `IncludeInServiceDocument` is one of the Boolean literals `true` or `false`. Absence of the attribute means `true`. @@ -3007,7 +3007,7 @@ A singleton MUST reference an instance its entity type. ::: {.varxml .rep} -### Element `edm:Singleton` +### Element `edm:Singleton` The `edm:Singleton` element MUST include the attributes `Name` and `Type`, and it MAY contain the `Nullable` attribute. @@ -3017,16 +3017,16 @@ It MAY contain It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the singleton's name. -### Attribute `Type` +### Attribute `Type` The value of `Type` is whose value is the [qualified name](#QualifiedName) of an entity type in scope. -### Attribute `Nullable` +### Attribute `Nullable` The value of `Nullable` is one of the Boolean literals `true` or `false`. @@ -3112,16 +3112,16 @@ be any non-containment navigation properties prior to the final segment. ::: {.varxml .rep} -### Element `edm:NavigationPropertyBinding` +### Element `edm:NavigationPropertyBinding` The `edm:NavigationPropertyBinding` element MUST contain the attributes `Path` and `Target`. -### Attribute `Path` +### Attribute `Path` The value of `Path` is a path expression. -### Attribute `Target` +### Attribute `Target` The value of `Target` is a [target path](#TargetPath). ::: @@ -3179,22 +3179,22 @@ to an entity set in scope. ::: {.varxml .rep} -### Element `edm:ActionImport` +### Element `edm:ActionImport` The `edm:ActionImport` element MUST contain the attributes `Name` and `Action`, and it MAY contain the `EntitySet` attribute. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the action import's name. -### Attribute `Action` +### Attribute `Action` The value of `Action` is the qualified name of an unbound action. -### Attribute `EntitySet` +### Attribute `EntitySet` The value of `EntitySet` is either the unqualified name of an entity set in the same entity container or a path to an entity set in a different @@ -3227,27 +3227,27 @@ not included. ::: {.varxml .rep} -### Element `edm:FunctionImport` +### Element `edm:FunctionImport` The `edm:FunctionImport` element MUST contain the attributes `Name` and `Function`, and it MAY contain the attributes `EntitySet` and `IncludeInServiceDocument`. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the function import's name. -### Attribute `Function` +### Attribute `Function` The value of `Function` is the qualified name of an unbound function. -### Attribute `EntitySet` +### Attribute `EntitySet` The value of `EntitySet` is either the unqualified name of an entity set in the same entity container or a path to an entity set in a different entity container. -### Attribute `IncludeInServiceDocument` +### Attribute `IncludeInServiceDocument` The value of `IncludeInServiceDocument` is one of the Boolean literals `true` or `false`. Absence of the attribute means `false`. @@ -3351,7 +3351,7 @@ scope. ::: {.varxml .rep} -### Element `edm:Term` +### Element `edm:Term` The `edm:Term` element MUST contain the attributes `Name` and `Type`. It MAY contain the attributes `BaseTerm` and `AppliesTo`. @@ -3368,11 +3368,11 @@ enumeration type MAY define a value for the `DefaultValue` attribute. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the term's name. -### Attribute `Type` +### Attribute `Type` For single-valued properties the value of `Type` is the qualified name of the property's type. @@ -3381,7 +3381,7 @@ For collection-valued properties the value of `Type` is the character sequence `Collection(` followed by the qualified name of the property's item type, followed by a closing parenthesis `)`. -### Attribute `DefaultValue` +### Attribute `DefaultValue` The value of this attribute determines the value of the term when applied in an [`edm:Annotation`](#Annotation) without providing an @@ -3409,7 +3409,7 @@ reached. ::: {.varxml .rep} -### Attribute `BaseTerm` +### Attribute `BaseTerm` The value of `BaseTerm` is the qualified name of the base term. ::: @@ -3463,7 +3463,7 @@ Symbolic Value|Model Element ::: {.varxml .rep} -### Attribute `AppliesTo` +### Attribute `AppliesTo` The value of `AppliesTo` is a whitespace-separated list of symbolic values from the table above that identify model elements the term is @@ -3504,7 +3504,7 @@ property of the same or a related structured type. ::: {.varxml .rep} -### Element `edm:Annotation` +### Element `edm:Annotation` The `edm:Annotation` element MUST contain the attribute `Term`, and it MAY contain the attribute [`Qualifier`](#Qualifier). @@ -3528,7 +3528,7 @@ targets the model element to be annotated. An `edm:Annotation` element MAY contain [`edm:Annotation`](#Annotation) elements that annotate the annotation. -### Attribute `Term` +### Attribute `Term` The value of `Term` is the qualified name of a [term](#Term) in scope. ::: @@ -3583,7 +3583,7 @@ identifies an annotation. ::: {.varxml .rep} -### Attribute `Qualifier` +### Attribute `Qualifier` Annotation elements that are children of an [`edm:Annotations`](#AnnotationswithExternalTargeting) element MUST NOT @@ -3664,7 +3664,7 @@ term. ::: {.varxml .rep} -### Expression `edm:Binary` +### Expression `edm:Binary` The `edm:Binary` expression evaluates to a primitive binary value. A binary expression MUST be assigned a value conforming to the rule @@ -3690,7 +3690,7 @@ Example 43: base64url-encoded binary value (OData) ::: {.varxml .rep} -### Expression `edm:Bool` +### Expression `edm:Bool` The `edm:Bool` expression evaluates to a primitive Boolean value. A Boolean expression MUST be assigned a Boolean value. @@ -3715,7 +3715,7 @@ Example 44: ::: {.varxml .rep} -### Expression `edm:Date` +### Expression `edm:Date` The `edm:Date` expression evaluates to a primitive date value. A date expression MUST be assigned a value of type `xs:date`, see @@ -3744,7 +3744,7 @@ Example 45: ::: {.varxml .rep} -### Expression `edm:DateTimeOffset` +### Expression `edm:DateTimeOffset` The `edm:DateTimeOffset` expression evaluates to a primitive datetimestamp value with a time-zone offset. A datetimestamp expression @@ -3778,7 +3778,7 @@ Example 46: ::: {.varxml .rep} -### Expression `edm:Decimal` +### Expression `edm:Decimal` The `edm:Decimal` expression evaluates to a primitive decimal value. A decimal expression MUST be assigned a value conforming to the rule @@ -3809,7 +3809,7 @@ Example 48: element notation ::: {.varxml .rep} -### Expression `edm:Duration` +### Expression `edm:Duration` The `edm:Duration` expression evaluates to a primitive duration value. A duration expression MUST be assigned a value of type @@ -3837,7 +3837,7 @@ Example 49: ::: {.varxml .rep} -### Expression `edm:EnumMember` +### Expression `edm:EnumMember` The `edm:EnumMember` expression references a [member](#EnumerationTypeMember) of an [enumeration @@ -3882,7 +3882,7 @@ Example 51: combined value for `IsFlags` enumeration type ::: {.varxml .rep} -### Expression `edm:Float` +### Expression `edm:Float` The `edm:Float` expression evaluates to a primitive floating point (or double) value. A float expression MUST be assigned a value conforming to @@ -3908,7 +3908,7 @@ Example 52: ::: {.varxml .rep} -### Expression `edm:Guid` +### Expression `edm:Guid` The `edm:Guid` expression evaluates to a primitive guid value. A guid expression MUST be assigned a value conforming to the rule `guidValue` @@ -3936,7 +3936,7 @@ Example 53: ::: {.varxml .rep} -### Expression `edm:Int` +### Expression `edm:Int` The `edm:Int` expression evaluates to a primitive integer value. An integer MUST be assigned a value conforming to the rule `int64Value` in @@ -3967,7 +3967,7 @@ Example 55: element notation ::: {.varxml .rep} -### Expression `edm:String` +### Expression `edm:String` The `edm:String` expression evaluates to a primitive string value. A string expression MUST be assigned a value of the type `xs:string`, see @@ -3994,7 +3994,7 @@ Example 56: ::: {.varxml .rep} -### Expression `edm:TimeOfDay` +### Expression `edm:TimeOfDay` The `edm:TimeOfDay` expression evaluates to a primitive time value. A time-of-day expression MUST be assigned a value conforming to the rule @@ -4360,7 +4360,7 @@ that reuse or refer to other terms. ::: {.varxml .rep} -### Expression `edm:AnnotationPath` +### Expression `edm:AnnotationPath` The `edm:AnnotationPath` expression MAY be provided using element notation or attribute notation. @@ -4394,7 +4394,7 @@ the instance(s) identified by the path. ::: {.varxml .rep} -### Expression `edm:ModelElementPath` +### Expression `edm:ModelElementPath` The `edm:ModelElementPath` expression MAY be provided using element notation or attribute notation. @@ -4430,7 +4430,7 @@ not the entitiy or collection of entities identified by the path. ::: {.varxml .rep} -### Expression `edm:NavigationPropertyPath` +### Expression `edm:NavigationPropertyPath` The `edm:NavigationPropertyPath` expression MAY be provided using element notation or attribute notation. @@ -4473,7 +4473,7 @@ identified by the path. ::: {.varxml .rep} -### Expression `edm:PropertyPath` +### Expression `edm:PropertyPath` The `edm:PropertyPath` MAY be provided using either element notation or attribute notation. @@ -4511,7 +4511,7 @@ instances identified by the path. ::: {.varxml .rep} -### Expression `edm:Path` +### Expression `edm:Path` The `edm:Path` expression MAY be provided using element notation or attribute notation. @@ -4562,21 +4562,21 @@ evaluate to comparable values. ::: {.varxml .rep} -### Expressions `edm:And` and `edm:Or` +### Expressions `edm:And` and `edm:Or` The `And` and `Or` logical expressions are represented as elements `edm:And` and `edm:Or` that MUST contain two annotation expressions. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Expression `edm:Not` +### Expression `edm:Not` Negation expressions are represented as an element `edm:Not` that MUST contain a single annotation expression. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Expressions `edm:Eq`, `edm:Ne`, `edm:Gt`, `edm:Ge`, `edm:Lt`, `edm:Le`, `edm:Has`, and `edm:In` +### Expressions `edm:Eq`, `edm:Ne`, `edm:Gt`, `edm:Ge`, `edm:Lt`, `edm:Le`, `edm:Has`, and `edm:In` All comparison expressions are represented as an element that MUST contain two annotation expressions. @@ -4662,14 +4662,14 @@ expressions that evaluate to numeric values. ::: {.varxml .rep} -### Expression `edm:Neg` +### Expression `edm:Neg` Negation expressions are represented as an element `edm:Neg` that MUST contain a single annotation expression. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Expressions `edm:Add`, `edm:Sub`, `edm:Mul`, `edm:Div`, `edm:DivBy`, and `edm:Mod` +### Expressions `edm:Add`, `edm:Sub`, `edm:Mul`, `edm:Div`, `edm:DivBy`, and `edm:Mod` These arithmetic expressions are represented as an element that MUST contain two annotation expressions. @@ -4719,14 +4719,14 @@ function. ::: {.varxml .rep} -### Expression `edm:Apply` +### Expression `edm:Apply` The `edm:Apply` element MUST contain the `Function` attribute and MAY contain annotation expressions as operands for the applied function. It MAY contain more [`edm:Annotation`](#Annotation) elements. -### Attribute `Function` +### Attribute `Function` The value of `Function` is the [qualified name](#QualifiedName) of the client-side function to apply. @@ -4875,14 +4875,14 @@ rules as the `cast` canonical function defined in ::: {.varxml .rep} -### Expression `edm:Cast` +### Expression `edm:Cast` The `edm:Cast` element MUST contain the `Type` attribute and MUST contain exactly one expression. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Type` +### Attribute `Type` The value of `Type` is a qualified type name in scope, or the character sequence `Collection(` followed by the qualified name of a type in @@ -4918,7 +4918,7 @@ compatible. ::: {.varxml .rep} -### Expression `edm:Collection` +### Expression `edm:Collection` The `edm:Collection` element contains zero or more child expressions. ::: @@ -4964,7 +4964,7 @@ collection. ::: {.varxml .rep} -### Expression `edm:If` +### Expression `edm:If` The `edm:If` element MUST contain two or three child expressions that MUST use element notation. @@ -4997,7 +4997,7 @@ the specified type, and `false` otherwise. ::: {.varxml .rep} -### Expression `edm:UrlRef` +### Expression `edm:UrlRef` The `edm:UrlRef` expression MAY be provided using element notation or attribute notation. @@ -5038,7 +5038,7 @@ within the schema containing the expression. ::: {.varxml .rep} -### Expression `edm:LabeledElement` +### Expression `edm:LabeledElement` The `edm:LabeledElement` element MUST contain the Name attribute. @@ -5047,7 +5047,7 @@ or element notation. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Name` +### Attribute `Name` The value of `Name` is the labeled element's name. ::: @@ -5077,7 +5077,7 @@ expression as its value. ::: {.varxml .rep} -### Expression `edm:LabeledElementReference` +### Expression `edm:LabeledElementReference` The `edm:LabeledElementReference` element MUST contain the qualified name of a labeled element expression in its body. @@ -5102,7 +5102,7 @@ expression MAY be annotated. ::: {.varxml .rep} -### Expression `edm:Null` +### Expression `edm:Null` The `edm:Null` element MAY contain [`edm:Annotation`](#Annotation) elements. @@ -5153,18 +5153,18 @@ expression is equivalent to specifying an empty collection as its value. ::: {.varxml .rep} -### Expression `edm:Record` +### Expression `edm:Record` The `edm:Record` element MAY contain the `Type` attribute and MAY contain `edm:PropertyValue` elements. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Type` +### Attribute `Type` The value of `Type` is the qualified name of a structured type in scope. -### Element `edm:PropertyValue` +### Element `edm:PropertyValue` The `edm:PropertyValue` element MUST contain the `Property` attribute, and it MUST contain exactly one expression that MAY be provided using @@ -5172,7 +5172,7 @@ either element notation or attribute notation. It MAY contain [`edm:Annotation`](#Annotation) elements. -### Attribute `Property` +### Attribute `Property` The value of `Property` is the name of a property of the type of the enclosing `edm:Record` expression. @@ -5227,7 +5227,7 @@ surrounding expression. ::: {.varxml .rep} -### Expression `edm:UrlRef` +### Expression `edm:UrlRef` The `edm:UrlRef` expression MAY be provided using element notation or attribute notation. @@ -5644,167 +5644,167 @@ https://openui5.hana.ondemand.com/1.40.10/#docs/guide/87aac894a40640f89920d7b2a4 # Appendix B. Table of XML Elements and Attributes ::: toc -- [Element `edmx:Edmx`](#ElementedmxEdmx1) - - [Attribute `Version`](#AttributeVersion1.1) -- [Element `edmx:DataServices`](#ElementedmxDataServices2) -- [Element `edmx:Reference`](#ElementedmxReference3) - - [Attribute `Uri`](#AttributeUri3.1) -- [Element `edmx:Include`](#ElementedmxInclude4) - - [Attribute `Namespace`](#AttributeNamespace4.1) - - [Attribute `Alias`](#AttributeAlias4.2) -- [Element `edmx:IncludeAnnotations`](#ElementedmxIncludeAnnotations5) - - [Attribute `TermNamespace`](#AttributeTermNamespace5.1) - - [Attribute `Qualifier`](#AttributeQualifier5.2) - - [Attribute `TargetNamespace`](#AttributeTargetNamespace5.3) -- [Element `edm:Schema`](#ElementedmSchema6) - - [Attribute `Namespace`](#AttributeNamespace6.1) - - [Attribute `Alias`](#AttributeAlias6.2) -- [Element `edm:Annotations`](#ElementedmAnnotations7) - - [Attribute `Target`](#AttributeTarget7.1) - - [Attribute `Qualifier`](#AttributeQualifier7.2) -- [Element `edm:EntityType`](#ElementedmEntityType8) - - [Attribute `Name`](#AttributeName8.1) - - [Attribute `BaseType`](#AttributeBaseType8.2) - - [Attribute `Abstract`](#AttributeAbstract8.3) - - [Attribute `OpenType`](#AttributeOpenType8.4) - - [Attribute `HasStream`](#AttributeHasStream8.5) -- [Element `edm:Key`](#ElementedmKey9) -- [Element `edm:PropertyRef`](#ElementedmPropertyRef10) - - [Attribute `Name`](#AttributeName10.1) - - [Attribute `Alias`](#AttributeAlias10.2) -- [Element `edm:Property`](#ElementedmProperty11) - - [Attribute `Name`](#AttributeName11.1) - - [Attribute `Type`](#AttributeType11.2) - - [Attribute `Nullable`](#AttributeNullable11.3) - - [Attribute `MaxLength`](#AttributeMaxLength11.4) - - [Attribute `Precision`](#AttributePrecision11.5) - - [Attribute `Scale`](#AttributeScale11.6) - - [Attribute `Unicode`](#AttributeUnicode11.7) - - [Attribute `SRID`](#AttributeSRID11.8) - - [Attribute `DefaultValue`](#AttributeDefaultValue11.9) -- [Element `edm:NavigationProperty`](#ElementedmNavigationProperty12) - - [Attribute `Name`](#AttributeName12.1) - - [Attribute `Type`](#AttributeType12.2) - - [Attribute `Nullable`](#AttributeNullable12.3) - - [Attribute `Partner`](#AttributePartner12.4) - - [Attribute `ContainsTarget`](#AttributeContainsTarget12.5) -- [Element `edm:ReferentialConstraint`](#ElementedmReferentialConstraint13) - - [Attribute `Property`](#AttributeProperty13.1) - - [Attribute `ReferencedProperty`](#AttributeReferencedProperty13.2) -- [Element `edm:OnDelete`](#ElementedmOnDelete14) - - [Attribute `Action`](#AttributeAction14.1) -- [Element `edm:ComplexType`](#ElementedmComplexType15) - - [Attribute `Name`](#AttributeName15.1) - - [Attribute `BaseType`](#AttributeBaseType15.2) - - [Attribute `Abstract`](#AttributeAbstract15.3) - - [Attribute `OpenType`](#AttributeOpenType15.4) -- [Element `edm:EnumType`](#ElementedmEnumType16) - - [Attribute `Name`](#AttributeName16.1) - - [Attribute `UnderlyingType`](#AttributeUnderlyingType16.2) - - [Attribute `IsFlags`](#AttributeIsFlags16.3) -- [Element `edm:Member`](#ElementedmMember17) - - [Attribute `Name`](#AttributeName17.1) - - [Attribute `Value`](#AttributeValue17.2) -- [Element `edm:TypeDefinition`](#ElementedmTypeDefinition18) - - [Attribute `Name`](#AttributeName18.1) - - [Attribute `UnderlyingType`](#AttributeUnderlyingType18.2) -- [Element `edm:Action`](#ElementedmAction19) - - [Attribute `Name`](#AttributeName19.1) -- [Element `edm:Function`](#ElementedmFunction20) - - [Attribute `Name`](#AttributeName20.1) - - [Attribute `IsBound`](#AttributeIsBound20.2) - - [Attribute `EntitySetPath`](#AttributeEntitySetPath20.3) - - [Attribute `IsComposable`](#AttributeIsComposable20.4) -- [Element `edm:ReturnType`](#ElementedmReturnType21) - - [Attribute `Type`](#AttributeType21.1) - - [Attribute `Nullable`](#AttributeNullable21.2) -- [Element `edm:Parameter`](#ElementedmParameter22) - - [Attribute `Name`](#AttributeName22.1) - - [Attribute `Type`](#AttributeType22.2) - - [Attribute `Nullable`](#AttributeNullable22.3) -- [Element `edm:EntityContainer`](#ElementedmEntityContainer23) - - [Attribute `Name`](#AttributeName23.1) - - [Attribute `Extends`](#AttributeExtends23.2) -- [Element `edm:EntitySet`](#ElementedmEntitySet24) - - [Attribute `Name`](#AttributeName24.1) - - [Attribute `EntityType`](#AttributeEntityType24.2) - - [Attribute `IncludeInServiceDocument`](#AttributeIncludeInServiceDocument24.3) -- [Element `edm:Singleton`](#ElementedmSingleton25) - - [Attribute `Name`](#AttributeName25.1) - - [Attribute `Type`](#AttributeType25.2) - - [Attribute `Nullable`](#AttributeNullable25.3) -- [Element `edm:NavigationPropertyBinding`](#ElementedmNavigationPropertyBinding26) - - [Attribute `Path`](#AttributePath26.1) - - [Attribute `Target`](#AttributeTarget26.2) -- [Element `edm:ActionImport`](#ElementedmActionImport27) - - [Attribute `Name`](#AttributeName27.1) - - [Attribute `Action`](#AttributeAction27.2) - - [Attribute `EntitySet`](#AttributeEntitySet27.3) -- [Element `edm:FunctionImport`](#ElementedmFunctionImport28) - - [Attribute `Name`](#AttributeName28.1) - - [Attribute `Function`](#AttributeFunction28.2) - - [Attribute `EntitySet`](#AttributeEntitySet28.3) - - [Attribute `IncludeInServiceDocument`](#AttributeIncludeInServiceDocument28.4) -- [Element `edm:Term`](#ElementedmTerm29) - - [Attribute `Name`](#AttributeName29.1) - - [Attribute `Type`](#AttributeType29.2) - - [Attribute `DefaultValue`](#AttributeDefaultValue29.3) - - [Attribute `BaseTerm`](#AttributeBaseTerm29.4) - - [Attribute `AppliesTo`](#AttributeAppliesTo29.5) -- [Element `edm:Annotation`](#ElementedmAnnotation30) - - [Attribute `Term`](#AttributeTerm30.1) - - [Attribute `Qualifier`](#AttributeQualifier30.2) -- [Expression `edm:Binary`](#ExpressionedmBinary31) -- [Expression `edm:Bool`](#ExpressionedmBool32) -- [Expression `edm:Date`](#ExpressionedmDate33) -- [Expression `edm:DateTimeOffset`](#ExpressionedmDateTimeOffset34) -- [Expression `edm:Decimal`](#ExpressionedmDecimal35) -- [Expression `edm:Duration`](#ExpressionedmDuration36) -- [Expression `edm:EnumMember`](#ExpressionedmEnumMember37) -- [Expression `edm:Float`](#ExpressionedmFloat38) -- [Expression `edm:Guid`](#ExpressionedmGuid39) -- [Expression `edm:Int`](#ExpressionedmInt40) -- [Expression `edm:String`](#ExpressionedmString41) -- [Expression `edm:TimeOfDay`](#ExpressionedmTimeOfDay42) -- [Expression `edm:AnnotationPath`](#ExpressionedmAnnotationPath43) -- [Expression `edm:ModelElementPath`](#ExpressionedmModelElementPath44) -- [Expression `edm:NavigationPropertyPath`](#ExpressionedmNavigationPropertyPath45) -- [Expression `edm:PropertyPath`](#ExpressionedmPropertyPath46) -- [Expression `edm:Path`](#ExpressionedmPath47) -- [Expressions `edm:And`](#ExpressionsedmAnd48) - - [`edm:Or`](#edmOr48.1) -- [Expression `edm:Not`](#ExpressionedmNot49) -- [Expressions `edm:Eq`](#ExpressionsedmEq50) - - [`edm:Ne`](#edmNe50.1) - - [`edm:Gt`](#edmGt50.2) - - [`edm:Ge`](#edmGe50.3) - - [`edm:Lt`](#edmLt50.4) - - [`edm:Le`](#edmLe50.5) - - [`edm:Has`](#edmHas50.6) - - [`edm:In`](#edmIn50.7) -- [Expression `edm:Neg`](#ExpressionedmNeg51) -- [Expressions `edm:Add`](#ExpressionsedmAdd52) - - [`edm:Sub`](#edmSub52.1) - - [`edm:Mul`](#edmMul52.2) - - [`edm:Div`](#edmDiv52.3) - - [`edm:DivBy`](#edmDivBy52.4) - - [`edm:Mod`](#edmMod52.5) -- [Expression `edm:Apply`](#ExpressionedmApply53) - - [Attribute `Function`](#AttributeFunction53.1) -- [Expression `edm:Cast`](#ExpressionedmCast54) - - [Attribute `Type`](#AttributeType54.1) -- [Expression `edm:Collection`](#ExpressionedmCollection55) -- [Expression `edm:If`](#ExpressionedmIf56) -- [Expression `edm:UrlRef`](#ExpressionedmUrlRef57) -- [Expression `edm:LabeledElement`](#ExpressionedmLabeledElement58) - - [Attribute `Name`](#AttributeName58.1) -- [Expression `edm:LabeledElementReference`](#ExpressionedmLabeledElementReference59) -- [Expression `edm:Null`](#ExpressionedmNull60) -- [Expression `edm:Record`](#ExpressionedmRecord61) - - [Attribute `Type`](#AttributeType61.1) -- [Element `edm:PropertyValue`](#ElementedmPropertyValue62) - - [Attribute `Property`](#AttributeProperty62.1) -- [Expression `edm:UrlRef`](#ExpressionedmUrlRef63) +- [Element `edmx:Edmx`](#ElementedmxEdmx.1) + - [Attribute `Version`](#AttributeVersion.1.1) +- [Element `edmx:DataServices`](#ElementedmxDataServices.2) +- [Element `edmx:Reference`](#ElementedmxReference.3) + - [Attribute `Uri`](#AttributeUri.3.1) +- [Element `edmx:Include`](#ElementedmxInclude.4) + - [Attribute `Namespace`](#AttributeNamespace.4.1) + - [Attribute `Alias`](#AttributeAlias.4.2) +- [Element `edmx:IncludeAnnotations`](#ElementedmxIncludeAnnotations.5) + - [Attribute `TermNamespace`](#AttributeTermNamespace.5.1) + - [Attribute `Qualifier`](#AttributeQualifier.5.2) + - [Attribute `TargetNamespace`](#AttributeTargetNamespace.5.3) +- [Element `edm:Schema`](#ElementedmSchema.6) + - [Attribute `Namespace`](#AttributeNamespace.6.1) + - [Attribute `Alias`](#AttributeAlias.6.2) +- [Element `edm:Annotations`](#ElementedmAnnotations.7) + - [Attribute `Target`](#AttributeTarget.7.1) + - [Attribute `Qualifier`](#AttributeQualifier.7.2) +- [Element `edm:EntityType`](#ElementedmEntityType.8) + - [Attribute `Name`](#AttributeName.8.1) + - [Attribute `BaseType`](#AttributeBaseType.8.2) + - [Attribute `Abstract`](#AttributeAbstract.8.3) + - [Attribute `OpenType`](#AttributeOpenType.8.4) + - [Attribute `HasStream`](#AttributeHasStream.8.5) +- [Element `edm:Key`](#ElementedmKey.9) +- [Element `edm:PropertyRef`](#ElementedmPropertyRef.10) + - [Attribute `Name`](#AttributeName.10.1) + - [Attribute `Alias`](#AttributeAlias.10.2) +- [Element `edm:Property`](#ElementedmProperty.11) + - [Attribute `Name`](#AttributeName.11.1) + - [Attribute `Type`](#AttributeType.11.2) + - [Attribute `Nullable`](#AttributeNullable.11.3) + - [Attribute `MaxLength`](#AttributeMaxLength.11.4) + - [Attribute `Precision`](#AttributePrecision.11.5) + - [Attribute `Scale`](#AttributeScale.11.6) + - [Attribute `Unicode`](#AttributeUnicode.11.7) + - [Attribute `SRID`](#AttributeSRID.11.8) + - [Attribute `DefaultValue`](#AttributeDefaultValue.11.9) +- [Element `edm:NavigationProperty`](#ElementedmNavigationProperty.12) + - [Attribute `Name`](#AttributeName.12.1) + - [Attribute `Type`](#AttributeType.12.2) + - [Attribute `Nullable`](#AttributeNullable.12.3) + - [Attribute `Partner`](#AttributePartner.12.4) + - [Attribute `ContainsTarget`](#AttributeContainsTarget.12.5) +- [Element `edm:ReferentialConstraint`](#ElementedmReferentialConstraint.13) + - [Attribute `Property`](#AttributeProperty.13.1) + - [Attribute `ReferencedProperty`](#AttributeReferencedProperty.13.2) +- [Element `edm:OnDelete`](#ElementedmOnDelete.14) + - [Attribute `Action`](#AttributeAction.14.1) +- [Element `edm:ComplexType`](#ElementedmComplexType.15) + - [Attribute `Name`](#AttributeName.15.1) + - [Attribute `BaseType`](#AttributeBaseType.15.2) + - [Attribute `Abstract`](#AttributeAbstract.15.3) + - [Attribute `OpenType`](#AttributeOpenType.15.4) +- [Element `edm:EnumType`](#ElementedmEnumType.16) + - [Attribute `Name`](#AttributeName.16.1) + - [Attribute `UnderlyingType`](#AttributeUnderlyingType.16.2) + - [Attribute `IsFlags`](#AttributeIsFlags.16.3) +- [Element `edm:Member`](#ElementedmMember.17) + - [Attribute `Name`](#AttributeName.17.1) + - [Attribute `Value`](#AttributeValue.17.2) +- [Element `edm:TypeDefinition`](#ElementedmTypeDefinition.18) + - [Attribute `Name`](#AttributeName.18.1) + - [Attribute `UnderlyingType`](#AttributeUnderlyingType.18.2) +- [Element `edm:Action`](#ElementedmAction.19) + - [Attribute `Name`](#AttributeName.19.1) +- [Element `edm:Function`](#ElementedmFunction.20) + - [Attribute `Name`](#AttributeName.20.1) + - [Attribute `IsBound`](#AttributeIsBound.20.2) + - [Attribute `EntitySetPath`](#AttributeEntitySetPath.20.3) + - [Attribute `IsComposable`](#AttributeIsComposable.20.4) +- [Element `edm:ReturnType`](#ElementedmReturnType.21) + - [Attribute `Type`](#AttributeType.21.1) + - [Attribute `Nullable`](#AttributeNullable.21.2) +- [Element `edm:Parameter`](#ElementedmParameter.22) + - [Attribute `Name`](#AttributeName.22.1) + - [Attribute `Type`](#AttributeType.22.2) + - [Attribute `Nullable`](#AttributeNullable.22.3) +- [Element `edm:EntityContainer`](#ElementedmEntityContainer.23) + - [Attribute `Name`](#AttributeName.23.1) + - [Attribute `Extends`](#AttributeExtends.23.2) +- [Element `edm:EntitySet`](#ElementedmEntitySet.24) + - [Attribute `Name`](#AttributeName.24.1) + - [Attribute `EntityType`](#AttributeEntityType.24.2) + - [Attribute `IncludeInServiceDocument`](#AttributeIncludeInServiceDocument.24.3) +- [Element `edm:Singleton`](#ElementedmSingleton.25) + - [Attribute `Name`](#AttributeName.25.1) + - [Attribute `Type`](#AttributeType.25.2) + - [Attribute `Nullable`](#AttributeNullable.25.3) +- [Element `edm:NavigationPropertyBinding`](#ElementedmNavigationPropertyBinding.26) + - [Attribute `Path`](#AttributePath.26.1) + - [Attribute `Target`](#AttributeTarget.26.2) +- [Element `edm:ActionImport`](#ElementedmActionImport.27) + - [Attribute `Name`](#AttributeName.27.1) + - [Attribute `Action`](#AttributeAction.27.2) + - [Attribute `EntitySet`](#AttributeEntitySet.27.3) +- [Element `edm:FunctionImport`](#ElementedmFunctionImport.28) + - [Attribute `Name`](#AttributeName.28.1) + - [Attribute `Function`](#AttributeFunction.28.2) + - [Attribute `EntitySet`](#AttributeEntitySet.28.3) + - [Attribute `IncludeInServiceDocument`](#AttributeIncludeInServiceDocument.28.4) +- [Element `edm:Term`](#ElementedmTerm.29) + - [Attribute `Name`](#AttributeName.29.1) + - [Attribute `Type`](#AttributeType.29.2) + - [Attribute `DefaultValue`](#AttributeDefaultValue.29.3) + - [Attribute `BaseTerm`](#AttributeBaseTerm.29.4) + - [Attribute `AppliesTo`](#AttributeAppliesTo.29.5) +- [Element `edm:Annotation`](#ElementedmAnnotation.30) + - [Attribute `Term`](#AttributeTerm.30.1) + - [Attribute `Qualifier`](#AttributeQualifier.30.2) +- [Expression `edm:Binary`](#ExpressionedmBinary.31) +- [Expression `edm:Bool`](#ExpressionedmBool.32) +- [Expression `edm:Date`](#ExpressionedmDate.33) +- [Expression `edm:DateTimeOffset`](#ExpressionedmDateTimeOffset.34) +- [Expression `edm:Decimal`](#ExpressionedmDecimal.35) +- [Expression `edm:Duration`](#ExpressionedmDuration.36) +- [Expression `edm:EnumMember`](#ExpressionedmEnumMember.37) +- [Expression `edm:Float`](#ExpressionedmFloat.38) +- [Expression `edm:Guid`](#ExpressionedmGuid.39) +- [Expression `edm:Int`](#ExpressionedmInt.40) +- [Expression `edm:String`](#ExpressionedmString.41) +- [Expression `edm:TimeOfDay`](#ExpressionedmTimeOfDay.42) +- [Expression `edm:AnnotationPath`](#ExpressionedmAnnotationPath.43) +- [Expression `edm:ModelElementPath`](#ExpressionedmModelElementPath.44) +- [Expression `edm:NavigationPropertyPath`](#ExpressionedmNavigationPropertyPath.45) +- [Expression `edm:PropertyPath`](#ExpressionedmPropertyPath.46) +- [Expression `edm:Path`](#ExpressionedmPath.47) +- [Expressions `edm:And`](#ExpressionsedmAnd.48) + - [`edm:Or`](#edmOr.48.1) +- [Expression `edm:Not`](#ExpressionedmNot.49) +- [Expressions `edm:Eq`](#ExpressionsedmEq.50) + - [`edm:Ne`](#edmNe.50.1) + - [`edm:Gt`](#edmGt.50.2) + - [`edm:Ge`](#edmGe.50.3) + - [`edm:Lt`](#edmLt.50.4) + - [`edm:Le`](#edmLe.50.5) + - [`edm:Has`](#edmHas.50.6) + - [`edm:In`](#edmIn.50.7) +- [Expression `edm:Neg`](#ExpressionedmNeg.51) +- [Expressions `edm:Add`](#ExpressionsedmAdd.52) + - [`edm:Sub`](#edmSub.52.1) + - [`edm:Mul`](#edmMul.52.2) + - [`edm:Div`](#edmDiv.52.3) + - [`edm:DivBy`](#edmDivBy.52.4) + - [`edm:Mod`](#edmMod.52.5) +- [Expression `edm:Apply`](#ExpressionedmApply.53) + - [Attribute `Function`](#AttributeFunction.53.1) +- [Expression `edm:Cast`](#ExpressionedmCast.54) + - [Attribute `Type`](#AttributeType.54.1) +- [Expression `edm:Collection`](#ExpressionedmCollection.55) +- [Expression `edm:If`](#ExpressionedmIf.56) +- [Expression `edm:UrlRef`](#ExpressionedmUrlRef.57) +- [Expression `edm:LabeledElement`](#ExpressionedmLabeledElement.58) + - [Attribute `Name`](#AttributeName.58.1) +- [Expression `edm:LabeledElementReference`](#ExpressionedmLabeledElementReference.59) +- [Expression `edm:Null`](#ExpressionedmNull.60) +- [Expression `edm:Record`](#ExpressionedmRecord.61) + - [Attribute `Type`](#AttributeType.61.1) +- [Element `edm:PropertyValue`](#ElementedmPropertyValue.62) + - [Attribute `Property`](#AttributeProperty.62.1) +- [Expression `edm:UrlRef`](#ExpressionedmUrlRef.63) ::: ------- diff --git a/docs/odata-temporal-ext/odata-temporal-ext.html b/docs/odata-temporal-ext/odata-temporal-ext.html index d9960b80f..5df7774af 100644 --- a/docs/odata-temporal-ext/odata-temporal-ext.html +++ b/docs/odata-temporal-ext/odata-temporal-ext.html @@ -330,819 +330,18 @@

2.1 Exampl

Example 2: model for api-1 with snapshot entity sets (hidden application time), key properties marked with {id}

- - - - - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Jobtitle: Edm.String -
-
-
-
- - Jobtitle: Edm.String - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - - - - -
-
-
-
- - * - -
-
- - Employees - -
-
-
-
-
- - *... - -
-
- - - -
-
-
-
-
- - 1 - -
-
- - Department - -
-
-
-
-
-
- - 1... - -
-
-
- - - - - Text is not SVG - cannot display - - - -
- +

$\[include diagrams/api-1.drawio.svg\]$

and

Example 3: model for api-2 with timeline entity sets (visible application time), key properties marked with {id}

- - - - - - - - - -
-
-
- Employee_history -
-
-
-
- - Employee_history - -
-
- - - -
-
-
- From: Edm.Date {id} -
-
-
-
- - From: Edm.Date {id} - -
-
- - - -
-
-
- To: Edm.Date -
-
-
-
- - To: Edm.Date - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Jobtitle: Edm.String -
-
-
-
- - Jobtitle: Edm.String - -
-
- - - - - - -
-
-
- Department_history -
-
-
-
- - Department_history - -
-
- - - -
-
-
- From: Edm.Date {id} -
-
-
-
- - From: Edm.Date {id} - -
-
- - - -
-
-
- To: Edm.Date -
-
-
-
- - To: Edm.Date - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Budget: Edm.Decimal -
-
-
-
- - Budget: Edm.Decimal - -
-
- - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - - - -
-
-
-
- - * - -
-
- - Employees - -
-
-
-
-
- - *... - -
-
- - - - - -
-
-
-
- - * - -
-
- history -
-
-
-
-
- - *... - -
-
- - - - - -
-
-
-
- - * - -
-
- history -
-
-
-
-
- - *... - -
-
- - - -
-
-
-
-
- - 1 - -
-
- - Department - -
-
-
-
-
-
- - 1... - -
-
- - -
- - - - - Text is not SVG - cannot display - - - -
- +

$\[include diagrams/api-2.drawio.svg\]$

2.2 Example Data

Both API models in the previous section are views on the same underlying data. A possible storage model for this data is:

Example 4: simple storage model: object key in dark green, temporal sub-key in light green, foreign keys in orange, non-key fields in blue

- - - - - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - - -
-
-
- ID: String {id} -
-
-
-
- - ID: String {id} - -
-
- - - - -
-
-
- From: Date {id} -
-
-
-
- - From: Date {id} - -
-
- - - - -
-
-
- To: Date -
-
-
-
- - To: Date - -
-
- - - - -
-
-
- Name: String -
-
-
-
- - Name: String - -
-
- - - - -
-
-
- Jobtitle: String -
-
-
-
- - Jobtitle: String - -
-
- - - - -
-
-
- Department.ID -
-
-
-
- - Department.ID - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - - -
-
-
- ID: String {id} -
-
-
-
- - ID: String {id} - -
-
- - - - -
-
-
- From: Date {id} -
-
-
-
- - From: Date {id} - -
-
- - - - -
-
-
- To: Date -
-
-
-
- - To: Date - -
-
- - - - -
-
-
- Name: String -
-
-
-
- - Name: String - -
-
- - - - -
-
-
- Budget: Decimal -
-
-
-
- - Budget: Decimal - -
-
- - - -
-
-
-
-
- 1 -
-
-
-
-
-
- - 1 - -
-
- - -
- - - - - Text is not SVG - cannot display - - - -
- +

$\[include diagrams/db.drawio.svg\]$

The period start date is used as the temporal sub-key for identifying time slices together with the key of the temporal object.

Note: alternatively, the period end date could have been used as temporal sub-key, or the primary key of the time slice tables could have been an artificial key (sequence number, UUID, ...) with both the temporal object key and the period boundaries as non-key fields.

The following example data will be used to further illustrate the capabilities introduced by this extension. It assumes that the example services only support four-digit years.

diff --git a/docs/odata-temporal-ext/odata-temporal-ext.md b/docs/odata-temporal-ext/odata-temporal-ext.md index 3c033c901..c5b8b5347 100644 --- a/docs/odata-temporal-ext/odata-temporal-ext.md +++ b/docs/odata-temporal-ext/odata-temporal-ext.md @@ -372,192 +372,7 @@ Example 2: model for `api-1` with snapshot entit application time), key properties marked with {id} ::: - - - - - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Jobtitle: Edm.String -
-
-
-
- - Jobtitle: Edm.String - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - - - - -
-
-
-
- - * - -
-
- - Employees - -
-
-
-
-
- - *... - -
-
- - - -
-
-
-
-
- - 1 - -
-
- - Department - -
-
-
-
-
-
- - 1... - -
-
-
- - - - - Text is not SVG - cannot display - - - -
+$$$include diagrams/api-1.drawio.svg$$$ and @@ -566,361 +381,7 @@ Example 3: model for `api-2` with timeline entit application time), key properties marked with {id} ::: - - - - - - - - - -
-
-
- Employee_history -
-
-
-
- - Employee_history - -
-
- - - -
-
-
- From: Edm.Date {id} -
-
-
-
- - From: Edm.Date {id} - -
-
- - - -
-
-
- To: Edm.Date -
-
-
-
- - To: Edm.Date - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Jobtitle: Edm.String -
-
-
-
- - Jobtitle: Edm.String - -
-
- - - - - - -
-
-
- Department_history -
-
-
-
- - Department_history - -
-
- - - -
-
-
- From: Edm.Date {id} -
-
-
-
- - From: Edm.Date {id} - -
-
- - - -
-
-
- To: Edm.Date -
-
-
-
- - To: Edm.Date - -
-
- - - -
-
-
- Name: Edm.String -
-
-
-
- - Name: Edm.String - -
-
- - - -
-
-
- Budget: Edm.Decimal -
-
-
-
- - Budget: Edm.Decimal - -
-
- - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - -
-
-
- ID: Edm.String {id} -
-
-
-
- - ID: Edm.String {id} - -
-
- - - - - -
-
-
-
- - * - -
-
- - Employees - -
-
-
-
-
- - *... - -
-
- - - - - -
-
-
-
- - * - -
-
- history -
-
-
-
-
- - *... - -
-
- - - - - -
-
-
-
- - * - -
-
- history -
-
-
-
-
- - *... - -
-
- - - -
-
-
-
-
- - 1 - -
-
- - Department - -
-
-
-
-
-
- - 1... - -
-
- - -
- - - - - Text is not SVG - cannot display - - - -
+$$$include diagrams/api-2.drawio.svg$$$ ## 2.2 Example Data @@ -932,266 +393,7 @@ Example 4: simple storage model: object key in dark green, temporal sub-key in light green, foreign keys in orange, non-key fields in blue ::: - - - - - - - - - -
-
-
- Employee -
-
-
-
- - Employee - -
-
- - - - -
-
-
- ID: String {id} -
-
-
-
- - ID: String {id} - -
-
- - - - -
-
-
- From: Date {id} -
-
-
-
- - From: Date {id} - -
-
- - - - -
-
-
- To: Date -
-
-
-
- - To: Date - -
-
- - - - -
-
-
- Name: String -
-
-
-
- - Name: String - -
-
- - - - -
-
-
- Jobtitle: String -
-
-
-
- - Jobtitle: String - -
-
- - - - -
-
-
- Department.ID -
-
-
-
- - Department.ID - -
-
- - - - - - -
-
-
- Department -
-
-
-
- - Department - -
-
- - - - -
-
-
- ID: String {id} -
-
-
-
- - ID: String {id} - -
-
- - - - -
-
-
- From: Date {id} -
-
-
-
- - From: Date {id} - -
-
- - - - -
-
-
- To: Date -
-
-
-
- - To: Date - -
-
- - - - -
-
-
- Name: String -
-
-
-
- - Name: String - -
-
- - - - -
-
-
- Budget: Decimal -
-
-
-
- - Budget: Decimal - -
-
- - - -
-
-
-
-
- 1 -
-
-
-
-
-
- - 1 - -
-
- - -
- - - - - Text is not SVG - cannot display - - - -
+$$$include diagrams/db.drawio.svg$$$ The period start date is used as the temporal sub-key for identifying time slices together with the key of the temporal object. diff --git a/lib/number.js b/lib/number.js index 7a9caa2bd..04ab66f1e 100644 --- a/lib/number.js +++ b/lib/number.js @@ -92,7 +92,7 @@ class Number { "." + this.number[this.match]; if (m[1].endsWith("isec")) { - m[3] += this.number[this.match]; + m[3] += "." + this.number[this.match]; this.number[this.match] = "i" + this.number[this.match]; } if (m[1].endsWith("sec")) {