Description: oasis

OData Version 4.0 Errata 03

Committee Specification Draft 01 /
Public Review Draft 01

10 March 2016

Specification URIs

This version:

http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/odata-v4.0-errata03-csprd01.doc (Authoritative)

http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/odata-v4.0-errata03-csprd01.html

http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/odata-v4.0-errata03-csprd01.pdf

Previous version:

N/A

Latest version:

http://docs.oasis-open.org/odata/odata/v4.0/errata03/odata-v4.0-errata03.doc (Authoritative)

http://docs.oasis-open.org/odata/odata/v4.0/errata03/odata-v4.0-errata03.html

http://docs.oasis-open.org/odata/odata/v4.0/errata03/odata-v4.0-errata03.pdf

Technical Committee:

OASIS Open Data Protocol (OData) TC

Chairs:

Ralf Handl (ralf.handl@sap.com), SAP SE

Ram Jeyaraman (Ram.Jeyaraman@microsoft.com), Microsoft

Editors:

Michael Pizzo (mikep@microsoft.com), Microsoft

Ralf Handl (ralf.handl@sap.com), SAP SE

Martin Zurmuehl (martin.zurmuehl@sap.com), SAP SE

Hubert Heijkers (hubert.heijkers@nl.ibm.com), IBM

Additional artifacts:

This prose specification is one component of a Work Product that also includes:

·         OData Version 4.0. Part 1: Protocol Plus Errata 03. Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. 10 March 2016. OASIS Standard incorporating Draft 01 of Errata 03. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/part1-protocol/odata-v4.0-errata03-csprd01-part1-protocol-complete.html.

·         OData Version 4.0. Part 2: URL Conventions Plus Errata 03. Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. 10 March 2016. OASIS Standard incorporating Draft 01 of Errata 03. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/part2-url-conventions/odata-v4.0-errata03-csprd01-part2-url-conventions-complete.html.

·         OData Version 4.0. Part 3: Common Schema Definition Language (CSDL) Plus Errata 03. Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. 10 March 2016. OASIS Standard incorporating Draft 01 of Errata 03. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/part3-csdl/odata-v4.0-errata03-csprd01-part3-csdl-complete.html.

·         ABNF components: OData ABNF Construction Rules Version 4.0 and OData ABNF Test Cases. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/abnf/.

·         Vocabulary components: OData Core Vocabulary, OData Measures Vocabulary and OData Capabilities Vocabulary. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/vocabularies/.

·         XML schemas: OData EDMX XML Schema and OData EDM XML Schema. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/schemas/.

·         OData Metadata Service Entity Model: http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/complete/models/.

·         Change-marked (redlined) versions of OData Version 4.0 Part 1, Part 2, and Part 3. OASIS Standard incorporating Draft 01 of Errata 03. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/redlined/.

Related work:

This specification lists Errata for:

·         OData Version 4.0, a multi-part Work Product which includes:

o    OData Version 4.0. Part 1: Protocol. 24 February 2014. http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html.

o    OData Version 4.0. Part 2: URL Conventions. 24 February 2014. http://docs.oasis-open.org/odata/odata/v4.0/os/part2-url-conventions/odata-v4.0-os-part2-url-conventions.html.

o    OData Version 4.0. Part 3: Common Schema Definition Language (CSDL). 24 February 2014. http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html.

o    ABNF components: OData ABNF Construction Rules Version 4.0 and OData ABNF Test Cases. http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/.

o    Vocabulary components: OData Core Vocabulary, OData Measures Vocabulary and OData Capabilities Vocabulary. http://docs.oasis-open.org/odata/odata/v4.0/os/vocabularies/.

o    Schema components: edm.xsd and edmx.xsd. http://docs.oasis-open.org/odata/odata/v4.0/os/schemas/.

o    Model components: MetadataService.edmx. http://docs.oasis-open.org/odata/odata/v4.0/os/models/.

This specification is related to:

·         OData Atom Format Version 4.0. Edited by Martin Zurmuehl, Michael Pizzo, and Ralf Handl. Latest version. http://docs.oasis-open.org/odata/odata-atom-format/v4.0/odata-atom-format-v4.0.html.

·         OData JSON Format Version 4.0. Edited by Ralf Handl, Michael Pizzo, and Mark Biamonte. Latest version. http://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html.

Abstract:

This document lists Errata for OData Version 4.0.

Status:

This document was last revised or approved by the OASIS Open Data Protocol (OData) TC on the above date. The level of approval is also listed above. Check the “Latest version” location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata#technical.

TC members should send comments on this specification to the TC’s email list. Others should send comments to the TC’s public comment list, after subscribing to it by following the instructions at the “Send A Comment” button on the TC’s web page at https://www.oasis-open.org/committees/odata/.

For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC’s web page (https://www.oasis-open.org/committees/odata/ipr.php).

Citation format:

When referencing this specification the following citation format should be used:

[OData-v4.0-errata03]

OData Version 4.0 Errata 03. Edited by Michael Pizzo, Ralf Handl, Martin Zurmuehl, and Hubert Heijkers. 10 March 2016. OASIS Committee Specification Draft 01 / Public Review Draft 01. http://docs.oasis-open.org/odata/odata/v4.0/errata03/csprd01/odata-v4.0-errata03-csprd01.html. Latest version: http://docs.oasis-open.org/odata/odata/v4.0/errata03/odata-v4.0-errata03.html.

 

Notices

Copyright © OASIS Open 2016. All Rights Reserved.

All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.

OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.

The name "OASIS" is a trademark of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see https://www.oasis-open.org/policies-guidelines/trademark for above guidance.

Table of Contents

1        Introduction. 6

1.1 Normative References. 6

2        Part 1: Protocol 7

3        Part 2: URL Conventions. 9

4        Part 3: Common Schema Definition Language. 11

5        ABNF Construction Rules. 13

6        ABNF Test Cases. 17

7        MetadataService.edmx. 21

Appendix A.       Acknowledgments. 22

Appendix B.       Revision History. 23

 

 


1      Introduction

This document lists the approved changes to the OData Version 4.0 specification and contains one chapter per changed part of the specification.

Additional documents containing the final specification text with these changes applied are also available and linked in section "Additional artifacts" on the title page.

1.1 Normative References

 [OData-Protocol]    OData Version 4.0 Part 1: Protocol.
See link in “Related work” section on cover page.

2      Part 1: Protocol

Section

Issue

Comment

All sections

668

Replaced “ATOM” with “Atom”

5.2 Model Versioning

769

Term was missing in list of model elements

6.6 Format Extensibility

768

Removed superfluous text that was added by broken bookmark

7 Formats

861, 913

Clarified behavior if no format is explicitly requested

 

768

Removed superfluous text that was added by broken bookmark

8.1.1 Header Content-Type

 

908

Align with RFC7231

916

Clarify format parameter is significant

8.2.1 Header Accept

916

Service should not add format parameter to response

8.2.4 Header If-Match

766

Reference changed from RFC7230 to RFC7232

8.2.5 Header If-None-Match

766

Reference changed from RFC7230 to RFC7232

8.2.8.4 Preference odata.include-annotations

788

Clarified precedence rules for patterns in the header value

 

774

Pattern syntax now covers full annotation syntax

8.3.1 Header ETag

852

Removed leftover fragment from previous edit

8.3.3 Header OData-EntityId

830

Clarified when header is required

 

853

Corrected typo

9.1.6 Response Code 304 Not Modified

766

Reference changed from RFC7230 to RFC7231

9.2.4. Response Code 412 Precondition Failed

766

Reference changed from RFC7230 to RFC7232

10.4 Singleton

742

Adapted non-normative example

10.17 Delta Response

837

Adapted non-normative example

11.2 Requesting Data

861, 913

Clarified behavior if no format is explicitly requested

11.2.3 Requesting the Media Stream of a Media Entity

882

Added missing section.

11.2.5.1 System Query Option $select

847

Clarified use of namespace aliases

11.2.5.2.1.1 Expand Option $levels

742

Adapted non-normative example

11.2.6.1.3 Parameter Alias

775

Clarified use of parameter aliases

11.2.6.2 System Query Option $orderby

791

Clarified sorting of Boolean and Geo values  

 

668

Corrected typo in non-normative example

11.2.8 Requesting Entity References

882

Note that services may return 204 for reference to single valued nav prop whose value is null

11.3.1 Delta Links

837

Clarified use of $deltatoken

 

877

Clarified tracking of orphaned entities

11.4.2.2 Create Related Entities When Creating an Entity

870, 794

Referenced to relevant related sections instead of incompletely citing them

11.4.3 Update an Entity

893

Clarified when @odata.id and @odata.type are required

11.4.6.1 Add a Reference to a Collection-Valued Navigation Property

749

Clarified behavior when reference already exists

11.5.1 Binding an Operation to a Resource

790

Corrected typo in non-normative example

11.5.3.1 Invoking a Function

776

Clarified rules for function invocation

11.5.4.1 Invoking an Action

761

Clarified rules for Location header

 

765

Extended non-normative example

11.6 Asynchronous Requests

766

Corrected reference to RFC7230

11.7.2 Batch Request Body

823

Clarified use of Content-Transfer-Encoding header

 

668

Corrected non-normative example

 

778

Changed non-normative example

11.7.3 Change Sets

869

Clarified placement of Content-ID header

11.7.3.1 Referencing New Entities in a Change Set

479

Clarified use of content-id referencing

 

668

Adapted non-normative example

11.7.4 Responding to a Batch Request

668

Corrected non-normative example

11.7.5 Asynchronous Batch Requests

822

Corrected non-normative example

13.1 OData Service Conformance Levels

668

Corrected typo

13.1.1 OData Minimal Conformance Level

830

Clarified use of OData-EntityId header

Appendix A. Acknowledgments

767

Completed list of contributors

3      Part 2: URL Conventions

Section

Issue

Comment

All sections

668

Replaced “ATOM” with “Atom”

1.2 Normative References

917

Copied reference to XML Schema from Part 3 CSDL

2 URL Components

903

Clarified precedence of prose specification over ABNF

4.3.1 Canonical URL

755

Clarified key representation in canonical URLs

5.1 System Query Options

835

Completed list of HTTP verbs

5.1.1.2.1 Addition

917

Clarified rules for time-related operands

 

784

Clarified rules for decimal operands

5.1.1.2.2 Subtraction

917

Clarified rules for time-related operands

 

784

Clarified rules for decimal operands

5.1.1.2.4 Multiplication

777

Clarified behavior with duration operand

 

784

Clarified rules for decimal operands

5.1.1.2.5 Division

 

777

Clarified behavior with duration operand

784

Clarified rules for decimal operands

785

Clarified rules for integer division

5.1.1.2.6 Modulo

784

Clarified rules for decimal operands

5.1.1.2.7 Arithmetic Operator Examples

785

Add example for integer division

5.1.1.5 String Functions

850

Added section header

5.1.1.5.4 indexof

780

Clarified result if no occurrence is found

5.1.1.5.7 substring

781

Clarified result for edge cases

5.1.1.11.2 Complex and Collection Literals

758

Corrected non-normative example

5.1.1.15 Numeric Promotion

785

Clarified rules for numeric promotion

5.1.2 System Query Option $expand

793

Clarified use of * for complex properties

 

892

Clarified behavior for dynamic properties

 

840

Added example

 

741

Corrected non-normative example

5.1.3 System Query Option $select

891

Clarified behavior for dynamic properties

5.3 Parameter Aliases

775

Clarified use of parameter aliases

4      Part 3: Common Schema Definition Language

Section

Issue

Comment

All sections

668

Replaced “ATOM” with “Atom”

3.5 Element edmx:IncludeAnnotations

742

Adapted non-normative example

6.2.1 Attribute Nullable

803

Clarified default and use of Nullable for collections

6.2.2 Attribute MaxLength

858

Clarified meaning of MaxLength for Binary values

6.2.3 Attribute Precision

668

Replaced “allowed” with “significant”

6.2.4 Attribute Scale

789

Clarified behavior for Precision equal to Scale

 

801

Clarified behavior for of negative Scale

6.2.5 Attribute Unicode

734

Clarified behavior for Unicode=false

10.2.2 Attribute Value

819

Clarified behavior for multiple enumeration members with same value

12.2.3 Attribute IsComposable

746

Clarified allowed subsequent path segments and query options

13 Entity Container

742

Adapted non-normative example

13.1.2 Attribute Extends

733

Clarified treatment of cycles introduced by Extends

14 Vocabulary and Annotation

912

Clarified treatment of unknown and invalid annotations

14.1.5 Attribute AppliesTo

810

Corrected non-normative example

14.2.1 Attribute Target

865

Completed list of possible targets

 

821

Clarified targeting of nested properties

14.4.6 Expression edm:Duration

752

Corrected non-normative example

14.5.2 Expression edm:AnnotationPath

825

Clarified traversal of multi-valued properties

14.5.3.1.2 Function odata.fillUriTemplate

782

Changed non-normative example

14.5.10 Expression edm:Null

880

Clarified that edm:Null can be annotated

14.5.11 Expression edm:NavigationPropertyPath

751

Clarified meaning of edm:NavigationPropertyPath and edm:PropertyPath

14.5.13 Expression edm:PropertyPath

751

Clarified meaning of edm:NavigationPropertyPath and edm:PropertyPath

15.6 Entity Container

832

Corrected typo in diagram

 

878

Adapted non-normative example

16.1 Products and Categories Example

742

Adapted non-normative example

5      ABNF Construction Rules

Note: line numbers are for the new Errata03 revision of the document.

Line

Issue

Comment

121-124

903

Type-cast segment after collection of complex type

   / complexColFunctionImportCall   [ collectioncomplexColPath ]

   / complexFunctionImportCall      [ complexPath ]

   / primitiveColFunctionImportCall [ collectionprimitiveColPath ]

   / primitiveFunctionImportCall    [ singleprimitivePath ]

126

899

Type-cast segment after $all

             / '$all' [ "/" qualifiedEntityTypeName ]

129-132

903

Type-cast segment after collection of complex type

collectionNavPath    = keyPredicate [ singleNavigation ]

                     / collectionPathboundOperation

                     / count

                     / ref

134-137

775

Parameter aliases in key segment

simpleKey        = OPEN ( parameterAlias / keyPropertyValue ) CLOSE

compoundKey      = OPEN keyValuePair *( COMMA keyValuePair ) CLOSE

keyValuePair     = ( primitiveKeyProperty / keyPropertyAlias  ) EQ ( parameterAlias / keyPropertyValue )

150-168

903

Type-cast segment after collection of complex type

propertyPath = entityColNavigationProperty [ collectionNavigation ]

             / entityNavigationProperty    [ singleNavigation ]

             / complexColProperty          [ collectioncomplexColPath ]

             / complexProperty             [ complexPath ]

             / primitiveColProperty        [ collectionprimitiveColPath ]

             / primitiveProperty           [ singleprimitivePath ]

             / streamProperty              [ boundOperation ]

 

collectionprimitiveColPath = count / boundOperation

 

singleprimitivePath = value / boundOperation

 

complexColPath = [ "/" qualifiedComplexTypeName ]

                 [ count / boundOperation ]

 

complexPath    = [ "/" qualifiedComplexTypeName ]

                 ([ "/" propertyPath

                 / boundOperation

                 )]

177-184

753

903

Replaced “Func” with “Function in rule names

Type-cast segment after collection of complex type

boundOperation = "/" ( boundActionCall

               / boundEntityColFunctionCall    [ collectionNavigation ]

               / boundEntityFunctionCall       [ singleNavigation ]

               / boundComplexColFunctionCall   [ collectioncomplexColPath ]

               / boundComplexFunctionCall      [ complexPath ]

               / boundPrimitiveColFunctionCall [ collectionprimitiveColPath ]

               / boundPrimitiveFunctionCall    [ singleprimitivePath ]

               )

191-201

753

Replaced “Func” with “Function in rule names

; The following boundXxxFunctionCall rules have the added restrictions that

;  - the function MUST support binding, and

;  - the binding parameter type MUST match the type of resource identified by the

;    URI immediately preceding (to the left) of the boundXxxFunctionCall, and

;  - the functionParameters MUST NOT include the bindingParameter.

boundEntityFunctionCall       = namespace "." entityFunction       functionParameters

boundEntityColFunctionCall    = namespace "." entityColFunction    functionParameters

boundComplexFunctionCall      = namespace "." complexFunction      functionParameters

boundComplexColFunctionCall   = namespace "." complexColFunction   functionParameters

boundPrimitiveFunctionCall    = namespace "." primitiveFunction    functionParameters

boundPrimitiveColFunctionCall = namespace "." primitiveColFunction functionParameters

239-241

793

Reserve $deltatoken

systemQueryOption = deltatoken

                  / expand

                  / filter

259-261

793

Expand * on complex type

expandPath        = [ ( qualifiedEntityTypeName / qualifiedComplexTypeName ) "/" ]

                    *( ( complexProperty / complexColProperty ) "/" [ qualifiedComplexTypeName "/" ] )

                    ( STAR / navigationProperty [ "/" qualifiedEntityTypeName ] )

334-335

793

Reserve $deltatoken

deltatoken = '$deltatoken' EQ 1*( qchar-no-AMP )

435-442

903

Type-cast segment after collection of complex type

propertyPathExpr = ( entityColNavigationProperty [ collectionNavigationExpr ]

             / entityNavigationProperty    [ singleNavigationExpr ]

             / complexColProperty          [ collectioncomplexColPathExpr ]

             / complexProperty             [ complexPathExpr ]

             / primitiveColProperty        [ collectionPathExpr ]

             / primitiveProperty           [ singleprimitivePathExpr ]

             / streamProperty              [ singleprimitivePathExpr ]

             )

449-469

903

Type-cast segment after collection of complex type

collectionNavigationExpr = [ "/" qualifiedEntityTypeName ]

                           ([ keyPredicate [ singleNavigationExpr ]

                           / collectionPathExpr

                           )]

 

singleNavigationExpr = "/" memberExpr

 

complexColPathExpr = [ "/" qualifiedComplexTypeName ]

                     [ collectionPathExpr ]

 

collectionPathExpr = count

                   / "/" boundFunctionExpr

                   / "/" anyExpr

                   / "/" allExpr

 

complexPathExpr = [ "/" [ qualifiedComplexTypeName ]

                  ([ "/" propertyPathExpr

                  /  "/" boundFunctionExpr

                  )]

 

singleprimitivePathExpr = "/" boundFunctionExpr

474-481

903

Type-cast segment after collection of complex type

functionExpr = namespace "."

               ( entityColFunction    functionExprParameters [ collectionNavigationExpr ]

               / entityFunction       functionExprParameters [ singleNavigationExpr ]

               / complexColFunction   functionExprParameters [ collectioncomplexColPathExpr ]

               / complexFunction      functionExprParameters [ complexPathExpr ]

               / primitiveColFunction functionExprParameters [ collectionPathExpr ]

               / primitiveFunction    functionExprParameters [ singleprimitiveExpr ]

               )

545-547

783

Allow percent-encoded parentheses

minDateTimeMethodCallExpr = 'mindatetime(' OPEN BWS CLOSE')'

maxDateTimeMethodCallExpr = 'maxdatetime(' OPEN BWS CLOSE')'

nowMethodCallExpr         = 'now(' OPEN BWS CLOSE')'

1020-1025

774

Qualifier for annotations missing:

annotationIdentifier = [ excludeOperator ]

                       ( STAR

                       / namespace "." ( termName / STAR )

                       )

                       [ "#" odataIdentifier ]

excludeOperator      = "-"

6      ABNF Test Cases

Note: line numbers are for the new Errata03 revision of the document.

Line

Issue

Comment

234-243

668

Additional constraints for rule checking

  <Constraint Rule="parameterAlias">

    <Match>@c</Match>

    <Match>@cat</Match>

    <Match>@color</Match>

    <Match>@expression</Match>

    <Match>@key</Match>

    <Match>@ref</Match>

    <Match>@title</Match>

    <Match>@word</Match>

  </Constraint>

580

668

  <TestCase Name="2 URL Components - key with key property alias" Rule="resourcePath">

583-588

775

Key with parameter alias

  <TestCase Name="2 URL Components - key with parameter alias - short form" Rule="odataRelativeUri">

    <Input>Categories(@key)?@key=1</Input>

  </TestCase>

  <TestCase Name="2 URL Components - key with parameter alias - long form" Rule="odataRelativeUri">

    <Input>Categories(ID=@key)?@key=1</Input>

  </TestCase>

914-931

903

Type-cast with complex type

  <TestCase Name="4.9 Inheritance - complex type" Rule="odataRelativeUri">

    <Input>Products(1)/Address/Model.AddressWithLocation</Input>

  </TestCase>

  <TestCase Name="4.9 Inheritance - complex type with property" Rule="odataRelativeUri">

    <Input>Products(1)/Address/Model.AddressWithLocation/Street</Input>

  </TestCase>

  <TestCase Name="4.9 Inheritance - collection of complex type" Rule="odataRelativeUri">

    <Input>Products(1)/Addresses/Model.AddressWithLocation</Input>

  </TestCase>

  <TestCase Name="4.9 Inheritance - expressions: complex type" Rule="propertyPathExpr">

    <Input>Address/Model.AddressWithLocation</Input>

  </TestCase>

  <TestCase Name="4.9 Inheritance - expressions: complex type with path" Rule="propertyPathExpr">

    <Input>Address/Model.AddressWithLocation/Street</Input>

  </TestCase>

  <TestCase Name="4.9 Inheritance - expressions: collection of complex type" Rule="propertyPathExpr">

    <Input>Addresses/Model.AddressWithLocation</Input>

  </TestCase>

950-955

899

$all with type-cast

  <TestCase Name="4.12 Addressing All Entities in a Service" Rule="odataRelativeUri">

    <Input>$all?$search=red</Input>

  </TestCase>

  <TestCase Name="4.12 Addressing All Entities in a Service - with type cast" Rule="odataRelativeUri">

    <Input>$all/Model.Customer?$filter=contains(Name,'red')</Input>

  </TestCase>

1226-1228

783

Percent-encoded parentheses

  <TestCase Name="5.1.1.4.22 - non-canonical percent-encoding" Rule="commonExpr">

    <Input>now%28%20%29</Input>

  </TestCase>

1232-1234

783

Percent-encoded parentheses

  <TestCase Name="5.1.1.4.23 - non-canonical percent-encoding" Rule="commonExpr">

    <Input>maxdatetime%28%20%29</Input>

  </TestCase>

1238-1240

783

Percent-encoded parentheses

  <TestCase Name="5.1.1.4.24 - non-canonical percent-encoding" Rule="commonExpr">

    <Input>mindatetime%28%20%29</Input>

  </TestCase>

1421-1426

793

$expand=* on complex path

  <TestCase Name="5.1.2 Expand - star on complex path" Rule="expand">

    <Input>$expand=Address/*,Address/Address/*,Addresses/*,Address/Model.AddressWithLocation/*,Model.VipCustomer/Address/*</Input>

  </TestCase>

  <TestCase Name="5.1.2 Expand - star on complex path with $ref and $levels" Rule="expand">

    <Input>$expand=Address/*/$ref,Address/*($levels=max)</Input>

  </TestCase>

1508-1510

783

Percent-encoding

  <TestCase Name="5.1.7 Search - implicit AND, encoced" Rule="queryOptions">

    <Input>$search=blue%20green</Input>

  </TestCase>

1559-1561

837

Delta-token

  <TestCase Name="Delta Link" Rule="deltatoken">

    <Input>$deltatoken=A@Lot_Has:Changed?=Here!</Input>

  </TestCase>

1987-1989

774

Include-annotations with qualifier

  <TestCase Name="Preferences - include annotations - all with a given qualifier" Rule="preference">

    <Input>odata.include-annotations="*#qualified"</Input>

  </TestCase>

1993-1995

774

  <TestCase Name="Preferences - include annotations - none with a given qualifier" Rule="preference">

    <Input>odata.include-annotations="-*#qualified"</Input>

  </TestCase>

1999-2001

774

  <TestCase Name="Preferences - include annotations - all in namespace with given qualifier" Rule="preference">

    <Input>odata.include-annotations="Namespace.*#quali"</Input>

  </TestCase>

2015-2017

774

  <TestCase Name="Preferences - include annotations - nothing from namespace" Rule="preference">

    <Input>odata.include-annotations="-Namespace.*#quali"</Input>

  </TestCase>

2021-2023

774

  <TestCase Name="Preferences - include annotations - only a special term" Rule="preference">

    <Input>odata.include-annotations="Namespace.SomeTerm#qual"</Input>

  </TestCase>

2027-2029

774

  <TestCase Name="Preferences - include annotations - only a special term" Rule="preference">

    <Input>odata.include-annotations="-Namespace.SomeTerm#qual"</Input>

  </TestCase>

7      MetadataService.edmx

Line

Issue

Comment

102

831

OpenType property is Boolean

<Property Name="OpenType" Type="Edm.StringBoolean" Nullable="false" />

356

826

Wrong Target attribute value

<NavigationProperty Name="Target" Type="Edm.EntityType" Nullable="false" Partner="Annotations" />

Appendix A. Acknowledgments

The contributions of the OASIS OData Technical Committee members, enumerated in  [OData-Protocol], are gratefully acknowledged.

Appendix B. Revision History

Revision

Date

Editor

Changes Made

WD01

2016-03-03

Ralf Handl

Final version