Chemical Markup Language

Chemical Markup Language (ChemML or CML) is an approach to managing molecular information using tools such as XML and Java. It was the first domain specific implementation based strictly on XML, first based on a DTD and later on an XML Schema, the most robust and widely used system for precise information management in many areas. It has been developed over more than a decade by Murray-Rust, Rzepa and others and has been tested in many areas and on a variety of machines.

Chemical information is traditionally stored in many different file types which inhibit reuse of the documents. CML uses XML's portability to help CML developers and chemists design interoperable documents. There are a number of tools that can generate, process and view CML documents. Publishers can distribute chemistry within XML documents by using CML, e.g. in RSS documents.

CML is capable of supporting a wide range of chemical concepts including:
 * molecules
 * reactions
 * spectra and analytical data
 * computational chemistry
 * chemical crystallography and materials

Details of CML and points currently under discussion are now posted on the CML Blog.

Versioning
Versions of the schema are available at SourceForge. As of April 2012, the latest frozen schema is CML v2.4. Some constructs in CML v1 are now deprecated.

Tools
JUMBO began life as the Java Universal Molecular Browser for Objects but is now a Java library that supports validation, reading and writing of CML as well as conversion of several legacy formats to CML and, for example, a reaction in CML to an animated SVG representation of the reaction. JUMBO has evolved into an extensive Java library, CMLDOM, supporting all elements in the schema. Although JUMBO used to be a browser, the preferred approach is to use the Open Source tools Jmol and JChemPaint, some of which use alternative CML libraries. See Blue Obelisk.

Software support
Software importing and exporting a valid CML format
 * Bioclipse
 * CDK
 * JOELib
 * OpenBabel
 * Avogadro
 * XDrawChem
 * OpenChrom