Open Grid Forum: Data Format Description Language Working Group

OGF DFDL Working Group Call, October-14-2009

Attendees

Suman Kalia (IBM)
Steve Hanson (IBM)
Mike Beckerle (Oco)
Peter Lambros (IBM)
Steve Marting (Progeny)

Apologies
Alan Powell (IBM)


1. Scoping Rules
Continued the discussion on scopig rules. Mike and Steve H have returned comments on Alan's scoping document draft.


For the benefit of Suman & Steve M, the rationale behind the revised rules was explained.

Suman was concerned that we no longer supported a use case, where a DFDL author creates in an xsd a reusable complex type which has local element children that are silent or incomplete with respect to DFDL properties, then includes/imports that into other DFDL xsds that supply the remaining DFDL properties. The old scoping rules would have allowed the local element children to pick up in-scope properties. Is this a major use case? Concensus was that it was not.  The majority of xsds will not allow much if any customisation, and those that do can handle it via DFDL variables (eg, encoding) or via DFDL properties that permit multiple entries (eg, separator).  

The behaviour of XSDL with respect to global default attributes was confirmed. They only act on the objects in the same xsd. An included/imported object does not pick up the parent xsd's global default attributes. But it was noted that there was an exception to this rule, the so-called 'chameleon namespace' scenario, where if an xsd is silent about its namespace, a parent with a target namespace can import it and impose that namespace on the imported xsds objects.

In the spirit of this, Mike proposed a way of supporting Suman's use case, where a new DFDL attribute is provided that allows an xsd to decide whether it gets its defaults from a local xsd's dfdl:format or from parent xsd's dfdl:format. This should work ok, but it was agreed not to add this to DFDL 1.0, and to keep for a future version. (Mike's write up is at the foot of these minutes)

Whether to allow dfdl:ref to take a variable was also discussed, currently it does not.  

Agreed that Steve H's type oriented approach to DFDL properties would not be adopted for DFDL 1.0.

Actions 051 & 060 updated below.


2. Binary/Boolean

For a  Boolean with representation='binary' you can specify separate values for true and false. However you cannot say false = 0 and true = non-zero. This facility is needed by some formats, eg, ASN.1.


Discussed alternative solutions:
a) Use an entity to indicate any non-zero value (eg, %anz;)
b) Use a separate property to control this
c) Use empty string to indicate any value other than the associated false value
d) Use strict/lax processing to control this.

Decided that c) was the neatest solution. Applies to dfdl:binaryBooleanTrueRep only. Empty string means any value other than dfdl:binaryBooleanFalseRep.

Work item added for draft 37.

3. numberBase and text numbers  
We didn't properly consider dfdl:numberBase when defining text number representation properties as they mostly assume base 10.


Agreed that the use of bases 2, 8 and 16 would invariably be used for integers only, without signs, decimal separators, exponents and other formatting options.  That rules out the use of several properties, which is good. But you still need a dfdl:textNumberFormat to define the pattern for an integer, which seems overkill.  The numberBase property probably needs moving from dfdl:textNumberFormat altogether, and placing outside.

New action 061 raised to come up with a proposal for this refactoring.


4. Validating min/maxOccurs
The spec in a couple of places clearly states that violation of min/maxOccurs constraints are processing errors, not validation errors. Reason being that both properties get dragged into parsing and unparsing. However, for values of dfdl:occursCountKind other than 'fixed', maxOccurs is not actually used, so perhaps it is better to treat maxOccurs violations under those circumstances as a validation error. Violations of maxOccurs when dfdl:occursCountKind='fixed' is still a processing error. This was agreed.


Work item added for draft 37.


5. Resolving points of uncertainty and parsing rules
Alan & Steve H spent some time discussing the uncertainty document and Alan has sent out a revision for review.  Comments welcome, especially on the listed rules for resolving uncertainty.


Steve H wants to ensure that the rules for resolving uncertainty do not preclude the use of 'on-demand' parsing as this is a valuable performance and memory technique for implementations. Steve thinks that the current rules should be ok. And there will always be some formats to which on-demand parsing can't be applied well.

A problem was spotted with uncertainty and arrays. If an element has minOccurs not equal to maxOccurs, but greater than zero (say x), then the point of uncertainty does not actually start until index x+1.  What does it mean to place a discriminator on that element (or one of its children if complex) ?  The rules as worded mean that for indices less than x+1, the discriminator might actually be used to resolve a higher point of uncertainty. Which is clearly wrong.  

Mike agreed that the full solution to this is part of existing action 033 which is looking at the need to scope indicators on discriminators.  All agreed that scope indicators should be avoided if at all possible.  

A proposal was put forward for handling this specific array scenario.  As well as states 'certain' and 'uncertain' add the concept of a 'possibly uncertain' state (better name welcome). This state is entered for the array element described above when processing indices 1 through x. Any discriminator evaluated in this state can result in false and cause backtracking, but if it evaluates to true it does not resolve anything. That can only happen in the 'uncertain' state.

Actions 33 and 45 updated.


6. Comments on draft 036
Please review the latest draf
t, the revision section describes the changes, plus change marking is on.

Agreed that the removal of dfdl:lengthKind = 'implicit' from text numbers and calendars was a good idea. It does make the easiest cases slightly less convenient to model, but avoids numerous issues with the hard cases.  Disallowing now means we always have the option to add it back at a future date.


7. Extensibility
Steve H asked whether the DFDL language needs to be extended to handle 'extensibility' scenarios, which he encounters in the real world.

For example, an industry standard format has regular revisions. The format allows users to add their own extensions. When a revision occurs, a user wants to apply the revision but retain his extensions in the simplest way possible.

The XSDL mechanisms for doing this are substitution groups and wildcards.

DFDL language supports extensibility today. User can declare global elements in a separate xsd, include that xsd in the core model, and add element references into the core model at the appropriate point.  Alternatively, user can additionally declare a global group in his separate xsd, add the element references in there, and just add a group reference to the core model. Even less invasive, the core model can ship with a dummy xsd containing an empty global group, and ship with a group reference already in place, in which case the user just swaps the dummy xsd for his own xsd.

Agreed that this should handle the use cases Steve H sees. No changes needed in DFDL 1.0.


Next call 21 October 13:00 UK

Meeting closed, 15:00

Next action: 062

Actions raised at this meeting
No
Action
061
Refactor dfdl:textNumberFormat to remove dfdl:numberBase.
14/10: Base 2, 8, 16 numbers are invariably integers without formatting, use of pattern etc is overkill

Current Actions:
No
Action
012
AP/SH: Update decimalCalendarScheme
10/9: Not allocated yet
17/9: No update
24/9: Add calendar binary formats to actions
22/10: No progress
16/1: proposal distributed and discussed. Will be redistributed
21/1: add locale,
04/02: changed from locale to specific properties
18/2: Need more investigation of ICU strict/lax behaviour.
08/04: Not discussed
22/04: AP to complete asap once the ICU strict/lax behaviour is understood.
29/04: No progress
06/05: No progress
13/05: Calendar has been added to latest spec version v034 but still a few details to clarify.
20/05: No Progress
27/05: No Progress
03/06: No Progress (low priority)
09/06: No Progress (low priority)
17/06: SH to check ICU code for lax calendar behaviour
24/06: no progress
01/07: no progress
15/07: no progress
29/07: no progress
05/08: no progress
12/08: no progress
19/08: Inconsistencies are being found in ICU behaviour so Calendars need reviewing again.
26/08: Specific three character short time zones may not be  maintained during round tripping when there is more than one short form for a time zone offset. Because dates and datetimes in the infoset only maintain a time zone offset so on unparsing it isn't possible to say which short form will be selected for a particular offset when there is more than one possible. Need to document.
09/09: no progress
16/09: no progress
30/09: no progress
07/10: no progress
14/10: no progress
033
MB: Need for scope indicator on discriminator
08/04: In progress within IBM
22/04: Waiting for TK to return from leave to complete.
29/04: TK has sent examples shown need for discriminators beyond choice. Agreed. MB to respond to TK
06/05: Discussed suggestion of adding type indicator to discriminator. MB to provide examples.
15/03: Semantic documented in v034. MB to provide examples of need for scope indicator on discriminator
20/05: MB to provide examples of need for scope indicator on discriminator (but lower priority than action 029)
27/05: No Progress (lower priority)
....
19/08: No Progress (lower priority)
26/08: No Progress (lower priority)
09/09: no progress
16/09: no progress
30/09: no progress
07/10: no progress
14/10: Action re-titled and assigned to Mike B
037
All: Approach for XML Schema 1.0 UPA checks.
22/04: Several non-XML models, when expressed in their most obvious DFDL Schema form, would fail XML Schema 1.0 Unique Particle Attribution checks that police model ambiguity.  And even re-jigging the model sometimes fails to fix this. Note this is equally applicable to XMl Schema 1.1 and 1.0. While the DFDL parser/unparser can happily resolve the ambiguities, the issue is one of definition. If an XSD editor that implements UPA checks is used to create DFDL Schema, then errors will be flagged. DFDL may have to adopt the position that:
a)DFDL parser/unparser will not implement some/all UPA checks (exact checks tbd)
b) XML Schema editors that implement UPA checks will not be suitable for all DFDL models
c) If DFDL annotations are removed, the resulting pure XSD will not always be valid (ie, the equivalent XML is ambiguous and can't be modelled by XML Schema 1.0)
Ongoing in case another solution can be found.
29/04: Will ask DG and S Gao for opinion before closing
06/05: Discussed S Gao email and suggestions. Decided need to review all XML UPA rules and decide which apply to dfdl.
20/05: SH or SKK to investigate
27/05: No Progress
03/06: The concern is that some dfdl schemas will fail UPA check when validation is turned on or when editted using tooling that enforces UPA checks. Renaming fields will resolve some/most issues. Need documentation  that  describes issue and best practice.
17/06: no change
24/06: no change
01/07: no prgress
15/07: No Progress (lower priority)
29/07: No Progress (lower priority)
05/08: No Progress (lower priority)
12/08: No Progress (lower priority)
19/08: Clarify that this action is to go through the XML UPA checks to assess impact on dfdl schemas and advice best practice. Name clashes is just one example. SH or SKK
26/08: No Progress (lower priority)
09/09: no progress
16/09: no progress
30/09: no progress
07/10: no progress
14/10: no progress
045
20/05 AP: Speculative Parsing
27/05: Psuedo code has been circulated. Review for next call
03/06: Comments received and will be incorporated
09/06: Progress but not discussed
17/06: Discussed briefly
24/06: No Progress
01/07: No Progress
15/07: No progress. MB not happy with the way the algorithm is documented, need to find a better way.
29/07: No Progress
05/08: No Progress. Will document behaviour as a set of rules.
12/08: No Progress
19/08: No Progress
26/08: No Progress
09/09: no progress
16/09: no progress
30/09: AP distributed proposal and others commented. Brief discussion AP to incorporate update and reissue
07/10: Updated proposal was discussed.Comments will be incorporated into the next version.
14/10: Alan to update proposal to include array scenario where minOccurs > 0
049
20/05 AP Built-in specification description and schemas
03/06: not discussed
24/06: No Progress
24/06: No Progress (hope to get these from test cases)
15/07: No progress. Once available, the examples in the spec should use the dfdl:defineFormat annotations they provide.
.....
19/08: No Progress (lower priority)
26/08: No Progress (lower priority)
09/09: no progress
30/09: no progress
07/10: no progress
14/10: no progress
051
Scoping rules.
MB: to document change to scoping rules to satisfy implementation concerns
17/06: MB and SH proposals discussed. Needs further discussion
24/06: AP to update presentation with latest proosal
24/06: AP had updated presentation. MB to review
08/07: Discussed at length. Simple types will now take annotations. Variables will be used for parameters.
15/07: No further progress. Needs final write up.
29/07: No Progress
05/08: No Progress
12/08: No Progress
19/08: AP will document new syntax rules.
26/08: No Progress
09/09: AP has documented new scoping rules. Not discussed
16/09: Not disussed. AP to update element reference examples
30/09: Significant dissatisfaction with proposed new rules. New proposal developed during call. AP to document.
07/10: New proposal was refind. Details in minutes.
14/10: Discussed at length. Details in minutes.
054
ICU DecimalNumber/ Calendar behaviour
15/07: No progress
29/07: No Progress.
05/08: No Progress. This action is to discover and document ICU behaviour. DFDL will do whatever ICU does.
12/08: No Progress
19/09: More examples of inconsistent behaviour discovered
09/09: no progress
16/09: no progress
30/09: no progress
07/10: no progress
14/10: no progress
056
resolve lenghtUnit=bits including fillbytes
12/08: No Progress
19/08: No Progress
26/08: No Progress
09/09: no progress
30/09: no progress
07/10: no progress
14/10: no progress
059
9/9: define how encoding,  byteorder and floating point format externally
16/09: no progress
07/10: no progress
14/10: no progress
061
Refactor dfdl:textNumberFormat to remove dfdl:numberBase.
14/10: Base 2, 8, 16 numbers are invariably integers without formatting, use of pattern etc is overkill

Closed actions:
060
Should dfdl become more type oriented and split dfdl:properties between element and simpleType/complexType
14/10: Closed. No.

Work items:
No
Item target version status
005
Improvements on property descriptions not started
011
How speculative parsing works (combining choice and variable-occurence - currently these are separate) (from action 045) awaiting completion of actions 045  
012
Reordering the properties discussion: move representation earlier, improve flow of topics not started
033
Numeric data - what physical reps are allowed for what logical types (from action 020) 037 ensure all behaviour documented
036
Update dfdl schema with change properties ongoing
038
Improve length section including bit handling some improvement in 036
042
Mapping of the DFDL infoset to XDM none not required for V1 specification
051
Revised scoping rules (from action 051) 037 awaiting completion of action 051
058
textPadCharacter %#rxx limitation and split to textxxxxPadCharacter 037
059
limit terminatorCanBeMissing to last element in schema. Ignore elsewhere. 037
060
New empty string semantic for dfdl:binaryBooleanTrueRep 037
061
Change maxOccurs violations from processing error to validation error (if not 'fixed') 037

ã Copyright IBM Corp. 1998, 2007 All Rights Reserved




Alan Powell

MP 211, IBM UK Labs, Hursley,  Winchester, SO21 2JN, England
Notes Id: Alan Powell/UK/IBM     email: alan_powell@uk.ibm.com  
Tel: +44 (0)1962 815073                  Fax: +44 (0)1962 816898






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU