Various aspects of OData seem unclear or redundant. A formal UML model for the OData metamodel can be used to clarify and simplify OData.
The existing metamodel defined by 'MetadataService.xml' contains much of what is needed, but has some issues, such as:
- The MetadataContainer element refers to metadata elements, but should be referencing instances of metadata elements (i.e. schema).
- Various language elements are included, (eg. ne and eq)
The included proposal started from scratch out of a need to understand several concepts, including the semantics of Singletons and EntitySets. It needs to be rationalized with the existing 'MetadataService.xml' . It is preliminary and needs review and refinement. It is expressed in CSDL XML. (See https://www.oasis-open.org/apps/org/workgroup/odata/download.php/60420/OdataMetamodel.xml.) UML diagrams are provided that illustrate this proposal. (See: https://www.oasis-open.org/apps/org/workgroup/odata/download.php/60421/OdataMetamodel.pdf)
An advantage of the UML model is that it expresses the Odata metamodel in precise terms. Constraints and requirements on the various elements of the model are expressed normatively using the UML model together with UML Object Constraing Language (OCL) statements. An added Term supports this.
The various schema definition languages CSDL XML, CSDL JSON, and others should conform to the OData metamodel.