[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [ver] final document
Please find attached (or below) the final output note from the VER8 / VER9 versioning team
Report from the VER8/VER9 Taskteam ___________________________________ This note is a summary of the meetings of the VER8/VER9 Taskteam (Arofan Gregory, Stephen Green, Tony Coates, David Kruppke) Two alternatives were discussed: (1) Full re-declaration of constructs in new minor versions (2) Controlled use of substitution groups to enable the use of extension/refinement approach advocated in current NDR Additionally, the use of an XML expression of the BIEs and their relationships, made available to processors at run-time, was discussed. While seen as potentially quite useful, this alternative was seen as requiring too much work for immediate use, and was not considered as a practical immediate option. Further, it would not form an alternative to either (1) or (2) above, but would be a useful approach in combination with one or both of them. It would make a natural companion to approach (1), since the BIE-XML could provide inheritance relationship rather than expressing it in the schemas. It was generally agreed that if this path is taken in future, it should not be an integral part of UBL, but rather a sister-standard, as any CCTS-based vocabulary might find it to be very useful. Option (1) was seen to have some advantages: - It is more like ATG's NDR - Use of namespace prefixes in instances is simpler This approach has been prototyped, and is seen as the default position. It represents a departure from the design intended in the current NDR, but major changes to the NDR document itself are not required such as #1.1 - remove VER8 and VER9 #1.2 - add a rule (a new VER8, say) that a minor version must be such that any instance valid by the previous version must require only changes to the namespaces and schemaLocation attribute value in order to be valid by the current version #1.3 - change ELD2 from: All element declarations MUST be global with the exception of ID and Code which MUST be local. to: All element declarations MUST be global. #1.4 - amend much of the prose of the NDR and possibly some of that of the Customisation Methodology Paper Option (2) was discussed as being closer to the design intended in the current NDR, by using extension/refinement as an explicit mechanism in the schemas. In order to make this approach work, a controlled use of substitutuion groups was proposed. Alternative approaches involving the use of extension/refinement would have some very negative side-effects such as impacting the namespace packaging of the UBL library. In using substitution groups, emphasis is placed on the fact that their use is *controlled*. The NDR would explicitly state how they are to be used, according to the prototype and samples and the following. They would only be employed to allow the creation of elements reflecting extended and/or refined BIEs per the current NDRs versioning rules. The use of empty, abstract types permitting uncontrolled substitution of any type of structure whatsoever would not be contemplated, although they do facilitate custoimization per the existing NDR and customization mechanisms (those involving extension/refinement). Note that when a substitution group is headed based on an element of a named type, only elements based on types which are extensions and refinements of the head-element's type are permitted as substitutions in XSD. Thus, the best control of the possible substitutions is the type of the head element. If these are normal BIEs, then constraints are placed on the allowable substitutions through the extension/refinement mechanism of XSD, in keeping with the intention of the current NDR. Stephen and Arofan each made prototypes of this approach. Stephen's permits the use of both extension and refinement on a single BIE in a minor version (Types with suffix '...Type' could be used for restrictions which can then be extended as well using further types with the suffix '...BaseType' or vice versa). Arofan's allows only one or the other. In either case, changes to the existing NDR are not huge: Each element in a namespace would be declared in the new namespace as an extension/refinement (frequently trivial) of its corresponding type in the preceding minor version namespace, which would be imported. They would have the same names. A global element would also be declared, as normal, but it would have a substitutionGroup attribute pointing to its corresponding preceding minor-version namespace element. (An extra type declaration with "base" added to the name could be declared, also, to allow for both extension and refinement to a single type if desired, as per Stephen's prototype.) References: Stephen's prototype - http://lists.oasis-open.org/archives/ubl/200504/bin00006.bin (save file locally, changing extension to .zip) Arofan's prototype (illustrative and not intended as fully conformant UBL Schemas) - http://lists.oasis-open.org/archives/ubl/200504/zip00000.zip The other necessary change is that no local element declarations are any longer permitted - both IDs and codelists would need to become global. It was noted that this approach, while in keeping with the design intent of the current NDR, would be very divergent from the ATG NDR. This leads to a discussion of having two sets of schemas, one designed according to each NDR, which would validate the same instances, albeit with a little bit of namespace "munging". The two sets of schemas would be derived from the same set of BIEs, and would in many ways have coordinated NDRs (namespace packaging would be 1:1, etc.) It would be possible to take the more metadata-rich set of schemas (UBL NDR, with extension/derivation) and derive the other set automatically, using XSLT or some other transformation. This approach would have several benefits: (1) Technologies such as XQuery which (we think - this was not fully explored) do not like the substitution group approach would have a useful set of schemas, as would any user or application which preferred the directness of the full re-declaration approach. (2) Type-aware technologies (XPath 2.0, etc) would have a set of schemas with the needed inheritance information made explicit in them. (UBL NDR using approach (2)) (3) Many difficult design choices involved in merging ATG and UBL NDRs would be avoided through the creation of rules regarding how the namespaces generated by the two NDRs would be named and corrresponded (it would be best of these were predictable). Recommendations: The final recommendation of the taskteam is as follows: (1) Make the next revision of the schemas a major release, version 2.0. This would allow for some of the needed changes to support this approach (global IDs and codelists) to be made, which in any case must be made to support the customization guidelines. (This would require a change to ND Rule 'ELD2', as in #1.3 above) (2) The next version could then be a minor version using approach (2), as outlined above. This would buy UBL the time to fully validate this approach. (This would require a change to ND Rule GXS5 which currently states: "The xsd:substitutionGroup feature MUST NOT be used". The change to this rule might include a mention that the use for minor versions could also be used for customisations in accordance with the UBL Customisation Methodology) (3) As possible, a coordinated release between UBL and ATG would realize the two-schema approach after this has been fully explored and validated. The approach recommended seems to be - if workable - the best way both to preserve the existing NDR design, and to maximize benefit for the user, by providing a choice of schemas with differing metadata in them. Further, it may help with political challenges.