OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Versioning of Enums

[ Lists Home | Date Index | Thread Index ]

At 2006-02-13 12:26 +0000, Fraser Goffin wrote:
>some 'at first glance' questions. If these seem a bit dumb, please 
>take them as an oppotunity to promote the strengths of this approach :-

All questions are welcome, Fraser!

>1. How does this approach specifically assist in dealing with 
>versioning issues ?

Code list versioning is a shared responsibility between describing 
the code list, associating the code list, and using the code 
list.  UBL provides code list meta data attributes that a user can 
choose to use.  genericode provides for indicating the version of an 
expression of code list values.

In a UBL instance a user can say the following, indicating that the 
version of the code they are using is not important to them:

     <cbc:AccountTypeCode>ABC</cbc:AccountTypeCode>

Alternatively, if the version is important they could say:

     <cbc:AccountTypeCode listVersionID="3.7">ABC</cbc:AccountTypeCode>

A genericode expression of values includes the version of those values.

A code list context association file could have the union of a number 
of genericode files that trading partners wish to use:

     <Context item="AccountTypeCode" codes="atcV3-6 atcV3-7"/>

My scripts will check the authored content for a version number and, 
if not present, will check the value given against all values of all 
associated code lists (since version isn't indicated, all are in 
play).  When present it will limit the checks against only the code 
list with the same version number as @listVersionID.  If no 
associated genericode code list has the version number indicated in 
the UBL instance, then the value violates the constraints expressed 
in the triad of description, association and use, and an error is reported.

>2. I see mention of auditability and impact analysis but didn't 
>understand how these would be acheived. ?

Could that have been in another document?  I don't mention either of 
those terms explicitly in my document.  I think my discussion above 
regarding sensitivity to versions of code lists would handle 
auditability.  I'm not sure what you mean by impact analysis.

>3. How is this approach 'better' than creating a vocabulary schema 
>for each third party contract using the 'chameleon' schema + 
>xs:redefines/union/restrition etc. I mentioned earlier (I take the 
>point about being able to specify particular contexts in which an 
>enumeration can apply - but is there more ?)

By not conflating value validation with structural validation.

I am in the camp that believes if you change the schema for a 
document you have to change the version of the schema.  If you change 
the version of the schema, you change the namespace of the 
document.  Otherwise, two trading partners could inadvertently be 
saying "I use UBL 2.0" when they are, in fact, using different sets 
of schemas that are indicating the same namespace URI string.

By layering value validation on top of structural validation, 
business constraints on values don't impact on the declared structure 
of the document.

Now one could say they have the same problem saying "I'm using the 
following association files" when in fact they are not ... but that 
is a management issue in that they interchange the layer on top of 
the standardized W3C Schema expressions.  Which then leads to the 
question of "why not just interchange the agreed on W3C Schema 
expressions? ... how is that different?"

I believe they really are different ... structural schemas are 
(should be in my opinion) inviolate.  Granted some inviolate 
enumerations are required by UBL *by design of UBL* and are not 
subject to trading partner interpretation.  Not all enumerations are 
business related code lists.  I do believe that a structural schema 
can express an enumeration of values that are inherent in the design 
of the information structure.

It is the purview of the UBL committee to dictate the structure of 
UBL documents for interoperability of the instances.  It is the 
purview of trading partners to agree on the layer of value validation 
placed on top of the standardized structures that are under their 
control in doing business.  They do not have the authority to mess 
around with the fixed enumerations designed in as part of UBL's 
internal design.

I believe if trading partners have to "compromise" the standardized 
structures by building in the business rules of value validation, 
they run the risk of having different schema expressions expressing 
the same "structure of a UBL 2.0 document".  With careful management 
it can surely be done ... but I'm concerned about the integrity of 
saying "my modified W3C schema expressions conform to UBL 2.0 ... 
trust me!"  With my proposed methodology I can categorically say "I 
am using the sacrosanct UBL 2.0 document structures" and then just 
focus on ensuring you and I agree on the layer of value validation 
placed on top.

By not conflating business rules with standardized structure, the 
standards committee's efforts to produce a set of structures to be 
used by all is incredibly enhanced because nobody has to touch them 
in any fashion in order to become fully interoperable at a business 
level as well as a structural level.  And the enumerations needed in 
the design of UBL not related to business rules remain sacrosanct and 
trading partners cannot extend them and possibly break UBL 
implementations (though they could be restricted if trading partners 
wish to agree on subsets of UBL invocation somehow).

YMMV in this regard, but it is a position I have long held (for good 
or ill) and I always try to find ways to deal with read-only 
distributions of agreed-upon issues.

Finally, one could refute the above with a pure W3C Schema approach 
stating "well, I'll use inviolate UBL 2.0 for a W3C Schema first pass 
and then my favourite W3C Schema method of implementing code list 
values in a modified W3C Schema second pass for code lists" ... all 
power to you, but I think the elegance in genericode expression and 
management, and the flexibility in associating sets of values with 
contexts is easier to manage, easier to understand, and easier to 
introduce into a trading partner agreement.

Oh, one more thing ... my approach allows two different contexts of 
the same information item to have two different sets of coded values 
(see the example in sectoin 6.1 regarding the "item-b" information 
item) ... how could I do that with W3C Schema expressions when they 
do not support co-occurrence constraints?  I'm effectively saying 
that element item-b (which is globally declared in UBL) has two sets 
of values (two types) based on its parent.

>4. Large lists are still a problem right ?. It is not unusual in the 
>financial services sector for many lists to be > 200 entries, a 
>reasonable number to be > 1000 and a few that are >10,000. Using 
>schematon XSLT would be a bit impractical wouldn't it ?

Would two trading partners have to agree on all 10,000 being 
available to engage in business?

Would such number constraints be less impractical in a W3C expression 
of 10,000 enumerations?

A genericode file could be synthesized from a database query of which 
of the 10,000 would be appropriate for a particular department or 
line of business.  I suppose a database query could also synthesize a 
W3C Schema fragment.

Note that XSLT is but one implementation of ISO/IEC 19757-3 
Schematron ... now that it is ratified as an ISO standard vendors 
might explore more high-speed implementations and customers with 
requirements to support 10,000 values being validated might pressure 
vendors to consider finding high-speed solutions to such issues.

>4. You mentioned in your earlier response to Glen, that you had 
>hoped in UBL to remove ALL embedded enumerations from schema.

Indeed ... the presence of any embedded enumeration constraints of 
business-related concepts when using this methodology would only give 
benefits of agreeing on a subset of the declared list rather than a 
flexible list of any set of values.

>Did you decide then that no enumeration could be considered 'stable' 
>or did you want this just to keep the approach consistent regardless 
>? (you also mention 'type 1' code lists which suggest in schema definition ?)

The former ... that no enumeration could be considered stable for the 
long run.  Business has been flexible for thousands of years ... 
introducing constraints on what two trading partners wish to agree 
upon seems arrogant ... I anticipate trading partners to be far more 
imaginative in doing business than UN/CEFACT or UBL or anyone could 
bring down by edict.

I hope this helps.  Thanks again for your questions!

. . . . . . . . . . . . . . . Ken

--
Upcoming XSLT/XSL-FO hands-on courses: Washington,DC 2006-03-13/17
World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman                 mailto:gkholman@CraneSoftwrights.com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/x/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Aug'05  http://www.CraneSoftwrights.com/x/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS