- From: <noah_mendelsohn@us.ibm.com>
- Date: Fri, 23 Aug 2002 10:09:44 -0400
- To: "Biron,Paul V" <Paul.V.Biron@kp.org>
- Cc: Ashok Malhotra <ashokma@microsoft.com>, Dan Connolly <connolly@w3.org>, ht@cogsci.ed.ac.uk, www-rdf-comments@w3.org
Thanks, this is very helpful. The latter part of your note reinforces my concern that we have architecuturally complicated things by introducing types (I.e. unions) in which there are lexical forms that can be "activated" only through use of xsi:type. I'm a bit nervous that the edge cases we've been discussing aren't the last ones we'll discover. Still, if we've gone this route, I think we've no choice at this point but to deal with any anomolies, as you suggest. Thanks again. ------------------------------------------------------------------ Noah Mendelsohn Voice: 1-617-693-4036 IBM Corporation Fax: 1-617-693-8676 One Rogers Street Cambridge, MA 02142 ------------------------------------------------------------------ "Biron,Paul V" <Paul.V.Biron@kp.org> 08/22/2002 07:15 PM To: "'noah_mendelsohn@us.ibm.com'" <noah_mendelsohn@us.ibm.com>, ht@cogsci.ed.ac.uk cc: Ashok Malhotra <ashokma@microsoft.com>, Dan Connolly <connolly@w3.org>, www-rdf-comments@w3.org, www-xml-schema-comments@w3.org Subject: RE: QName is ambiguous; aren't datatypes unambiguous? union types total? > -----Original Message----- > From: noah_mendelsohn@us.ibm.com [SMTP:noah_mendelsohn@us.ibm.com] > Sent: Thursday, August 22, 2002 12:21 PM > To: ht@cogsci.ed.ac.uk > Cc: Ashok Malhotra; Dan Connolly; www-rdf-comments@w3.org; www-xml-schema-comments@w3.org > Subject: Re: QName is ambiguous; aren't datatypes unambiguous? union types total? > > > Henry Thompson corrects me regarding the interpretation of a union of two > types with overlapping lexical spaces (e.g. string & decimal): > > >> That can't be right, since the following is allowed, given a > >> definition of my:u as union(xs:string,xs:decimal) and foo declared to > >> have my:u as its type: > > >> <foo xsi:type="xs:decimal">10</foo> > > Ugh, we allow that? I'm surprised and disappointed. Oh well.... If we > do, then clearly the value space of a union is truly the union of the > value spaces. Something feels funny to me about this state of affairs > (I.e. order matters in the absence of xsi:type, but not when xsi:type is > present), but I can't quite pin it down. > Yes, of course we allow that. Why is this funny...order in the definition matters unless you specifically override that order with xsi:type... > Question: do we allow facets like enumeration on the union, as opposed to > on the constituent types? If so, are they enforced in the presence of an > xsi:type such as above? Can't prove it's broken, but the combination > seems very strange. The straight lexical forms in the absence of xsi:type > are those that are visible per the type ordering, and the values assigned > to any enumeration would be accordingly. Thus, you could not enumerate > the decimal "10" in an enumeration facet on the union. Nonetheless, you > could supply the value 10 in an instance as shown above. Seems very > asymmetric to have values in a type that you can't enumerate. Almost > surely not worth changing now, but I might have argued for thinking this > through more carefully if I'd noticed it during the original design work. > We don't allow any facets to be specified directly on the union (i.e., when the union itself is defined). But, when a type is derived from a union type, we only allow pattern and enumeration to be specified...regardless of the facets that are applicable to the member types. Thus, the following is allowed: <xs:simpleType name='myUnion'> <xs:union memberTypes='xs:string xs:decimal'/> </xs:simpleType> <xs:simpleType name='myRestr'> <xs:restriction base='myUnion'> <xs:enumeration value='this is a test'/> <xs:enumeration value='10.0'/> </xs:restriction> </xs:simpleType> <xs:element name='foo' type='myRestr'/> But, yes you probably are right that there's a whole in that you can't give an xsi:type on the enumeration value...so that the 2nd enumerated value is correctly interpreted as a decimal rather than a string. We should do a fix or 1.1 or 2.0. I think there also may be something askew in that if you have <foo xsi:type='xs:decimal'>20.0</foo> chances are we didn't get the rules right in structures to check that if foo is declared of a union type then the xsi:type discriminator should be used to examine just that portion of the union's value space and not check it against the xsi:type directly. pvb
Received on Friday, 23 August 2002 10:11:22 UTC