OData TC meeting #203 Thursday February 15, 2018

Acting chair: Ralf

Chat transcript from room: odatatc
2018-02-15 0800-1000 PST

1. Roll call

1.1 Members present

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

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

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

2. Approve agenda

Mike: Would also like to discuss:

ODATA-1150     Case Sensitivity of Property Names, EntitySets, Singletons and Operations
ODATA-1149     Support Delta responses for Singletons 
ODATA-1148     PATCH with nested nav props should not remove omitted resources

Mike: Can review application of ODATA-1145 in 7a.

George: would like to discuss ODATA-1064 first in the Issues section

Agenda approved with the above modifications

3. Approve minutes from previous meeting(s)

3.1 Minutes from February 08, 2018 TC meeting #202

https://www.oasis-open.org/committees/download.php/62475/odata-meeting-202_on-20180208-minutes.html

Minutes approved unchanged as published.

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

4.1 Action items due

None.

5. V4.01 Committee Specification 01

Documents are published

6. V4.0 Errata 04

6.1 V4.0 Errata 04

6.1.1 ABNF: cross-apply issues such as ODATA-987 Allow digits in search phrases, or just copy V4.01 ABNF over to V4 Errata 04?

i.Pro:   URL Conventions state that ABNF is overly generous and prose specification 
         describes valid constructs, and V4.01 ABNF is super-set of V4
ii.Pro:  removes mental barrier for downporting V4.01 features to V4 services/frameworks
iii.Pro: we did the same with the CSDL XML namespaces: 
         http://docs.oasis-open.org/odata/ns/edmx and http://docs.oasis-open.org/odata/ns/edm 
         describe the V4.01 superset.

Mike: if we do this, we should comment that in the ABNF, e.g. for key-as-segment or optional $ in query option names

Mike: I move we merge the 4.01 extensions into the OData 4.0 ABNF and maintain a common ABNF across versions. George seconds.

Ralf: No objections, motion passes

6.1.2 XML Schemas for CSDL: pack latest (V4.01) versions into Errata 04?

i.Pro: see iii. above, XML namespace documents reference V4.01

6.1.3 Prose Specifications

i.Any issues that need to be (cross-) applied to the prose specification documents?
ii.Any need to publish Errata 04 for JSON Format?

Mike: can we reference the V4.01 vocabularies in GitHub from Errata 04?

Ralf to ask Chet whether/how this can be done

7. Issues

7.1 APPLIED

later

7.2 Vocabularies: NEW or OPEN

7.2.1 ODATA-1064 - Add ability to annotate collections to return only count and NextLink

Ralf: Add new IncludeMetadata term:

<Term Name="IncludeMetadata" AppliesTo="NavigationProperty EntitySet Singleton" Type="Core.MetadataKind"> 
<Annotation Term="Core.Description" 
String="Defines metadata that should automatically be returned in a response when the reply is qualified with 'metadata=minimal'." /> 
</Term> 

<EnumType Name="MetadataKind" IsFlags="true"> 

  <Member Name="count" Value="1"> 
    <Annotation Term="Core.Description" 
String="Return count metadata, equivalent to $count." /> 

  </Member> 
  <Member Name="navigationLink" Value="2"> 
    <Annotation Term="Core.Description" 
String="This URL can be used to retrieve an entity or collection of entities related to the current entity via a navigation property. \
Doing a GET on this link is equivalent to specifying $expand."/> 
  </Member> 

  <Member Name="associationLink" Value="4"> 
    <Annotation Term="Core.Description" 
String=" The value is a URL that can be used to retrieve a reference to an entity or a collection of references to entities related \
to the current entity via a navigation property. Doing a GET on this link is equivalent to specifying $ref." /> 
  </Member> 

</EnumType>

Mike: We could introduce modifiers to the application/json metadata parameter; i.e., application/json;metadata=minimal+navigationLink.

7.2.2 ODATA-1121 - Add FilterExpressionType values "MultiRange" and "MultiRangeOrSearchExpression"

Mike: ideally, we wouldn't have to advertise all variations of the added modifiers; a service that supported application/json;metadata=minimal would implicitly support the modifiers.

7.3 APPLIED (revisited)

7.3.1 ODATA-1144 - Allow percent-encoded colon in time values in URLs

Ralf:

V4.01: 
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/4.01%20spec/ABNF/odata-abnf-construction-rules.txt?op=diff&rev=1121 
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/4.01%20spec/ABNF/odata-abnf-testcases.xml?op=diff&rev=1121 

V4: 
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-aggregation-abnf.txt?op=diff&rev=1122 
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-aggregation-testcases.xml?op=diff&rev=1122

Hubert: there's a left-over ":" in the offset portion of rule dateTimeOffsetValueInUrl

Ralf: Postponed to next meeting

Mike: https://github.com/oasis-tcs/odata-vocabularies/pull/7

Ralf: https://issues.oasis-open.org/browse/ODATA-1145

Mike walks us through the changes

Hubert: I move to close ODATA-1145 as applied. Mike seconds.

Ralf: ODATA-1145 is CLOSED as applied

7.4 Vocabularies: NEW or OPEN (revisited)

7.4.1 ODATA-1121 - Add FilterExpressionType values "MultiRange" and "MultiRangeOrSearchExpression"

Ralf: Add new allowed values

<Record> 
  <PropertyValue Property="Value" String="MultiRange" /> 
  <Annotation Term="Core.Description" String="Property can be compared to a union of one or more closed, half-open, or open intervals" /> 
  <Annotation Term="Core.LongDescription" String="The filter expression for this property consists of one or more interval expressions \
      combined by OR. A single interval expression is either a single comparison of the property and a literal value with eq, le, lt, ge, or gt, \
      or pair of boundaries combined by AND and enclosed in parentheses. The lower boundary is either ge or gt, the upper boundary either le or lt." /> 
</Record> 

<Record> 
  <PropertyValue Property="Value" String="MultiRangeOrSearchExpression" /> 
  <Annotation Term="Core.Description" String="Property can be compared to a union of zero or more closed, half-open, or open intervals plus zero or more simple string patters" /> 
  <Annotation Term="Core.LongDescription" String="The filter expression for this property consists of one or more interval expressions or \
      string comparison functions combined by OR. See MultiRange for a definition of an interval expression. See SearchExpression for the allowed string comparison functions." /> 
</Record>

<TypeDefinition Name="FilterExpressionType" UnderlyingType="Edm.String">
  <Annotation Term="Validation.AllowedValues">
    <Collection>
      <Record>
        <PropertyValue Property="Value" String="SingleValue" />
        <Annotation Term="Core.Description" String="Property can be used in a single eq clause" />
      </Record>
      <Record>
        <PropertyValue Property="Value" String="MultiValue" />
        <Annotation Term="Core.Description" String="Property can be used in a single in clause" />
      </Record>
      <Record>
        <PropertyValue Property="Value" String="SingleRange" />
        <Annotation Term="Core.Description" String="Property can be used in at most one ge and/or one le clause, separated by and" />
      </Record>
      <Record>
        <PropertyValue Property="Value" String="SearchExpression" />
        <Annotation Term="Core.Description"
          String="String property can be used as first operand in startswith, endswith, and contains clauses" />
      </Record>
    </Collection>
  </Annotation>
</TypeDefinition>

Ralf: I move to resolve ODATA-1121 as proposed. Hubert seconds.

Ralf: ODATA-1121 is RESOLVED as proposed

7.4.2 ODATA-1138 - Facilitate processing of aggregated results created with concat

Gerald:

GET ~/Sales?$apply=concat( 
filter(<complex expression 1>)/groupby((Customer),aggregate(Amount with sum as Total)), 
 filter(<complex expression 2>)/groupby((Customer),aggregate(Amount with sum as Total)))
<Term Name=RelatedConcatParameter Type=Edm.Int16> 
<Annotation Term="Core.Description" String="Position of the transformation sequence in the list of concat parameters, whose result contans this entity. Position counting starts at 0" /> 
</Term>
<Term Name=ResultOfConcatArgument Type=Edm.Int16> 
<Annotation Term="Core.Description" String="Index number of the argument provided to the concat transformation whose result contains this and subsequent entities. The first argument has index 0." /> 
</Term>
concat(filter(...)/groupby(...)/compute(1 as idx), ...)

Gerald: I move to close ODATA-1138 as proposed.

7.4.3 ODATA-1099 - Add annotations to describe custom query options and custom headers

Postponed

7.4.4 ODATA-1067 - Consider ability to define computed default values

Mike: skip remaining Vocabulary issues

7.4.5 ODATA-1148 - PATCH with nested nav props should not remove omitted resources

7.4.6 ODATA-1147 - Annotate a function or action as "availability is advertised per instance"

Ralf: Actions and functions are by default available for all instances unless stated otherwise.

One way to state this is the term Core.OperationAvailable which currently has to evaluate to true or false. 

What is missing is a way to say "availability of this operation cannot be determined up-front, 
please look into the availability advertising in its representation".

Mike: it already is nullable because there's no Nullable="false" attribute

Ralf: ODATA-1147 is OPEN

Ralf: I move to resolve ODATA-1147 as proposed. Mike seconds.

Ralf: ODATA-1147 is RESOLVED as proposed

8. Next meetings

Ralf:

Thursday February 22, 2018 during 8-10 am PST?
Thursday March 01, 2018 during 8-10 am PST?

Mike not present February, 22; Hubert not present March, 01

All agree to meet February, 22 and March, 01.

9. AOB and wrap up

None

Meeting adjourned by chair.