ubl-comment

 View Only
  • 1.  JSON alternative UBL representation

    Posted 09-06-2017 08:09
    Dear UBL Committee

    Tradeshift is happy to see the formalization of an JSON alternative UBL
    representation in form of JSON (draft-04) Schemas [0]. We are in the
    process of aligning our own JSON representations to match these. In that
    process, we have tried to perform JSON schema validation using the schemas
    published here [1]

    I have the following comments:

    1: The "common" and "maindoc" JSON schemas are lacking the $id property,

    From the spec:

    "The "$id" keyword defines a URI for the schema, and the base URI that
    other URI references within the schema are resolved against. The "$id"
    keyword itself is resolved against the base URI that the object as a whole
    appears in."

    So if e.g. the "UBL-Invoice-2.1.json" would define

    "$id": "http://mynet.com/schemas/UBL-Invoice-2.1.json#"

    and the "UBL-CommonBasicComponents-2.1" would define

    "$id": "http://mynet.com/schemas/UBL-CommonBasicComponents-2.1.json#"

    Then references should be written like

    "$ref": "UBL-CommonBasicComponents-2.1.json#/definitions/UBLVersionID"

    Which is much cleaner IMHO than the relative path solution, which also
    is not a valid URI e.g. "../common/", and also to my knowledge how most
    tools work.

    2: Any plan for updating the schema version to the final version?

    3: The DateType in UBL-UnqualifiedDataTypes-2.1.json is defined as

    allOf: [

    {

    type: "string",

    format: "date-time"

    },

    {

    type: "string",

    pattern: "^-*[^T:-]+-[^T:]+$"

    }

    ]

    I believe that to be contradicting since "date-time" is "full-date "T"
    full-time" [2], that cannot coexist with the regex pattern as well.

    I have been unable to find any previous discussion of this, please bear
    with me if this has been discussed before.

    I have uploaded a ZIP file containing a small node script that can do
    validation of an invoice. Also an upgraded version of the JSON schemas to
    version 6 is included.

    Thank you for your consideration.

    [0] https://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/UBL-2.1-JSON-v1.0.html

    [1] http://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/cnd02/json-schema/

    [2] https://tools.ietf.org/html/rfc3339

    [3] *https://drive.google.com/file/d/0BwBEXaUe1bJIdTVHaUlpY3J1VXM/view?usp=sharing
    <https://drive.google.com/file/d/0BwBEXaUe1bJIdTVHaUlpY3J1VXM/view?usp=sharing>*

    Best regards

    Casper Rafn-Nørregård

    Tradeshift
    --
    Casper Rafn-Nørregård
    Senior Software Developer

    Cell: +45 25321282
    Skype: casper.rafn
    Twitter: @casperrafn <https://twitter.com/casperrafn>

    TRADESHIFT
    The Business Commerce Platform
    tradeshift.com ? tradeshift blog <http://blog.tradeshift.com/>



  • 2.  Re: [ubl-comment] JSON alternative UBL representation

    Posted 09-06-2017 09:08
    We've experimented quite a bit with JSON syntax for UBL here in Australia

    See http://ausdigital.org/ausdigital-syn/

    There's also free lossless transforms and validators at http://testpoint.io/syn

    Cheers

    Steven Capell
    Mob: 0410 437854

    > On 6 Sep 2017, at 6:09 pm, Casper Rafn-Nørregård <crn@tradeshift.com> wrote:
    >
    > Dear UBL Committee
    >
    > Tradeshift is happy to see the formalization of an JSON alternative UBL representation in form of JSON (draft-04) Schemas [0]. We are in the process of aligning our own JSON representations to match these. In that process, we have tried to perform JSON schema validation using the schemas published here [1]
    >
    > I have the following comments:
    >
    > 1: The "common" and "maindoc" JSON schemas are lacking the $id property,
    > From the spec:
    > "The "$id" keyword defines a URI for the schema, and the base URI that other URI references within the schema are resolved against. The "$id" keyword itself is resolved against the base URI that the object as a whole appears in."
    > So if e.g. the "UBL-Invoice-2.1.json" would define
    >
    > "$id": "http://mynet.com/schemas/UBL-Invoice-2.1.json#"
    >
    > and the "UBL-CommonBasicComponents-2.1" would define
    >
    > "$id": "http://mynet.com/schemas/UBL-CommonBasicComponents-2.1.json#"
    >
    > Then references should be written like
    >
    > "$ref": "UBL-CommonBasicComponents-2.1.json#/definitions/UBLVersionID"
    >
    > Which is much cleaner IMHO than the relative path solution, which also is not a valid URI e.g. "../common/", and also to my knowledge how most tools work.
    >
    > 2: Any plan for updating the schema version to the final version?
    >
    > 3: The DateType in UBL-UnqualifiedDataTypes-2.1.json is defined as
    > allOf: [
    > {
    > type: "string",
    > format: "date-time"
    > },
    > {
    > type: "string",
    > pattern: "^-*[^T:-]+-[^T:]+$"
    > }
    > ]
    > I believe that to be contradicting since "date-time" is "full-date "T" full-time" [2], that cannot coexist with the regex pattern as well.
    >
    > I have been unable to find any previous discussion of this, please bear with me if this has been discussed before.
    >
    > I have uploaded a ZIP file containing a small node script that can do validation of an invoice. Also an upgraded version of the JSON schemas to version 6 is included.
    >
    > Thank you for your consideration.
    >
    > [0] https://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/UBL-2.1-JSON-v1.0.html
    > [1] http://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/cnd02/json-schema/
    > [2] https://tools.ietf.org/html/rfc3339
    > [3] https://drive.google.com/file/d/0BwBEXaUe1bJIdTVHaUlpY3J1VXM/view?usp=sharing
    >
    > Best regards
    > Casper Rafn-Nørregård
    > Tradeshift
    > --
    > Casper Rafn-Nørregård
    > Senior Software Developer
    >
    > Cell: +45 25321282
    > Skype: casper.rafn
    > Twitter: @casperrafn
    >
    > TRADESHIFT
    > The Business Commerce Platform
    > tradeshift.com ? tradeshift blog