OData TC meeting #152 Thursday Nov 10, 2016

Acting chair: Ralf

Chat transcript from room: odatatc
2016-11-10 0700-1030 PT

1. Roll call

1.1 Members present

        Gerald Krause (SAP SE)
        Hubert Heijkers (IBM)
        Ken Baclawski (Northeastern University)
        Mark Biamonte (Progress Software)
        Martin Zurmuehl (SAP SE)
        Matthew Borges (SAP SE) a.k.a. Matt
        Michael Pizzo (Microsoft) a.k.a. Mike
        Ralf Handl (SAP SE)
        Stefan Hagen (Individual)
        Susam Malaika (IBM)

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

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

2. Approve agenda

Ralf: Add Jira issues:
ODATA-996 - Added/deleted links: "relationship" should be navigation property path
ODATA-997 - Define modulo operator for non-integral numeric values
ODATA-998 - Specify comparable types for comparison operators
ODATA-999 - Consider adding support for 'aliases' on Entity sets, Singletons and Properties

Agenda approved as published including the update

Ralf: Github repositories for Vocabularies and OpenAPI mapping under TC license, as a replacement/alternative to Subversion. Not to be confused with the "Open Repos" that we intended earlier, which would have used different licensing and required Individual Contributors License Agreements

Mike: I move we create two new GitHub repos; one for vocabularies and one for open api alignment, and that we use those repos instead of subversion for ongoing work in those two areas. Hubert seconds.

Ralf: No objections, motion passes

Ralf: Example repo: https://github.com/oasis-tcs/water-new-metrics

Ralf: Repo name proposals
- odata-vocabularies
- odata-openapi

Ralf: existing repos:
dita
OASIS DITA TC: Official repository for the source files for the written DITA specification
Updated 21 hours ago

xliff-omos-jliff
OASIS XLIFF OMOS TC: JSON serialization of the XLIFF Abstract Object Model
2 Updated 2 days ago

xliff-omos-om
OASIS XLIFF OMOS TC: Object Model for XLIFF Versions 2.0 and higher

Ralf: Naming proposals are accepted:
- odata-vocabularies
- odata-openapi

Ralf: No further additions to the agenda

3. Approve minutes from previous meeting(s)

3.1 Minutes from November 03, 2016 TC meeting #151

https://www.oasis-open.org/committees/download.php/59288/odata-meeting-151_on-20161103-minutes.html

Minutes approved unchanged as published.

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

4.1 Action items due

4.1.1 AI#0036 - "Register the OData- headers and preferences with IANA"

Ralf: Registration documents checked into Kavi

12345678901234567890123456789012345678901234567890123456789012345678901234567890
Open Data (OData) Protocol IANA Header registration request
------------------------------------------------------------

This documentation contains the information needed for Perminanent 
Registration of the OData specific request headers with IANA as called out in 
RFC 3864 - Registration Procedures for Message Header Fields.  The OData 
headers to be registered are

OData-Version
OData-Isolation
OData-MaxVersion
OData-EntityId

The details as required by RFC 3864 for these headers are listed below


####
Header field name:
OData-Version

Applicable protocol:
OASIS Open Data Protocol (OData)

Status:
Standard

Author/Change controller:
OASIS

Specification document(s):
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752225

Related information:
<none>


####
Header field name:
OData-Isolation

Applicable protocol:
OASIS Open Data Protocol (OData)

Status:
Standard

Author/Change controller:
OASIS

Specification document(s):
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752232

Related information:
<none>


####
Header field name:
OData-MaxVersion

Applicable protocol:
OASIS Open Data Protocol (OData)

Status:
Standard

Author/Change controller:
OASIS

Specification document(s):
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752233

Related information:
<none>

####
Header field name:
OData-EntityId

Applicable protocol:
OASIS Open Data Protocol (OData)

Status:
Standard

Author/Change controller:
OASIS

Specification document(s):
http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752238

Related information:
<none>
[16:12] Ralf Handl (SAP SE): OData-Isolation and OData-EntityId: mention upcoming short form Isolation resp. EntityId in "Related information"
[16:13] Ralf Handl (SAP SE): Open Data (OData) Protocol IANA Prefer Header Preference registration request
------------------------------------------------------------------------------

This documentation contains the information needed for Registration of the 
OData specific Prefer Header Preferences headers with IANA as called out in 
RFC 7240 - Prefer Header for HTTP.  The OData Prefer Header Preferences to be 
registered are

allow-entityreferences
callback
continue-on-error
include-annotations
maxpagesize
track-changes

The details as required by RFC 7240 for registering these preferences are listed below

{ Open Questions}
{ 1 - Should the odata. prefix to the preference as defined in the 4.0 spec be included in the registration?}


####
Preference: 
allow-entityreferences
  
Value: 
<none>

Optional Parameters: 
<none>

Description:
As defined in section 8.2.8.1 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]
<none>

####
Preference: 
callback
  
Value: 
<none>

Optional Parameters: 
url - The URL of a callback endpoint to be invoked by the OData service when data is available


Description:
As defined in section 8.2.8.2 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]

The url parameter specified under optional parameters is required when using the callback preference with OData


####
Preference: 
continue-on-error
  
Value: 
<none>

Optional Parameters: 
<none>


Description:
As defined in section 8.2.8.3 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]

<none>


####
Preference: 
include-annotations
  
Value: 
comma-separated list of namespaces or namespace qualified term names to include or exclude, with "*" representing all

Optional Parameters: 
<none>


Description:
As defined in section 8.2.8.4 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]

<none>

####
Preference: 
maxpagesize
  
Value: 
a positive integer that represents the maximum number of items each collection in a response may contain

Optional Parameters: 
<none>


Description:
As defined in section 8.2.8.5 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]

<none>

####
Preference: 
track-changes
  
Value: 
<none>

Optional Parameters: 
<none>


Description:
As defined in section 8.2.8.6 of the OData Version 4.0 Part 1: Protocol Plus Errata 03 document referenced below.

Reference:
OData Version 4.0 Part 1: Protocol Plus Errata 03 - 
   http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234

Notes: [optional]

<none>

Action #0036 closure not minuted during meeting.

5. JSON Format for CSDL

5.1 Proposals for an OData-specific, lossless JSON format for Metadata

5.1.1 OpenUI5 OData V4 Metadata JSON Format: https://openui5.hana.ondemand.com/#docs/guide/87aac894a40640f89920d7b2a414499b.html

Ralf: Walking through https://openui5.hana.ondemand.com/#docs/guide/87aac894a40640f89920d7b2a414499b.html

Ralf: Points to consider:
- $kind or $Kind etc. to be consistently UpperCamelCase
- "MaxLength":"max"
- Collections of collections

Ralf: Next steps:
- check in examples and XSLT
- start filling CSDL JSON V4.01 document
- open issues for things to discuss/change/extend

6. Issues for V4.01_WD01 in New or Open state

6.1 Issues waiting for refined proposal

6.1.1 ODATA-674 - Specify navigation property binding combined with containment

Skipped

6.1.2 ODATA-879 - Support Arrays of Arrays

Skipped

6.1.3 ODATA-919 - Specify the result type for each operation based on operator types

Skipped

6.1.4 ODATA-920 - Specify overflow for int data types (-INF, INF, NaN)

Skipped

6.1.5 ODATA-965 - UpdateGeoJSON Reference to RFC7946

Mike: I move we resolve ODATA-965 as proposed. Hubert seconds.

Ralf: ODATA-965 is RESOLVED as proposed

6.1.6 ODATA-966 - 13.4 Add example for navigation property bindings for containment navigation property

Ralf: Example: Orders contained OrderDetails:

<EntitySet Name="Orders" Type="Sales.Order">
   <NavigationPropertyBinding Path="OrderDetails/Product" Target="Products"/> 
</EntitySet>

Mike: I move we resolve ODATA-966 as proposed. Hubert seconds.

Ralf: ODATA-966 is RESOLVED as proposed

6.1.7 ODATA-974 - Flesh out recommendations around OAuth support in OData

Ralf: Example of usage:

<Annotation Term="Auth.AuthorizationOptions"> 
  <Collection> 
  <Record Type="Auth.Http"/> 
  <Record Type="Auth.OpenIDConnect"> 
    <PropertyValue Name="IssuerUrl" String="https://example.com/issuer1"/> 
  </Record> 
  <Record Type="Auth.OAuth2AuthCode"> 
    <PropertyValue Name="AuthorizationUrl" String="http://myauth/authorize"/> 
    <PropertyValue Name="TokenUrl" String="http://myauth/token"/> 
    <PropertyValue Name="Scopes"> 
    <Record> 
      <PropertyValue Name="writeets" String="modify pets"/> 
    </Record> 
    </PropertyValue> 
  </Record> 
  </Collection> 
</Annotation>

Mike: Definition of OpenIDConnect:

<ComplexType Name="OpenIDConnect" BaseType="Auth.Authorization"> 
<Property Name="IssuerUrl" Type="Edm.String" Nullable="false"> 
<Annotation Term="Core.Description" String="Issuer location for the OpenID Provider. Configuration information can be obtained by appending /.well-known/openid-configuration to this Url."/> 
</Property> 
</ComplexType>

6.1.8 ODATA-995 - Resolve inconsistencies in JSON streaming property ordering

Ralf: Proposal:
Update 18.2 to state that annotations must come before the property
After making sure existing streaming clients don't rely on this ordering, update 4.4 to remove constraint that navigation annotations must come after structural properties.

Mike: revised proposal:
Update 18.2 to state that annotations must come before the property
Update 4.4 to say that 4.0 services MUST return nav annotations after structural properties, 4.01 clients MUST NOT assume this ordering.

Ralf: ODATA-995 is OPEN

Hubert: I move to resolve ODATA-995 as per the revised proposal. Mike seconds.

Ralf: ODATA-995 is RESOLVED as proposed

6.1.9 ODATA-996 - Added/deleted links: "relationship" should be navigation property path

Ralf: ODATA-996 Added/deleted links: "relationship" should be navigation property path

  {
    "@odata.context":"#Customers/$link",
    "source":"Customers('BOTTM')",
    "relationship":"Orders",
    "target":"Orders(10645)"
  },
  {
    "@odata.context":"#Customers/$link",
    "source":"Customers('BOTTM')",
    "relationship":"Some/Thing/Complex/Orders",
    "target":"Orders(10645)"
  },

Ralf: Alternative: use nested content representation with an entity reference value for the navigation property

Ralf: Nested content with entity references is safe way to go for collection-valued complex properties

Ralf: ODATA-996 is OPEN

Mike: I like the syntax for nav properties on individual complex types. we could default to nested collections syntax for collections of complex types.

Ralf: Amended proposal: path for single-valued complex properties, nested content with entity references for collection-valued complex properties

Hubert: I move to resolve ODATA-996 as per the amended proposal. Martin seconds.

Ralf: ODATA-996 is resolved with the amended proposal

6.1.10 ODATA-997 - Define modulo operator for non-integral numeric values

Ralf: 10 mod 4.8 -> 0.4

Ralf: Programming language 10 div 4.8 -> 2

Ralf: Programming language 10 / 4.8 -> 2.something

Ralf: Martin's extension:
10 div 4 -> 2
10 divby 4 -> 2.5

Ralf: ODATA-997 is OPEN

Ralf: a mod b eq a sub b mul floor(a div b)

Mike: I move we resolve ODATA-997 as proposed. Hubert seconds.

Ralf: ODATA-997 is resolved as proposed, pending check of definition formula for negative operands

6.1.11 ODATA-998 - Specify comparable types for comparison operatorsODATA-999 introduce aliases for e.g. property names

Ralf: Specify which types can be compared with eq, ne, le, lt, ge, gt

a) values of same primitive type can be compared (except Edm.Binary, Edm.Stream, and the Edm.Geo types. Edm.Binary, Edm.Stream, and the Edm.Geo)
b) Int* can be compared to Int*
c) Single to Double
d) Int* can be compared to Decimal by casting Int* to the same Decimal flavor

Matt: 5.1.1.8.1

Matt: In URL conventions

Matt: 5.1.1.15 in URL conventions

Ralf: ODATA-998 is OPEN

Ralf: Specify which types can be compared with eq, ne, le, lt, ge, gt

a) values of same primitive type can be compared (except Edm.Binary, Edm.Stream, and the Edm.Geo types)
b) Int* can be compared to Int*
c) Single to Double
d) Int* can be compared to Decimal by casting Int* to the same Decimal flavor

Ralf: Amended proposal:
a) values of same primitive type can be compared (except Edm.Binary, Edm.Stream, and the Edm.Geo types)
b) numbers compared with each other using casting rules

MEMBER: I move to resolve ODATA-998 as per the new amended proposal. Matt seconds.

Ralf: ODATA-998 is resolved with the amended proposal

6.1.12 ODATA-999 - Consider adding support for 'aliases' on Entity sets, Singletons and Properties

Ralf: Description
The idea behind allowing aliases is primarily driven by having shorter names for various entity sets, singletons and properties of complex and entity types. Ideally these aliases could be used in request as well as be returned by the server in response payloads.

6. Next meetings

No meeting on November 24, 2016

Decide next week whether to make December 1 a long meeting

6.1 Meeting following Thursday November 17, 2016 during 08:00-10:00 am PT

Date and time of meeting agreed

7. AOB and wrap up

No other business.

Meeting adjourned by chair.