ISO-TC211 / StandardsTracker

This GitHub repository lets you - our users - log and track issues that you find with our standards and other document. Tag the issue with the standard or standards effected; we will assign it to the relevant group(s) within TC 211.
11 stars 0 forks source link

Confusion caused by difference in ordering of attributes in data dictionaries #336

Open isotc211 opened 3 years ago

isotc211 commented 3 years ago

Justification Significant confusion has been caused by differences between the ordering of attributes in data dictionaries within published standards and the XML schemas that proportion to manage the implementation of those standards. Extreme care must be taken to eliminate those differences when publishing the XML schemas.

Proposal Insist that the projects generating a standard add a tag “sequenceNumber” to each class and attribute in the UML conceptual model where the value of the tag represents the order that class or attribute appears in the data dictionary for that standard. Other rules on setting the value can assist when amendments to the standard are made.

isotc211 commented 3 years ago

A possible solution in setting the value of a "sequenceNumber" is: a) start with the part number b) add the data dictionary number (###) as most standards do not have more than 999 classes + attributes c) add a trailing # to allow for amendments

Hence in ISO 19115-1 CI_Party: contactInfo sequenceNumber:13820 partyIdentifier sequenceNumber:13825 (from Amd1) the 5 at the end allows for future additional attributes between contactInfo and partyIdentifier MD_ReferenceSystem: referenceSystemIdentifier sequenceNumber:11800 (from Amd0) CRS sequenceNumber:11803 (from Amd2) coordinateEpoch sequenceNumber:11806 (from Amd2) referenceSystemType sequenceNumber:11810 (from Amd0)

isotc211 commented 3 years ago

A possible solution in setting the value of a "sequenceNumber" is: a) start with the part number b) add the data dictionary number (###) as most standards do not have more than 999 classes + attributes c) add a trailing # to allow for amendments

Hence in ISO 19115-1 CI_Party: contactInfo sequenceNumber:13820 partyIdentifier sequenceNumber:13825 (from Amd1) the 5 at the end allows for future additional attributes between contactInfo and partyIdentifier MD_ReferenceSystem: referenceSystemIdentifier sequenceNumber:11800 (from Amd0) CRS sequenceNumber:11803 (from Amd2) coordinateEpoch sequenceNumber:11806 (from Amd2) referenceSystemType sequenceNumber:11810 (from Amd0)

isotc211 commented 3 years ago

A possible solution in setting the value of a "sequenceNumber" is: a) start with the part number b) add the data dictionary number (###) as most standards do not have more than 999 classes + attributes c) add a trailing # to allow for amendments

Hence in ISO 19115-1 CI_Party: contactInfo sequenceNumber:13820 partyIdentifier sequenceNumber:13825 (from Amd1) the 5 at the end allows for future additional attributes between contactInfo and partyIdentifier MD_ReferenceSystem: referenceSystemIdentifier sequenceNumber:11800 (from Amd0) CRS sequenceNumber:11803 (from Amd2) coordinateEpoch sequenceNumber:11806 (from Amd2) referenceSystemType sequenceNumber:11810 (from Amd0)

PeterParslow commented 3 years ago

Appears to arise from failure to use ISO 19139-1 requirement (rule) /req/default/XCT-properties-sequence (although some may predate converting that statement from descriptive to a requirement)

Could HMMG and XMG consider whether this proposal is a good solution? If so, then presumably it has to be added to ISO 19109 and then monitored by HMMG, and ISO 19139-1 would need to be amended/revised.

tobiasspears commented 3 years ago

I agree with the proposal to use sequenceNumber tag values. Although Enterprise Architect (as one example) allows the user to switch between default (alphabetical) and custom, it is very easy to accidentally switch back to default ordering, losing all custom sorting implemented in the element's attributes. With this, the numbering strategy should be added to both the HMMG wiki.

The main goal is to ensure sequence numbers are unique and reflect the intended order between the UML, XML schemas, and data dictionary. The secondary goal is to use a numbering system that allows additional attributes to be inserted between existing ones (e.g. during revisions) without having to re-sequence all of the attributes that follow the new one.

jetgeo commented 3 years ago

From the discussion here, and in the XMG Meeting today, we should consider including the sequenceNumber tag from ISO 19136-1 in the core UML Profile in ISO 19103.

heidivanparys commented 1 year ago

The sequenceNumber tag is useful for application schemas, as those are implemented in implementation schemas. So this is out of scope for 19103 and should be considered in 19109 instead. Please update the label.