This is a personal comment -- not on behalf of HP.
This is the formal submission of the comment Jeremy already sent to the
WG on my behalf:
http://lists.w3.org/Archives/Public/public-grddl-wg/2007May/0061.html
Does an XML namespace necessarily imply a certain set of semantics?
Suppose Freddy at example.org defines a convenient XML schema for
writing a person's legal residence ("a:primaryAddress") a vacation home
address ("a:secondaryAddress"), such as:
<a:root xmlns:a="http://example.org/AddressSchema.xml">
<a:primaryAddress>25 Park St, Rochester, NY</a:primaryAddress>
<a:secondaryAddress>88 Spring St, Salem, MA</a:secondaryAddress>
</a:root>
Freddy makes the XML schema definition downloadable from the namespace
URI, and separately provides prose documentation to his users explaining
the meaning and purpose of a:primaryAddress and a:secondaryAddress in
his application. In essence, Freddy's app treats this document as
though it had made the following assertions:
foo:_lucy foo:legalResidence "25 Park St, Rochester, NY".
foo:_lucy foo:vacationAddress "88 Spring St, Salem, MA".
Later, Ralph needs a schema for billing and shipping addresses and he
notices that Freddy's AddressSchema has the exact form he needs:
a:primaryAddress could represent the billing address and
a:secondaryAddress could represent the shipping address. In other
words, Ralph wishes to reuse the syntax only. (This is analogous to
implementation inheritance in OO programming.) Raph notes that an XML
schema only defines the structure of a document -- not the semantics --
and the namespace spec does not seem to say anything about the semantics
of a namespace either. Ralph reuses Freddy's schema by reference, and
provides separate prose documentation to his users explaining that the
syntax (only) of Freddy's schema is being reused but the semantics are
to be the semantics specified by Ralph. Example:
<a:root xmlns:a="http://example.org/AddressSchema.xml">
<a:primaryAddress>123 Winter St, Palo Alto, CA</a:primaryAddress>
<a:secondaryAddress>444 El Camino, San Diego, CA</a:secondaryAddress>
</a:root>
In essence, Ralph's app treats this document as though it had made the
following assertions:
fum:_desi fum:billingAddress "123 Winter St, Palo Alto, CA".
fum:_desi fum:shippingAddress "444 El Camino, San Diego, CA".
Later Freddy decides to update his XML schema document at
http://example.org/AddressSchema.xml to declare a GRDDL transformation
in the namespace document such that the above example would be GRDDL
transformed to RDF. Ralph may have no knowledge of GRDDL and may be
unaware of this change, but suddenly Ralph's documents gain the
semantics of Freddy's documents according to the GRDDL spec.
Questions
Was Ralph wrong to re-use Freddy's namespace and syntax schema while
imparting his own semantics to that schema? If so, what spec forbids
this? (Presumably this is a question for the W3C TAG.)
My own view at present is that a namespace should be viewed as implying
the semantics that its owner declares, regardless of whether GRDDL is
used. Hence, Ralph should not give his document different semantics
than Freddy somehow specifies via his namespace document. If Freddy's
semantics are not clear to Ralph, then Ralph should not use Freddy's
namespace, due to the risk of guessing wrong.
However, since I do not at present see anything in the namespace spec or
the WebArch that forbids this kind of syntax-only reuse, perhaps the
GRDDL spec should address the possibility of its allowance. If so, what
should the GRDDL spec say?
Option 1: Add some warning text in the spec. This might include
suggesting that GRDDL aware agents check last modified times on docs and
namespace docs, but this does not seem like it would be reliable.
Option 2: Record a postponed issue (possibly to be referred to the TAG).
At present I think either option would be okay.
David Booth, Ph.D.
HP Software
+1 617 629 8881 office | dbooth@hp.comhttp://www.hp.com/go/software