- From: Jonathan Robie <jonathan.robie@datadirect.com>
- Date: Tue, 21 Oct 2003 10:01:24 -0400
- To: "MURATA Makoto (FAMILY Given)" <EB2M-MRT@asahi-net.or.jp>, public-qt-comments@w3.org
- Cc: MURATA Makoto <eb2m-mrt@asahi-net.or.jp>
At 09:44 AM 10/21/2003, MURATA Makoto (FAMILY Given) wrote: >I am wondering if it the data model spec allows partial type-assignment: >assigning types to some (but not all) of the elements or attributes. Such >partial type-assignment is particularly useful for RELAX NG schemas, >which are allowed to be ambiguous. Hi Makoto, Every element or attribute node in the data model has a type annotation. This type annotation may name a very general type, such as xs:anyType, or it may convey that a node is untyped, e.g. xdt:untypedAny. Would assigning a very general type meet your needs? >For example, consider a RNG schema (in the compact syntax) as follows. > >start = > element root {(aWithOptB, aWithB) | (aWithB, aWithOptB)} >aWithB = element a {b} >aWithOptB = element a {b?} >b = element b {xsd:int} > >This schema is ambiguous: it allows two interpretations of ><root><a><b>3</b></a><a><b>4</b></a><root>. Although this schema is a bit >artificial, it is created by computing the difference of two schemas >by hand (i.e., a schema with optional <b>s and a schema without <b>s). > >We cannot uniquely determine the type of the two <a>s in the document, >but we can determine the type of the two <b>s. Obviously, they are >of the type xsd:int. Does the data type spec allow such partial type >assignment? You could assign the nearest common root type to the two <a>s, which may be as general as xs:anyType. I don't know what you want to do with this data, so I can't tell if this is adequate. If the types are atomic types, then assigning a very general type and relying on XQuery's implicit casts could do the trick. Jonathan
Received on Tuesday, 21 October 2003 10:02:19 UTC