OData TC meeting #225 Thursday August 16, 2018

Acting chair: Ralf

Chat transcript from room: odatatc
2018-08-16 0800-1000 PDT

1. Roll call

1.1 Members present

    George Ericson (Dell)
    Gerald Krause (SAP SE)
    Mark Biamonte (Progress Software)
    Matthew Borges (SAP SE) a.k.a. Matt
    Michael Pizzo (Microsoft) a.k.a. Mike
    Ralf Handl (SAP SE)
    Ramesh Reddy (Red Hat)
    Stefan Hagen (Individual)
    Ted Jones (Red Hat)

Quorum achieved. Details cf. normative attendance sheet for this meeting (event_id=46269).

Notes taken by all and subsequently edited for readability by Stefan.

2. Approve agenda

Agenda is approved unchanged as published

3. Approve minutes from previous meeting(s)

3.1 Minutes from August 09, 2018 TC meeting #224

URL = https://www.oasis-open.org/committees/download.php/63694/odata-meeting-224_on-20180809-minutes.html

Minutes approved unchanged as published

4. Review action items [Link to Action item list]

4.1 Action items due

4.1.1 #0038 Prepare proposal for REST Profile / OData Essentials Mike Pizzo 2018-08-08

Done. To be closed

4.2 Action items upcoming

4.2.1 #0037 Concept for Google Protocol Buffers as a data format Hubert Heijkers 2018-09-27

Nothing noted

4.3 Action items pending

4.3.1 #0036 Register the OData- headers and preferences with IANA Mark Biamonte 2018-07-26

Mike: https://www.oasis-open.org/apps/org/workgroup/odata/download.php/63723/IANA_Header_Registration.doc

Mike: Updates to links to latest 4.01 specification.

Mike: https://www.oasis-open.org/apps/org/workgroup/odata/download.php/63722/IANA_Preference_Registration.docx

Mike: Reviewed updates to links to latest 4.01 specification.

Mike: remove revision information as IANA hasn't seen previous revisions

Mark to check with TC Admin

Mike: I move we task Mark with preparing and submitting to the TC Admin a clean (non-redlined) version of https://www.oasis-open.org/apps/org/workgroup/odata/download.php/63723/IANA_Header_Registration.docx and https://www.oasis-open.org/apps/org/workgroup/odata/download.php/63722/IANA_Preference_Registration.docx, with the revision information removed, for submission to IANA. George seconds.

Ralf: No objections, motion passes

5. Face-to-Face Meeting

5.1 Location

5.1.1 Redmond Mike to confirm

Mike: https://news.microsoft.com/life/meet-me-in-the-trees/

Mike: F2F will be in Redmond, most likely building 27

Preliminary information on F2F: https://www.oasis-open.org/apps/org/workgroup/odata/email/archives/201808/msg00037.html

5.2 Schedule - proposed

  1. Tuesday September 25 to Wednesday September 26, 2018: Pre-Meeting does not count towards voter eligibility
  2. Thursday September 27 to Friday September 28, 2018: TC Meeting counts towards voter eligibility!

5.3 Agenda proposed

  1. Resolve V4.01 issues
  2. Next steps for V4.01
  3. Data Aggregation
  4. OData-OpenAPI Mapping
  5. REST-EZ
  6. Vocabularies

Gerald, Mark, and Ralf will attend in person

Hubert plans to attend

Mike will attend

George, Matt, and Ted will call in

Mike: keep 2/2 split of pre-meeting and official meeting

Mike to contact Stefan whether to add "Securing OData"

Mike: V4.01 top prio

Gerald: Hierarchies top prio for next edition of Data Aggregation

Mike: Thursday 8am to 4 pm (Pacific time)

Ralf to ask Stefan whether this works for him

Mike: Friday to be decided on Thursday, e.g. 8-4 or 9-4

6. Issues

6.1 Data Aggregation: NEW or OPEN

6.1.1 ODATA-1207 - Clarify need for @odata.id in nested response structures

Ralf: Task was to check effects on client libraries

Gerald: Talked to developers of three client libraries

Two fall back to treating entities as transient if they contain neither @id nor all key properties
The third library relies on presence of either @id or key properties

Mike: .NET client library doesn't care, server library can produce responses with neither full key nor @id

Gerald to check wrt Olingo JavaScript client and with Evan Ireland

Ralf: Follow up next week

6.1.2 ODATA-1206 - Explicitly note support for collection-valued navigation/complex properties in property paths in aggregate/groupby

Ralf:

It is intended to support aggregation of property values reached via paths that may involve collection-valued navigation properties (see example 53). Likewise, it is intended to support grouping by properties reached via paths that may involve collection-valued navigation properties (see example 54).

So far, these possibilities are mentioned only by examples, but should be described explicitly in the prose text.

Ralf: ODATA-1206 is OPEN

Ralf: Add to section 3.1 Transformation aggregate (insertions surrounded by *):

An aggregate expression may be

* an expression valid in a $filter system query option on the input set that results in a simple value, e.g. the path to an aggregatable property, with a specified aggregation method,

* an aggregatable property, with a specified aggregation method, that can be reached via a path consisting of a sequence of navigation properties, complex properties and complex collection properties. *

[...]

Update of section 3.10.1 Simple Grouping (insertions surrounded by *):

In its simplest form the first parameter of groupby specifies the grouping properties, a comma-separated list of one or more single-valued property paths (paths ending in a single-valued primitive, complex, or navigation property) that is enclosed in parentheses. * A path may consist of a sequence of navigation properties, complex properties and complex collection properties.*

Mike: I move we approve ODATA-1206 as proposed. Gerald seconds.

Ralf: ODATA-1206 is resolved as proposed

6.1.3 ODATA-1205 - Examples 53, 54, and 59 are not compliant with Data Aggregation ABNF

Ralf: Extend ABNF rule (insertion surrounded with *):

aggregateExpr   = customAggregate [ customFrom asAlias ]
                / commonExpr aggregateWith [ aggregateFrom ] asAlias
*                / pathPrefix primitiveProperty aggregateWith [ aggregateFrom ] asAlias *
                / pathPrefix '$count' asAlias 
                / pathPrefix customAggregate
                / pathPrefix pathSegment OPEN aggregateExpr CLOSE

Ralf: Use "aggregatablePrimitiveProperty" in aggregation ABNF to mentally exclude streams and Geo types

Ralf: ODATA-1205 is OPEN

Gerald: I move to resolve ODATA-1205 as proposed. Mike seconds.

Ralf: ODATA-1205 is RESOLVED as proposed

Ralf: The two remaining aggregation issues are "little elephants" and are best discussed during the F2F

6.2 Vocabularies: Annotation Examples and Example Values for types, parameters, request/response bodies

6.2.1 ODATA-1194 - Add term Core.Example to allow including annotation examples in term definitions

Ralf: Skip

6.2.2 ODATA-1200 - ODATA-884 / Support sample values for types, parameters, request/response bodies

Ralf: Skip

Ralf: Discuss everything around ODATA-884 during the F2F

6.3 V4.01: NEW or OPEN

6.3.1 ODATA-1213 - Address use of 201 Created for Create Link Requests

Ralf: ODATA-1213 is OPEN

Matt: I move to resolve ODATA-1213 as proposed. Mike seconds.

Ralf: ODATA-1213 is RESOLVED as proposed

6.3.2 ODATA-1214 - Annotate constructor actions

Ralf: ODATA-1214 is OPEN

Ralf: Defer and discuss as part of ODATA-884

6.3.3 ODATA-1212 - Validation term for allowed terms in Annotation Paths

Ralf: Annotation paths allow referencing annotations.


Often the referenced annotation has to have one of certain "allowed" terms that can be interpreted in that context.

Currently these "allowed terms" cannot be expressed in the term or property definition.

Ralf: Mention term Validation.AllowedTerms in CSDL sections 14.2.1.3 Annotation Path.

Add to Validation vocabulary:

<Term Name="AllowedTerms" Type="Collection(Core.QualifiedTermName)" AppliesTo="Term Property">
  <Annotation Term="Core.Description"
          String="Annotation path expressions assigned to the annotated term or property MUST resolve to annotations with one of the listed terms" />
  <Annotation Term="Core.RequiresType" String="Edm.AnnotationPath" />
</Term>

Add to Core vocabulary:

<TypeDefinition Name="QualifiedTermName" UnderlyingType="Edm.String">
  <Annotation Term="Core.Description" String="The qualified name of a term in scope." />
</TypeDefinition>

Ralf: ODATA-1212 is OPEN

Mike: Concern: for forward compatibility, in things like "applies to" we are clear that it's a non-breaking change to extend the list of things enumerated in the expected collection.

Mike: Wording from AppliesTo:

he 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.

Mike:

"Annotation path expressions assigned to the annotated term or property are intended to resolve to annotations with one of the listed terms. For forward compatibility, clients should be prepared for the annotation to be applied to other terms. "

"Annotation path expressions assigned to the annotated term or property are intended to resolve to annotations with one of the listed terms. For forward compatibility, clients should be prepared for the annotation to reference terms besides those listed."

Mike: Updated proposal:

<Term Name="AllowedTerms" Type="Collection(Core.QualifiedTermName)" AppliesTo="Term Property">
  <Annotation Term="Core.Description"
          String="Annotation path expressions assigned to the annotated term or property are intended to resolve to annotations with one of the listed terms. For forward compatibility, clients should be prepared for the annotation to reference terms besides those listed." />
  <Annotation Term="Core.RequiresType" String="Edm.AnnotationPath" />
</Term>

Ralf: I move to resolve ODATA-1212 with the amended proposal. Mike seconds.

Ralf: ODATA-1212 is RESOLVED as proposed

6.3.4 ODATA-1211 - ODATA-681 4.2 and 5.1: Explicitly state that an alias MUST NOT be identical to any other alias or namespace in the same document.

Ralf: ODATA-1211 is OPEN

Mike: I move we resolved ODATA-1211 as proposed. Ralf seconds.

Ralf: ODATA-1211 is RESOLVED as proposed

7. Next meetings

Agreed next meetings:

Thursday August 23, 2018 during 8-10 am PDT (17:00-19:00 CEST)
Thursday August 30, 2018 during 8-10 am PDT (17:00-19:00 CEST)

Mike will be out next week

8. AOB and wrap up

F2F in Redmond September 25-28

Meeting adjourned by chair.