Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: V4.0_WD01
    • Fix Version/s: V4.0_WD01
    • Component/s: CSDL JSON
    • Labels:
      None
    • Environment:

      Applied

      Description

      JSON Schema offers the keywords minimum, maximum, and multipleOf for fine-tuning the value range of numeric properties.

      While it is possible to translate Precision="5" and Scale="2" into

      • multipleOf: 1e-2
      • minimum: -999.99
      • maximum: 999.99
        it is rather hard for an OData client to re-engineer the precision and scale

      Similar for temporal values: here Precision="7" would have to be -translated into a regular expression

      • "pattern":"(^[^.]*$|[.][0-9] {1,7}

        $)"

      We could add the original scale and precision as extension keywords.

      And we could additonally opt to omit the rather cryptic JSON Schema representation that would only benefit JSON Schema validators.

      For example a property of type Edm.TimeOfDay with precision 9 would be represented as

      {
      "type":"string",
      "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]

      {1,9}

      )?$",
      "precision":9
      }

        Attachments

          Activity

          Hide
          mikep Michael Pizzo (Inactive) added a comment -

          Approved 2015-10-1

          Show
          mikep Michael Pizzo (Inactive) added a comment - Approved 2015-10-1
          Hide
          handl Ralf Handl added a comment -

          Added format "decimal" for Edm.Decimal: this allows validation of payloads in IEEE754Compatible mode for OData-aware validators

          Show
          handl Ralf Handl added a comment - Added format "decimal" for Edm.Decimal: this allows validation of payloads in IEEE754Compatible mode for OData-aware validators
          Hide
          mikep Michael Pizzo (Inactive) added a comment - - edited

          Add "precision/scale" to primitive types table in 4.1.2.1, Primitive Properties.
          Also add precision, scale and format (decimal) to "Price" in example 14 as per description.
          In Example 8, add multipleOf, minimum, maximum, and precision to "DecimalValue"

          Price in Example 44 looks correct, just a little weird at first (and thus good to have the example). Consider adding comments to example 44 explaining the weirdness

          (also update numbering of examples)

          Show
          mikep Michael Pizzo (Inactive) added a comment - - edited Add "precision/scale" to primitive types table in 4.1.2.1, Primitive Properties. Also add precision, scale and format (decimal) to "Price" in example 14 as per description. In Example 8, add multipleOf, minimum, maximum, and precision to "DecimalValue" Price in Example 44 looks correct, just a little weird at first (and thus good to have the example). Consider adding comments to example 44 explaining the weirdness (also update numbering of examples)

            People

            • Assignee:
              Unassigned
              Reporter:
              handl Ralf Handl
            • Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: