Different domains of chemistry think about chemistry differently; often this means a very tight specification
of rules in your area of expertise and very little if any applied to the rest. The loosening of the
CML content model in Schema 3 allows users to combine the elements and attributes as they need to represent
data. However, users still need to be able to specify a set of rules (constraints) which model their particular
domain. This can be likened to thinking of the elements and attributes of CML as representing the allowed
vocabulary and the set of rules as a grammar specifying how these words are allowed to be put together.
The entire set of constraints which the CML should conform to is called a
There list of currently supported conventions is given below:
- Molecular Convention
- CompChem Convention
- Dictionary Convention
- Unit Dictionary Convention
- Unit-Type Dictionary Convention
There is also a toy convention
simpleUnit which is used as a very simple example in the CMLLite paper (submitted).
The namespace of the convention is
dictionary convention is currently in the most finished state and acts as a template for how conventions will be described in future.
Constraints are defined by using XSL Transformations (XSLT). These allow users to put more specific constraints and co-constraints on the allowed structure of the CML documents than using only schemas. We an output based on the ISO Schematron standard XML report language SVRL (Schematron Validation Report Language) to indicate errors and warnings in the document. A major advantage of this approach is that all the errors and warnings are reported rather than the validation process stopping as soon as the first error has been found.
Examples of constraints implemented in the
molecular convention are:
atomArraymust have at least one
- the value of an
idmust be unique within the eldest containing molecule
bondelement must have an
bondmust be between
atoms within the same molecule
To validate that a document conforms to a particular convention visit http://validator.xml-cml.org.