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

 


Help: OASIS Mailing Lists Help | MarkMail Help

clr-dev message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [clr-dev] Philosophy behind the CVA contracts


At 2011-02-05 09:04 -0600, ericdes wrote:
>I have a question I should have asked myself earlier... How does one 
>make the links between his own set of codes and the ones in the CVA 
>agreement (which might be different)?
>
>Example: A participant uses internally 'SP' as the country code for 
>Spain whereas he received documents with the code 'ES' for Spain (as 
>per a CVA agreement). How can the system know both codes relate to 
>the same 'Spain'?

Good question.  And I have a long essay answer that I hope you find 
useful; please bear with me while I go into detail.  I hope others 
will pitch in with their thoughts on this topic as well.

There are a couple of different camps in the XML world regarding 
semantics, or the meaning of information found in markup.  Some 
people believe that XML somehow conveys semantics between the angle 
brackets.  I disagree, in that I believe XML only conveys syntax and 
not semantics.  It is up to implementers of programs and stylesheets 
to interpret the semantics (meaning) represented by what is found in 
the syntax (XML).  Content is interpreted by the recipient, and 
hopefully that interpretation is the same as intended by the 
sender.  Sometimes it is obvious, sometimes it isn't, and sometimes 
(as in this example) people think it is obvious but there are nuances 
not considered.

Which isn't to say XML can't help in that interpretation of 
semantics, I just don't believe that <countryCode>ES</countryCode> 
means anything more or less than <countryCode>SP</countryCode> means, 
which is nothing at all.  It is up to the programmer/stylesheet 
writer to say "okay, when the <countryCode> element contains the 
string 'ES' then I'm going to interpret that as the country of 
Spain".  Another programmer/stylesheet writer can say "okay, when the 
<countryCode> element contains the string 'SP' then I'm going to 
interpret that as the country of Spain".

Which illustrates why international bodies like ISO have been 
standardizing on the concrete codes (strings of characters) that 
represent globally-agreed-upon abstract semantics such as countries, 
currencies, payment means, etc.  For interoperability, when everyone 
in the world wants to agree on a single code for Spain, they can all 
agree on "ES" and no further explanation is necessary because the 
documentation for the country code "ES" unambiguously specifies the 
semantics behind what the code means.

That isn't to say other codes cannot be used for Spain, such as "SP" 
in your example, but is that interoperable if there is no global 
agreement that "SP" represents Spain?  A unilingual Spaniard may have 
no inkling that "SP" represents Spain.  A unilingual German may not 
see "GE" as representing Germany, since "DE" is the abbreviation of 
Deutschland which is German for Germany.  A unilingual Dane may not 
see "DE" as representing Denmark, instead of the ISO "DK", because 
they'll probably interpret that as "DE" for Germany.

So, to your question of "how can they both be related to be the same 
thing?" you are getting into the realm of knowledge management, 
ontologies, taxonomies, topic maps, etc.  Fortunately, there are 
syntactic mechanisms in both genericode and CVA in order to provide 
enough of this knowledge management to be useful.

First, the syntax.  If you create a genericode list of Anglicized 
country abbreviations, then the code values in your private list are 
"SP", "GE", "DE", etc.  One code per row in the genericode model.

Then you create a CVA file that specifies in which document contexts 
you want constrained to your country codes.  You use XPath to specify 
the document context and you use a URI to your genericode file to 
impose the constraint.  If you want *both* "ES" and "SP" to represent 
Spain at the syntax level, then in the CVA file you point the one 
document context to two genericode files, and the validation will 
handle the union.

Note that my example illustrates the critical importance of code list 
metadata:  that data that identifies the code list from which codes 
are taken.  If in your CVA you are allowing both code lists for 
<countryCode> and the XML simply says <countryCode>DE</countryCode>, 
then is the country Denmark or Germany?  The user needs to use code 
list metadata to disambiguate this ambiguous value:

   <countryCode listId="ISO3166-1">DE</countryCode> represents Germany
   <countryCode listId="EricsList">DE</countryCode> represents Denmark

Without that disambiguation, how will your program know, for example, 
what tariff rate might apply in an importation document?  BTW, this 
gets really important when the same two-letter code is used over time 
for two different countries.  At one point "CS" represented 
Czechoslovakia and in 2003 it represented Serbia and Montenegro.  In 
that case the disambiguation needs both the list *and* the 
publication date of that list to know what "CS" 
represents.  Interestingly, Serbia and Montegro reverted to "YU" 
(Yugoslavia) in 2004[1] because of this very confusion, I suspect 
because programs did not accommodate release dates of country codes.

The CVA/genericode contract between two trading partners exchanging a 
document dictates which syntactic values are allowed where in the 
XML.  The semantics (meaning) behind those agreed-upon values are 
part of a separate implicit or explicit agreement between the trading 
partners, outside of the XML syntax.  Both trading partners have to 
agree, perhaps even with a signature or legal undertaking, on the 
abstract concept of countries.  Which isn't to say that in 
CVA/genericode there isn't an opportunity to codify those agreed-upon 
abstract concepts for programmatic analysis, because there is and 
your question/scenario illustrates this very well.

Note that ISO has yet to publish their codes and associated semantics 
in genericode, but for the UBL project the UBL TC did this for the 
ISO list of standardized country codes:

http://docs.oasis-open.org/ubl/os-UBL-2.0/cl/gc/default/CountryIdentificationCode-2.0.gc

Note in this XML serialization how ISO has augmented the country code 
table (in the abstract) with both name (in English) and a numeric 
value for each coded value.  This is realized in the genericode table 
(in the syntax) as three values per row, associating the country name 
and numeric value with each code.

Why the numeric value?  *That* is where the semantics are 
codified.  This might seem confusing on first read:  "how are 
semantics represented by a number?".  Well, names for countries 
change over time, so something was needed as a long-term, 
linguistically-neutral representation of the concept of a 
country.  If a country changes its name, its alphabetic code might 
change to reflect cultural requirements dictated by that 
country.  Its numeric code, however, doesn't change because the 
semantics of that country defined by those boundaries at that 
location on the globe still is that country.

I've copied four extracts that I found using a Google search, 
documented in the interpretation of newsletters published by ISO 
regarding the maintenance of the ISO country code list.  Two 
illustrate a country changing its name, and two illustrate the need 
to represent a brand new country:

   http://3waylabs.com/zone/iso-country-codes
   List of changes applied, as specified in registration newsletters:
   ...
   Newsletter III-1, 1989-12-5:
     Burma deleted, Myanmar added (same numeric value, change of country name)
   ...
   Newsletter III-7, 1990-08-14
     Unification of Yemen, under new numeric code
   ...
   Newsletter III-10, 1990-08-14
     Kampuchea deleted, Cambodia added (same numeric value, change of name)
   ...
   Newsletter III-13, 1990-10-30
     Germany unified (DDR deleted, new name and numeric code for 
unified Germany)
   ...

So, Burma used to be represented as "BU" and is now represented as 
"MM" but the numeric code "104" never changed.  So the meaning of 
that set of boundaries at that location on the globe has been and 
still is represented linguistically-neutrally as "104".  Similarly, 
Kampuchea "KA" is now Cambodia "KH" but the numeric code 116 did not change.

Note in my excerpts that the unified Yemen and the unified Germany 
were given new numeric codes because the meaning of the new countries 
is in fact brand new with a new set of boundaries at a location on 
the globe.  There was no unified Germany before, so the new numeric 
code "276" was assigned, even though the "DE" code is reused.

So, a program looking at the numeric values associated with country 
codes in a taxonomy can use the numeric values as the long-term basis 
for the meaning of countries and have that meaning last longer than 
using the code abbreviations.

But here is your opportunity to answer your question:  "how can both 
"ES" and "SP" be related to be the same thing?"  I think your answer 
is in those numeric codes.  If your abstract Anglicized country code 
list associated "724" with "SP" then your program can see that that 
is the same "724" associated with "ES" in the ISO country code list.

So, your genericode file would syntactically express in the 
code-level metadata a column for the equivalent ISO numeric 
linguistically-neutral country code.

If you needed to check if one of your country codes represents the 
same meaning as one of the ISO country codes, your program would do a 
simple check of the associated numeric value of each found in each 
genericode file.  If they are the same, you can then conclude you are 
talking about the same country, regardless of what the code actually is.

Your question and ISO's example of the numeric codes is an excellent 
illustration of the dissociation of syntax and meaning.  The XML says 
"ES", the code list metadata specifies the ISO list and its year of 
publication, the associated numeric code is "724" and your program 
understands that to be Spain.  Another XML says "SP", the code list 
metadata specifies Eric's list, the associated numeric code is "724" 
and your program understands that to be Spain.

I doubt, however, that many programs go to this extent to be 
unambiguous (witness the back-step made by ISO regarding the "CS" 
code).  It must not be so very important to them to be that precise 
over the very long term of decades of changing representations of 
long-term semantics.

I hope this has helped.  I welcome any questions about this answer so 
that I can help to clarify anything.

And I hope anyone else on the list with a perspective on this will 
also speak up.  Especially if they disagree with what I've written 
and can correct me.

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

[1] http://www.wipo.int/pct/guide/en/gdvol1/annexes/annexk/ax_k.pdf (page 10)

--
Contact us for world-wide XML consulting & instructor-led training
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/c/
G. Ken Holman                 mailto:gkholman@CraneSoftwrights.com
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]