- From: Provenance Working Group Issue Tracker <sysbot+tracker@w3.org>
- Date: Thu, 11 Oct 2012 12:49:14 +0000
- To: public-prov-wg@w3.org
PROV-ISSUE-572: What constraints should we have on ordering of elements within the main complexTypes? [XML Serialization] http://www.w3.org/2011/prov/track/issues/572 Raised by: Curt Tilmes On product: XML Serialization (Caution, the word "attributes" is overloaded between PROV-N and XML -- consider context for the meaning of that word.) Within the PROV-N specification for most of our types, the syntax is something like this: something(id; a, b, c, attrs); where * a,b,c are either required or optional fields and * attrs are optional attributes to be specified as a set of attribute-value pairs Thoat attributes can include specified prov:* fields like prov:location, prov:role, etc. or other fields in some other namespace. The current approach to developing the XML complexType for each of those is to: * make prov:id an attribute of the type * make each of the a,b,c, XML elements and to require they be specified in the same order as the PROV-N * also make the attributes XML elements, require that they be after the primary a,b,c fields, but they can be specified in any order. The XML schema for the type becomes something like this: <xs:complexType name="something"> <xs:sequence> <xs:element name="a" type="..."/> <xs:element name="b" type="..."/> <xs:element name="c" type="..." minOccurs="0"/> (optional) <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="location"/> <xs:element name="role"/> <xs:element name="label"/> <xs:element name="type"/> <xs:any namespace="##other"/> </xs:choice> </xs:sequence> <xs:attribute ref="prov:id"/> </xs:complexType> So, for example: used(a1, e1, 2011-11-16T16:00:00, [ ex:parameter="p1" ]) becomes <prov:used> <prov:activity prov:ref="a1"/> <prov:entity prov:ref="e1"/> <prov:time>2011-11-16T16:00:00</prov:time> <ex:parameter>p1</ex:parameter> </prov:used> There is some concern over the constraint on the ordering, either to make it more strict, or less strict. Here are a few options (there are others and hybrids): A: Leave it the way it is now. This can allows mixing attributes so e.g. you can specify a prov:type, then a prov:location, then another prov:type. It also allows mixing prov: namespace attributes with non-prov: namespace attributes in any order. B: Require all prov: namespace attributes to precede all non-prov: namespace attributes, but still don't require a specific prov:* attribute order. C: Require strict ordering of the prov: namespace attribute fields in addition to strict ordering of the other elements. So, e.g. if you including a prov:type and a prov:label field, you must put the prov:label prior to the prov:type, and you get a validation error if you specify them in the wrong order. D: Remove all ordering You could, e.g. specify a prov:type prior to the activity or entity elements.
Received on Thursday, 11 October 2012 12:49:19 UTC