OData TC meeting #234 Thursday October 18, 2018

Acting chair: Ralf

Chat transcript from room: odatatc
2018-10-18 0800-1000 PDT

1. Roll call

1.1 Members present

    George Ericson (Dell)
    Gerald Krause (SAP SE)
    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=46278).

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

2. Approve agenda

Ralf:

Gerald: add https://issues.oasis-open.org/browse/ODATA-1244 to Data Aggregation issues
Mike & George: discuss ODATA-1064 Add ability to annotate collections to return only count and NextLink
Gerald: no need to discuss ODATA-1244 today, just have it on the list

Agenda is approved with the above changes.

3. Approve minutes from previous meeting(s)

3.1 Minutes from October 11 2018 Meeting #233

URL = https://www.oasis-open.org/committees/download.php/64065/odata-meeting-233_on-20181011-minutes.html

Minutes are approved unchanged as published.

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

4.1 Action items due

None.

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

Nothing noted

5. Issues

5.1 V4.01: New or Open

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

Ralf: Presentation: https://www.oasis-open.org/apps/org/workgroup/odata/download.php/64089/Example of need to return NavigationLink..pptx

Mike: this seems to be a special case of people wanting more control over which control information is part of the response, somewhere between minimal and full metadata

Ralf: To be continued next week

George: On 1064: proposing possibilities:

1) add annotation@IncludeControl=(navigationLink, associationLink... control attributes.)  apply to EntityContainer or other meta
2) add qualifier to header: Accept: Application/Json;odata.metadata='minimum+navigationLink+associationLink+...}

Need to check whether or not Redfish requires navigationLink.

5.2 Applied

5.2.1 ODATA-1227 - Improve description of filter expression restrictions

Ralf:

https://github.com/oasis-tcs/odata-vocabularies/commit/88f6efe8f91b66b147a2fb168f4f560b2c5684ad
"@Core.Description": "These properties only allow a subset of filter expressions. A valid filter expression for a single property can 
be enclosed in parentheses and combined by `and` with valid expressions for other properties."

Mike: I move we close ODATA-1227 as applied. George seconds.

Ralf: ODATA-1227 is CLOSED as applied

5.2.2 ODATA-1222 - Validation: add terms MinItems and MaxItems

Ralf:

https://github.com/oasis-tcs/odata-vocabularies/pull/21 - new terms

"MaxItems": {
    "$Kind": "Term",
    "$Type": "Edm.Int64",
    "$AppliesTo": [
        "Collection"
    ],
    "@Core.Description": "The annotated collection must have at most the specified number of items."
},
"MinItems": {
    "$Kind": "Term",
    "$Type": "Edm.Int64",
    "$AppliesTo": [
        "Collection"
    ],
    "@Core.Description": "The annotated collection must have at least the specified number of items."
}

<Term Name="MaxItems" Type="Edm.Int64" Nullable="false" AppliesTo="Collection">
  <Annotation Term="Core.Description" String="The annotated collection must have at most the specified number of items." />
</Term>
<Term Name="MinItems" Type="Edm.Int64" Nullable="false" AppliesTo="Collection">
  <Annotation Term="Core.Description" String="The annotated collection must have at least the specified number of items." />
</Term>

Mike: I move we close ODATA-1222 as applied. Matt seconds.

Ralf: ODATA-1222 is CLOSED as applied

5.3 Pull Requests for partially applied issues

5.3.1 ODATA-1241 - Support common expressions as values in URL-JSON

Ralf:

https://github.com/oasis-tcs/odata-abnf/pull/5

Test cases:
<TestCase Name="5.1.1.1.12 Logical Operator Examples" Rule="boolCommonExpr">
  <Input>["Joe","Smith"] in (["John","Doe"],["Jane","Smith"])</Input>
</TestCase>
<TestCase Name="5.1.1.1.12 Logical Operator Examples" Rule="boolCommonExpr">
  <Input>[FirstName,LastName] in (["John","Doe"],["Jane","Smith"])</Input>
</TestCase>

More:
<TestCase Name="5.1.1.14.2 simple array" Rule="commonExpr">
  <Input>FirstName in ["Miller","Smith"]</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 array with single-quoted OData strings" Rule="commonExpr">
  <Input>FirstName in ["Miller",'Smith']</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 empty array" Rule="commonExpr">
  <Input>FirstName in []</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 mixed array" Rule="commonExpr">
  <Input>["Hello",42,true,false,null,'World']</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 array of property names" Rule="commonExpr">
  <Input>[FirstName,LastName]</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 empty object" Rule="commonExpr">
  <Input>{}</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 object with concrete values" Rule="commonExpr">
  <Input>{"FirstName":"John","LastName":"Doe","Sizes":["Large","Small"]}</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 object with expression values" Rule="commonExpr">
  <Input>{"FirstName":Customer/FirstName,"LastName":Manager/LastName,"Sizes":[1, 2 add 3]}</Input>
</TestCase>
<TestCase Name="5.1.1.14.2 array with 'untyped' values" Rule="commonExpr">
  <Input>[[],{},true,false,null,42,{"no property name":"value","@something":true}]</Input>
</TestCase>

Mike: restrict paren-style lists to right side of "in" operator

Ralf: require at least two items with a comma inbetween?

Ralf: Allowed:

a in [1,2]
a in ([1,2])

Mike: I do not want to have to have special code in order to check for membership in a single versus multiple values.

Ralf:

[1,2] eq ([1,2])

Ralf: Time is up, continue discussion next week

Ralf: Consider scrapping "in (...)" and allow only "in [...]"

6. Next meetings

Agreed next meetings:

Thursday October 25, 2018 during 8-10 am PDT (17:00-19:00 CEST)
Thursday November 08, 2018 during 8-10 am PST (17:00-19:00 CET)

Ralf:Tentative agreement to skip meeting on November 01

Thursday November 01, 2018 during 8-10 am PDT (16:00-18:00 CET)  public holiday in Germany

7. AOB and wrap up

Meeting adjourned by chair.