OData TC meeting #111 Thursday Oct 29, 2015

Acting chair: Ralf

Chat transcript from room: odatatc
2015-10-29 0800-1000 PDT

1. Roll call

1.1 Members present

        Gerald Krause (SAP SE)
        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) 
        Ramesh Reddy (Red Hat)
        Stefan Hagen (Individual)
        Susan Malaika (IBM)
        Ted Jones (Red Hat)

Quorum achieved. Details cf. normative attendance sheet for this meeting.

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

2. Approve agenda

Mike: add ODATA-877 and ODATA-876 to Agenda, both regard Change Tracking / Delta

Mike: Proposal ready for V4.01 Simplified Syntax issue group, agenda item 8.a.x, move this up

Agenda approved as published and ammended by suggestion from Mike.

3. Approve minutes from previous meeting(s)

3.1 Minutes from October 22, 2015 TC meeting #110:

https://www.oasis-open.org/committees/download.php/56756/odata-meeting-110_on-20151022-minutes.html

Minutes approved unchanged as published

4. Review action items

4.1 Action items due October 29, 2015

4.1.1 Propose factoring of CSDL documents (Mike Pizzo)

Mike showed an approach where we have three documents: one for JSON, one for XML, and one for the shared parts. The format-specific documents link in sections of the shared part to have all necessary content for the format. Seems to work with change-tracking as well as HTML export

Mike to check with Chet Ensign of TC Administration whether we can use this approach

5. JSON Format for CSDL

Issues for JSON Format for CSDL in New or Open state

  1. ODATA-875 - Use of $ref for referencing elements in a JSON Schema
  2. ODATA-872 - Consider defining structure of bound actions/functions
  3. ODATA-863 - ODATA-618 / Represent Terms similar to Types
ODATA-875 - Use of $ref for referencing elements in a JSON Schema

Ralf: ODATA-875 is OPEN

Ralf:

"ODataDemo.Supplier": {
    "type": "object",
    "keys": [
        {
            "name": "ID"
        }
    ],
    "properties": {
        "ID": {
            "type": "string"
        },
        "Name": {
            "type": [
                "string",
                "null"
            ]
        },
        "Address": {
            "$ref": "#/definitions/ODataDemo.Address"
        },
        "Concurrency": {
            "type": "integer",
            "format": "int32"
        },
        "Products": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ODataDemo.Product"
            },
            "relationship": {
                "partner": "Supplier"
            }
        }
    }
},

Mike: explore ways to make sure that /definitions/ schemas only use $ref to reference structured types and forbid inline definition of structured types

Ralf:

"schemas": {
    "Org.OData.Core.V1": {
        "$ref": "https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Core.V1.json#/schemas/Org.OData.Core.V1"
    },
    "Core": {
        "$ref": "https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Core.V1.json#/schemas/Org.OData.Core.V1"
    },
    "Org.OData.Measures.V1": {
        "$ref": "https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Measures.V1.json#/schemas/Org.OData.Measures.V1"
    },
    "UoM": {
        "$ref": "https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Measures.V1.json#/schemas/Org.OData.Measures.V1"
    },

Ralf:

"entitySets": {
    "Products": {
        "entityType": {
            "$ref": "#/definitions/ODataDemo.Product"
        },
        "navigationPropertyBindings": {
            "Category": {
                "target": "Categories"
            }
        }
    },

Ralf:

"entitySets": {
    "Products": {
        "entityType": "ODataDemo.Product",
        "navigationPropertyBindings": {
            "Category": {
                "target": "Categories"
            }
        }
    },

Ralf:

"singletons": {
        "Contoso": {
            "type": {
                "$ref": "#/definitions/ODataDemo.Supplier"
            },
            "navigationPropertyBindings": {
                "Products": {
                    "target": "Products"
                }
            }
        }
    },
    "functionImports": {
        "ProductsByRating": {
            "entitySet": "Products",
            "function": {
                "$ref": "#/schemas/ODataDemo/functions/ProductsByRating"
            }
        }
    }

Ralf:

"ODataDemo": {
    "functions": {
        "ProductsByRating": {
            "parameters": [
                {
                    "name": "Rating",
                    "type": [
                        "integer",
                        "null"
                    ],
                    "format": "int32"
                }
            ],
            "returnType": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/ODataDemo.Product"
                }
            }
        }
    },

Mike: we should consistently refer to named types via $ref

Mike: One option:
1) Always use $ref to reference a named type (complex, entity, typedef, enum)
2) We use odata paths to represent entity sets and singletons
3) For functions and actions, use $ref

Mike: (we could go either way on 3), we just need to pick one...)

Mike: I move to resolve ODATA-875 as proposed. Mark seconds.

ODATA-875 is resolved as proposed

ODATA-872 - Consider defining structure of bound actions/functions
[17:17] Ralf Handl (SAP): Services that want to explicitly advertise actions or function can do this via "properties": { ..., "#My.SpecificFunction":{ "$ref":"http://docs.oasis-open.org/odata/odata-json-csdl/v4.0/edm.json#/definitions/odata.actionFunctionAdvertisement" } } or more generic via a patternProperty for pattern "^#". [17:19] Ralf Handl (SAP): Mike: also have definition that defines this patternProperty use and can be included using anyOf [17:20] Ralf Handl (SAP): annotatableStructuredType [17:22] Ralf Handl (SAP): bindableStructuredType

Mike: Proposal:
1) Define the structure of a function or action
2) Define an bindableStructuredType that includes property patterns for:functions/actions (that uses the structure above)
3) Define an annotatableStructuredType that includes property patterns for annotations

Ralf:
1) Define the structure of a function or action advertisement

Mike: updated:
1) Define the structure of a function or action advertisement
2) Define an bindableStructuredType that includes property patterns for:functions/actions (that uses the structure above)
3) Define an annotatableStructuredType that includes property patterns for annotations

Mike: I move we resolve ODATA-872 as proposed, Mark seconds.

ODATA-872 is resolved as proposed

6. Next Face-to-Face Meeting

6.1 When?

Ralf: First week of February 2016, 01-05

6.2 Where/hosted by whom?

All: check til next meeting whether this works, alternatives, and possible locations

Ralf: Topics:

7. V4.0 ERRATA03

7.1 ODATA-877 - Must delta responses continue to track "orphaned" entities?

Mike: we already specify that entities no longer matching the filter of the initial request fall out

Ralf: What about entities that were only expanded into the result and would now no longer be expanded

Ralf: The tricky bit is whether tombstones have to be sent if an expanded entity becomes disconnected

Matt: would be nice for the client to get a tombstone to clean up the local store, but might be hard for the server to figure out when to do that

Mike: two books by the same author: one book drops out - author stays, second book drops out - author also drops out

Ralf: ODATA-877 is OPEN

Ralf: Mike to prepare proposal

7.2 ODATA-876 - Allow services to return contained entities inline for delta responses

Mike: please take a look at ODATA-876 and get some direction

Ralf: ODATA-876 is OPEN

8. Next meeting

8.1 Thursday November 05, 2015 during 8-10am PT?

Agreed

9. AOB and wrap up

Meeting adjourned by chair.