Discussion List Archives

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

Re: Comments on Pflugrath's comments

Peter Keller's comments elicit a further explanation.

To make life more interesting for those out there who are struggling with
cif conventions, I should point out that there are two Dictionary
Definition Languages (DDL) in use, labelled, conservatively, DDL1 and
DDL2.  The DDL's are the rules that govern the way in which the cif
dictionaries are written, since the dictionaries are themselves written as
STAR files.  I apologise for the recursiveness of these ideas.  Put
simply, STAR defines with very few rules a file structure in which
datavalues are followed by datanames, loops can be used and character
strings delimited.  To use a STAR file, one needs to have datanames and
definitions of what the corresponding datavalues mean.  Thus one needs a
dictionary.  But the dictionary, i.e. a cif dictionary, can also be stored
as a STAR file, providing that there is also a dictionary defining the
datanames used in the dictionary.  This is the DDL.  The DDL also
needs a dictionary to define the datanames it uses, but since the
datanames used by all dictionaries are essentially the same (_name,
_defintion, etc.) it uses itself to define its own structure.  Thus the
DDL is a special dictionary in that it is constructed using the datanames
that it also defines.  The DDL defines datanames such as _name, 
_definition, _example etc., i.e. the data items that one expects to find 
in a dictionary. 

	The kinds of data items that are defined in the DDL also define
the way in which relations between data items in the cif dictionary are
expressed.  For example data items may only occur in the same loop if they
belong to the same category, so one of the DDL datanames is _category,
allowing us to define which category a particular data item (e.g.
_atom_site_postion) belongs to (e.g. _category atom_site).  These features
were added to DDL1 to structure the information in the cif in a manner
similar to that used in a relational database.  Thus the items listed in
one loop (category), e.g., bond lengths, need flags that point to other
loops, e.g., atomic positions and symmetry operators, so that the
properties of the atoms and symmetry operators that were used in
calculating the bond can be located within their own loops.  All this is
available in DDL1, but only the person actually writing the dictionary
needs to be aware of it. It is not needed by the people from the
discipline who are commenting on the concepts that are being given
datanames. 

	The people writing the mmCIF dictionary decided that they needed
far more of this kind of structure than was available in DDL1, so they
have created a DDL2 which allows pointers back to cif dictionaries that
are defined using DDL1 (which at the moment is all except mmCIF).  This
allows backward compatibility, but not forward.  At the same time, they
decided to take the opportunity to introduce a few other changes such as
removing the restriction on the length of the datanames.  This means that
if you choose to use DDL2, the restriction is not there, but adopting DDL2
would be a fairly radical solution to what is probably not a problem, like
cutting off your foot because it is dirty.  We considered adopting DDL2
for all cif dictionaries but rejected it for the time being, because DDL2
is far more structured than is necessary for most applications and would
result in additional restrictions.  It does, however, mean that a program
written to work with a cif dictionary written in DDL1 will not work with a
cif dictionary written in DDL2, so that different software is needed. 

	I am sorry if this has been a rather longwinded and unnecessary 
explanation of why mmCIF has datanames longer than 32 characters.  If I 
had made the explanation any shorter, someone would undoubtedly have asked 
why we have two DDL's.  

			David

*****************************************************
Dr.I.D.Brown
Brockhouse Institute for Materials Research, 
McMaster University, Hamilton, Ontario, Canada
1-(905)-525-9140 ext 24710
*****************************************************


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.