Discussion List Archives

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

No Subject

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]
International Union of Crystallography

Scientific Union Member of the International Science Council (admitted 1947). Member of CODATA, the ISC Committee on Data. Partner with UNESCO, the United Nations Educational, Scientific and Cultural Organization in the International Year of Crystallography 2014.

International Science Council Scientific Freedom Policy

The IUCr observes the basic policy of non-discrimination and affirms the right and freedom of scientists to associate in international scientific activity without regard to such factors as ethnic origin, religion, citizenship, language, political stance, gender, sex or age, in accordance with the Statutes of the International Council for Science.