[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Reply to: [list | sender only]
No Subject
- From: James Hester <jrh@xxxxxxxxxxxx>
- Date: Thu, 28 Sep 2006 11:47:30 +0900
The current merging protocol for dictionaries (see Vol G p88) suggests matching definition blocks using the _item.name attribute for DDL2 dictionaries. This is potentially problematic when the definition block being extended relates to identifiers (e.g _diffrn.id), which are all defined in the "parent" identifier block, and thus one definition block contains many _item.name attributes. Note also that, from the machine-readable attributes perspective, this is simply a single block defining multiple data names, and the "parent" identifier is in no way privileged (but see below). The protocol for multiple names in the DDL1 case simply suggests splitting the multiple definition block into single definition blocks. This is not viable in the DDL2 case if we want to maintain the style of having all child identifiers defined in the same place as the parent identifier in both base and overlaid dictionaries. A possible clarification is to say that, if any _item.name attributes match in the overlay dictionary with an _item.name attribute in a given block in the base dictionary, that is sufficient to overlay those two blocks. Thus the overlay dictionary will contain a definition block containing the same topmost parent identifier as one of the _item.name attributes, with all other _item.names in the definition block unique (and in this way a new set of child identifiers is grafted onto the tree). This has one problem that I can see, arising because identifier data names are unusual in that they appear in two definition blocks in each dictionary. Therefore, it would not be possible to overlay a non-parent identifier definition block, as it would match two definition blocks in the base dictionary. While this restriction might seem insignificant (because the essential content resides in the parent identifier definition block anyway), it does mean that even copying one of the child definition blocks into the overlaid dictionary will cause a failure in merging when a stub definition replaces/overlays the parent identifier definition. A refinement to the above protocol that should work is to examine any list of parent-child links in a definition block and state that the _item.name for overlay matching is that one which has no parent (i.e. it is the topmost parent data identifier). With this refinement to the protocol, it becomes possible for overlay dictionaries to not only replace single item definitions, but also trees of parent-child identifiers. I'll mention also in passing that category definitions are not dealt with by the protocol either (they don't contain an _item.name attribute) but it is trivial to add the category name attribute as an alternative block matching attribute. -- _______________________________________________________________________ James Hester, ANBF KEK e-mail: jrh@anbf2.kek.jp Oho 1-1 Phone: +81 298 64 7959 Tsukuba, Ibaraki 305 Fax: +81 298 64 7967 Japan ________________________________________________________________________
Reply to: [list | sender only]
- Prev by Date: Data transfer microsymposium at IUCr Madrid
- Next by Date: CIFAPI forum now open
- Prev by thread: No Subject
- Next by thread: Resources for CIF developers
- Index(es):