[DFDL-WG] Minutes for OGF DFDL Working Group Call, January-20-2010

Alan Powell alan_powell at uk.ibm.com
Thu Jan 21 09:38:01 CST 2010


Open Grid Forum: Data Format Description Language Working Group

OGF DFDL Working Group Call, January-20-2010

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

Apologies
Stephanie Fetzer (IBM)
Tim Kimber(IBM)

1.   045  - Disciminators
 Mike has started to write proposal.

2  Unparsing lengthKind = 'pattern' 
The Specification currently says that on unparsing 
dfdl:lengthKind='pattern' behaves like dfdl:lenghtKind='implict' but since 
we limited 'implict' to certain logical/representation  combinations this 
is no longer correct. 

Proposals 
1. When unparsing complex elements with dfdl:lengthKind='pattern', the 
length is the length of the children (same as 'implicit') 
  
When unparsing simple elements with dfdl:lengthKind='pattern'  the length 
is the implicit length for those that have one and  length of the data 
supplied in the infoset converted to the representation with no 
padding/filling for the rest.   

For string/text and hexbinary/binary that is reasonable 
For number/text/standard and zoned it is governed by the numberPattern 
For number/binary/ binary  use 'implicit' lengths 
For number/binary/packed or bcd  use minimum number of bytes 
For Calendar/text  it is governed by the calendarpattern 
For Calendar/binary/packed or bcd use minimum number of bytes 
For Calendar/binary/binarymilliseconds or binaryseconds use implicit 
lengths 
For Boolean/text  use the length of the true/false rep. 
For Boolean/binary use implicit length (32) 


2. A new property dfdl:patternOutputLengthKind 

3. We could limit dfdl:lenghtKind 'pattern' to complex elements so that 
there is always a lengthKind for child simple elements but this would 
introduce 'unnecessary' complex items in  the infoset when there is only 
one child.


The WG decided that option 1 was preferable but it needs to be written in 
terms of  a set of  'base' unparsing rules which are augmented depending 
on the dfdl:lengthKind.

There was some discussion about whether the pattern should be reapplied to 
the data stream produced to ensure that it could be parsed by the same 
schema. Perhaps this should be part of validation. There was no agreement.

MB suggested that dfdl:lengthKind 'pattern' should only be allowed for 
elements with representation 'text' and complex elements with children all 
'text'.  Steve H felt that it was needed for complex elements containing 
binary data.

Alan will write up 'base' unparsing length rules.

3. TLOG 
Steve H took us through his further investigation of TLog format 

Finally had some time to look at the TLOG stuff again (the format emitted 
by IBM 4680 & 4690 POS controllers). This time I've looked at the MRM 
code, & spoken with domain expert David Bennett, to establish the full 
behaviour. Unfortunately there are some issues which mean DFDL 1.0 is not 
capable of handling it.

1. The individual fields are a mixture of ASCII strings, proprietary 
packed strings (rare), proprietary packed decimals, binary integers 
(rare). All fields are delimited by a separator. 

2. The fields are all defined with a length in bytes, but most of the 
string and decimal fields are actually variable length. If the data 
exceeds the length in bytes when parsing or unparsing the MRM throws an 
error. However, talking to David B, the length is really intended to be 
used if there was ever a fixed length equivalent format, so is really for 
validation only. To parse the current TLOG formats it is sufficient to use 
the delimiter. 
Note to WG: Validation using the specified length only works for strings. 
Should we allow dfdl:length to be specified when dfdl:lengthKind=delimited 
or pattern, and use it as an extra constraint when parsing/unparsing?

3. Scanning for the separator, or maybe use of a data pattern, is needed 
to extract the variable length data, including packed decimal data (which 
we would consider a binary type). 
Note to WG: Should we allow binary scanning when the users says it is safe 
to do so?

4. Packed strings. This is a packed data type used when the range of 
possible chars in the string is limited to 0-9, A-F. You can view this as 
a BCD that can also carry A-F. MRM does not try to turn this into an 
integer, instead it treats it as character data. That is x12x34 would 
result in string '1234'. Odd numbers of digits are padded with a x0 
nibble. On unparsing the MRM throws an error if a character other than 
0-9, A-F is encountered.  In practice, these packed strings are rare and 
invariably only carry 0-9 anyway. I'm still trying to establish why this 
data type is needed, as it could be treated as a logical integer and 
modelled as BCD.

5. Packed decimals. Like a packed decimal in the IBM sense. These can 
carry negative numbers but use a leading xD sign nibble. No sign nibble if 
positive. Odd number of digits (including sign if present) are padded with 
xF nibble. This is best illustrated using examples. 
1234     =>     x12x34
123      =>     xF1x23
-1234    =>     xFDx12x34
-123     =>     xD1x23
Note to WG: Should we support this data type natively?

6. Some of the packed decimals are interpreted as an array of bit flags. I 
assume that DFDL would model these using dfdl:hidden.


Steve H is going to make a proposal about how DFDL can parse TLog


4, Empty Sequences 
Is the current section correct 

1.1        Empty Sequences 
A sequence having no children is syntactically legal in DFDL; however, a 
sequence having no children must have content length zero. It can still 
have non-zero length Prefix and Suffix regions, but the SequenceContent 
region in between must be of length zero. It is a schema definition error 
if the SequenceContent region of an empty sequence is not length zero. 
Steve H will re-word.

5. Mike/Steve review issues 
Mike B had to leave but a number a issues were discussed

- Case of enumerations. We should follow the XSDL convention which is that 
enumerations are case sensitive

- dfdl:lengthKind='Pattern: dfdl entities will be allowed in the 
lengthPattern regular expression except for generic entities such as WSP 
and NL

- dfdl:lengthKind='Pattern scannability:  A complex element with 
lengthKind=Pattern will use its dfdl:encoding property as the encoding 
when scanning its children irrespective of the child's encoding property.
Mike to comment on remaining review issues.

6. Go through remaining actions 
Updated below
Action 071 Semantics of length=0, nil handling and defaults.
1) Steve H to propose new  name for dfdl:defaultValueInitiatorPolicy 

Looking more at this, we should be consistent with the similar property 
for missing separators.  So I've changed the enums too - now 'require' and 
'suppress', Also changed unparsing behaviour - we must honour the property 
- the existing behaviour of always writing the initiator means we can not 
successfully re-parse if writing empty content and enum is 'suppress'. 
When reading, assume that section 15.13 has been updated to include 
complex as well as simple elements.

missingValueInitiatorPolicy
Enum
Valid values ?require', ?suppress'
Specifies whether to expect an initiator when an element is missing. 
Ignored unless dfdl:initiator is specified and is not "" (empty string).
'require'  - Indicates that the dfdl:initiator followed by empty content 
is the required syntax to indicate that the element is missing. 
'suppress' - Indicates that empty content is the required syntax to 
indicate that the element is missing. The presence of an initiator implies 
that real content must follow. 
Use of ?suppress? implies an ordered sequence. If used on an initiated 
element of an unordered group it is a schema definition error. 
If the element is required, defaulting occurs as defined above.
This property also applies on unparsing, when the data to be written 
(after nil value and default value processing) is empty content. 
Annotation: dfdl:element

We should similarly change the enums for nilValueInitiatorPolicy to 
'require' and 'suppress'.


2) Not recorded in minutes, but there was a discussion around my bullet on 
choices.

Worth noting that the concept of 'required' for the elements of a choice 
does not apply. Even if minOccurs > 0. 

The issue was on unparsing. Which branch of a choice do we output when a 
complex element is required but missing from the infoset? I think it 
should be the first branch of the choice that does not result in a 
processing error. 

NOTE: Work Item 071 changes dfdl:separatorPolicy enumeration from require 
to always. Need to make sure that is consistent with this proposal.
7 Review Schedule
OGF prereview is confirmed to take about 4 weeks assuming no document 
updates are required. We are behind schedule to be available for public 
review by March. Draft 038 will be available at the end of this week.

Activity

Schedule
Who
Complete Action items 

             - 18 Dec 2009 
 WG 
Complete Spec 
Write up work items 
            ? 23 Dec 2009 
AP 
Restructure and complete specification 
              - 23 Dec 2009 
AP 
Issue Draft 038 
23 Dec 2009

WG review 
WG review 
7 Dec ? 08 Jan 2010 
WG 
Incorporate review comments 
4 Jan - 29 Jan 2010 
AP + 
Issue Draft 039 
15 Jan 2010

Incorporate review comments 
4 Jan - 29 Jan 2010 
AP + 
Issue Draft 040 
29 Jan 2010

Initial OGF Editor Review 
Initial Editor review 
1 Feb - 1 Mar 2010 
OGF 
Initial GFSG review 
1 Feb - 1 Mar 2010

Issue Draft 041 
1 Mar 2010

OGF Public Comment period (60 days) 

1 Mar - 30 Apr 2010 
OGF 
OGF 28 Munich 

15-19 March 2010 

Incorporate comments 
Incorporate comments 
28 May 2010

Issue Draft 042 
28 May 2010

Final OGF Editor Review 
Final  Editor review 
June  2010 
OGF 
final GFSG review 
June  2010

Issue Final specification 
30 June 2010

Publish proposed recommendation 

1 July 2010





Grid recommendation process 

1 Jan - 1 April 2011




Meeting closed, 14:30

Next call  Tuesday 26 January 2010  13:00 UK and Wednesday 27th January 
2010 13:00 UK.

Next action: 076
Actions raised at this meeting

No
Action 
074
SH: Proposal for parsing TLog
075
SH: rewrite empty sequences section




Current Actions:
No
Action 


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 
...
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
21/10: Updated proposal reviewed
28/10: Updated proposal reviewed see minutes
04/11: Discussed semantics of disciminators on arrays. MB to produce 
examples
11/11: Absorbing action 033 into 045.  Maybe decorated discrminator kinds 
are needed after all. MB and SF to continue with examples. 
18/11: Went through WTX implementation of example. SF to gather more 
documentation about WTX discriminator rules.
25/11: Further discussion. Will get more WTX documentation. Need to 
confirm that no changes need to Resolving Uncertainty doc.
04/11: Further discussion about arrays.
09/12: Reviewed proposed discriminator semantic.
16/12: Reviewed discriminator examples and WTX semantic.
23/12: SF to provide better description of WTX behaviour and invite B 
Connolley to next call
06/01:B Connolly not available. SF to provide more complete description.
13/01: Stephaine took us through a description of WTX identifiers. Mike 
agreed to write up in DFDL terms.
20/01: Mike will write up
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.
...
14/10: no progress
21/10: Discussed the real need for this being in the specification. It 
seemed that the main value is it define a schema location for downloading 
'known' defaults from the web. 
28/10: no progress
04/11: no progress
11/11: no update
18/11: no update
25/11: Agreed to try to produce for CSV and fixed formats
04/12: no update
09/12: no update
16/12: no update
23/12: no update
06/01: no progress. If there is no resource to complete this action it can 
be deferred
13/01:no progess
20/01: no progess
064
MB/SH Request WG presentation at OGF 28
25/11: Session requested
04/12: no update
09/12: no update
16/12: SH has changed request to a general session rather tha WG in the 
hope of attracting more people.
23/12: no update
06/01: not heard anything yet
13/01: no update
20/01: no update
066
Investigate format for defining test cases
25/11:IBM to see if it is possible to publish its test case format.
04/12: no update
09/12: no update
16/12: reminded dent to project manager
23/12: SH will send another reminder.
06/01: Another reminder will be sent
13/01: no update
20/01: no update
071
Semantics of length=0, nil handling and defaults.
23/12:SH no update
06/01: SH has started
13/01: SH proposal review. Minor updates to be made
20/01: Reviewed updated proposal. Need to agree on unparsing empty 
choices.
074
SH: Proposal for parsing TLog
075
SH: rewrite empty sequences section

Closed actions
No
Action 
056
MB Resolve lengthUnits=bits including fillbytes
12/08: No Progress
...
28/10: no progress
04/11: MB to look at lengthUnits = bits
11/11: no update
18/11: no update
25/11: no update
04/12: no update. ALan will set up a separate call to progress this 
action.
09/12: no update. ALan will set up a separate call to progress this 
action.
16/12: MB, SH and AP had  a separate call. MB to distribute proposal
23/12: Discussed proposal. MB will updated
06/01: V4 discussed and approved
13/01: Mike updated proposal. Closed
073
SH: Control of overpunching zoned positive sign
13/01: no update
20/01: Proposal agreed. Closed



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 
036
Update dfdl schema with change properties 
ongoing

038
Improve length section including bit handling
038
some improvement in 036
042
Mapping of the DFDL infoset to XDM 
none
not required for V1 specification
069
ICU fractional seconds
038

070
Write DFDL primer 


071
Write test cases.


072
it is a processing error if the number of occurrences in the data does not 
match the value of the expression or prefix
038

073
Rename dfdl:separatorPolicy="required" to "always". 
038

074
- Last 'postFix' separator is not optional
- Terminators are mandatory.
- dfdl:documentFinalTerminatorCanBeMissing
- dfdl:documentFinalSeparatorCanBeMissing  (Action (70))
038

075
Remove occursCountKind="useAvailableSpace".
038

076
 dfdl:documentRoot,  will be defined that can only be on global elements.
The DFDL spec does not have to define the format of parameters to the DFDL 
processor but will indicate that it must be possible to adresss any 
element.
Agreed that ANY element within the schema cane be the starting point for 
parsing or unparsing.
dfdl:documentRoot no longer required
038

077
 'delimited' means the item is delimited by the item?s terminator (if 
specified) or an enclosing construct?s separator or end of the enclosing 
construct designated by its known length or its terminator.  
The definition of EndOfParent also needs improving.
038

078
document UPA checks
038

079
Restrictions on use of 'special' entities in regular expressions
038

080
LengthUnit=bits  (A056)
038

081
Case of enumerations. We should follow the XSDL convention which is that 
enumerations are case sensitive
038

082
 dfdl:lengthKind='Pattern: dfdl entities will be allowed in the 
lengthPattern regular expression except for generic entities such as WSP 
and NL
038

083
 dfdl:lengthKind='Pattern scannability:  A complex element with 
lengthKind=Pattern will use its dfdl:encoding property as the encoding 
when scanning its children irrespective of the child's encoding property.
038

084
 Control of overpunching zoned positive sign
038





Alan Powell

 MP 211, IBM UK Labs, Hursley,  Winchester, SO21 2JN, England
 Notes Id: Alan Powell/UK/IBM     email: alan_powell at 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





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20100121/6299595f/attachment-0001.html 


More information about the dfdl-wg mailing list