Improve specification of element response requirements

    • Hide

      Proposal:
      1) Add the following Term to Core:

      <Term Name="ImplementationRequired" Type="Core.Tag" DefaultValue="false">
      <Annotation Term="Core.Description" String="If 'true', implementation of the qualified element is required. If the required element is Nullable and has no value, it may be omitted from a response. Otherwise it must be present in a related response." If an element is not required, it may be omitted from a related response. If an element is not required and is not Nullable and is not present in a response, it may be assumed to have not been implemented. If the element is Nullable and not present in a response, it may either have no value or have not been implemented." />
      </Term>

      The following summarizes the above:
      a. Nullable=True, Implementation=Optional => Omission implies no value or not implemented
      b. Nullable=True, Implementation=Required => Omission implies no value
      c. Nullable=False, Implementation=Optional => Omission implies not implemented, the value is unknown.
      d. Nullable=False, Implementation=Required => Omission is not allowed, the property must indicate Null if no value.

      Show
      Proposal: 1) Add the following Term to Core: <Term Name="ImplementationRequired" Type="Core.Tag" DefaultValue="false"> <Annotation Term="Core.Description" String="If 'true', implementation of the qualified element is required. If the required element is Nullable and has no value, it may be omitted from a response. Otherwise it must be present in a related response." If an element is not required, it may be omitted from a related response. If an element is not required and is not Nullable and is not present in a response, it may be assumed to have not been implemented. If the element is Nullable and not present in a response, it may either have no value or have not been implemented." /> </Term> The following summarizes the above: a. Nullable=True, Implementation=Optional => Omission implies no value or not implemented b. Nullable=True, Implementation=Required => Omission implies no value c. Nullable=False, Implementation=Optional => Omission implies not implemented, the value is unknown. d. Nullable=False, Implementation=Required => Omission is not allowed, the property must indicate Null if no value.

      Element response requirements:
      There is ambiguity on the use and meaning of Nullable.

      The reason is a distinction between the semantics of Nullable and whether or not implementation is required.

      At least in one example, it is common practice to allow a Nullable=False property to be excluded from a response with the implied meaning of not implemented. The implementation requirement is not a term defined by OData.

      Proposal:
      1) Add the following Term to Core:

      <Term Name="ImplementationRequired" Type="Core.Tag" DefaultValue="false">
      <Annotation Term="Core.Description" String="If 'true', implementation of the qualified element is required. If the required element is Nullable and has no value, it may be omitted from a response. Otherwise it must be present in a related response." If an element is not required, it may be omitted from a related response. If an element is not required and is not Nullable and is not present in a response, it may be assumed to have not been implemented. If the element is Nullable and not present in a response, it may either have no value or have not been implemented." />
      </Term>

      The following summarizes the above:
      a. Nullable=True, Implementation=Optional => Omission implies no value or not implemented
      b. Nullable=True, Implementation=Required => Omission implies no value
      c. Nullable=False, Implementation=Optional => Omission implies not implemented, the value is unknown.
      d. Nullable=False, Implementation=Required => Omission is not allowed, the property must indicate Null if no value.

            Assignee:
            george.ericson
            Reporter:
            george.ericson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: