molecule

<h:div class="summary">A container for atoms, bonds and submolecules.</h:div>
<h:div class="description">
  <h:p>
    <h:tt>molecule</h:tt>is a container for atoms, bonds and submolecules along with properties such as crystal and non-builtin properties. It should either contain
    <h:tt>molecule</h:tt>or *Array for atoms and bonds. A molecule can be empty (e.g. we just know its name, id, etc.)</h:p>
  <h:p>"Molecule" need not represent a chemically meaningful molecule. It can contain atoms with bonds (as in the solid-sate) and it could simply carry a name (e.g. "taxol") without formal representation of the structure. It can contain "sub molecules", which are often discrete subcomponents (e.g. guest-host).</h:p>
  <h:p>Molecule can contain a <list> element to contain data related to the molecule. Within this can be string/float/integer and other nested lists</h:p>
</h:div>
<h:div>
  <h:p>Normally molecule will not contain fragment or fragmentList</h:p>
</h:div>
<h:div class="example" href="molecule1.xml"/>
<h:div class="curation">Revised content model to allow any order of lengths, angles, torsions 2003-01-01..</h:div>
<h:div class="curation">Added role attribute 2003-03-19..</h:div>
<h:div class="curation">2006-05-21. PMR changed content model to (A|B|C...)*</h:div>
<h:div class="curation">2006-11-24. PMR removed @tail, @head, @countExpression, @repeat</h:div>

Element Information

Model

anyCml | ANY element from ANY namespace OTHER than 'http://www.xml-cml.org/schema' | ANY element from LOCAL namespace 'No Namespace'
Children: anyCml

Attributes

QName Type Fixed Default Use Inheritable Annotation
chirality chiralityType optional
<h:div class="summary">The chirality of a system or molecule.</h:div>
<h:div class="description">This is being actively investigated by a IUPAC committee (2002) so the convention is likely to change. No formal default.</h:div>
convention namespaceRefType optional
<h:div class="summary">A reference to a convention.</h:div>
<h:div class="description">There is no controlled vocabulary for conventions, but the author must ensure that the semantics are openly available and that there are mechanisms for implementation. The convention is inherited by all the subelements, so that a convention for
  <h:tt>molecule</h:tt>would by default extend to its
  <h:tt>bond</h:tt>and
  <h:tt>atom</h:tt>children. This can be overwritten if necessary by an explicit
  <h:tt>convention</h:tt>.
  <h:p>It may be useful to create conventions with namespaces (e.g.
    <h:tt>iupac:name</h:tt>). Use of
    <h:tt>convention</h:tt>will normally require non-STMML semantics, and should be used with caution. We would expect that conventions prefixed with "ISO" would be useful, such as ISO8601 for dateTimes.</h:p>
  <h:p>There is no default, but the conventions of STMML or the related language (e.g. CML) will be assumed.</h:p>
</h:div>
<h:div class="example" id="ex" href="convGroup1.xml"/>
count positiveNumberType optional
<h:div class="summary">The count of the object.</h:div>
<h:div class="description">No fixed semantics or default, normally integers. It is presumed that the element can be multiplied by the count value.</h:div>
dictRef namespaceRefType optional
<h:div class="summary">A reference to a dictionary entry.</h:div>
<h:div class="description">Elements in data instances such as _scalar_ may have a
  <h:tt>dictRef</h:tt>attribute to point to an entry in a dictionary. To avoid excessive use of (mutable) filenames and URIs we recommend a namespace prefix, mapped to a namespace URI in the normal manner. In this case, of course, the namespace URI must point to a real XML doc containing _entry_ elements and validated against STMML Schema.
  <h:p>Where there is concern about the dictionary becoming separated from the doc the dictionary entries can be physically included as part of the data instance and the normal XPointer addressing mechanism can be used.</h:p>
  <h:p>This attribute can also be used on _dictionary_ elements to define the namespace prefix</h:p>
</h:div>
<h:div class="example" href="dictRefGroup1.xml"/>
formalCharge formalChargeType optional
<h:div class="summary">The formalCharge on the object.</h:div>
<h:div class="description">NOT the calculated charge or oxidation state. No formal default, but assumed to be zero if omitted. It may become good practice to include it.</h:div>
formula formulaType optional
<h:div class="summary">Simple chemical formula.</h:div>
<h:div class="general">This attribute should only be used for simple formulae (i.e. without brackets or other nesting for which a _formula_ child element should be used. The attribute might be used as a check on the child elements or for ease of representation. Essentially the same as _concise_ attribute on _formula.</h:div>
id idType optional
<h:div class="summary">A unique ID for an element.</h:div>
<h:div class="description">Id is used for machine identification of elements and in general should not have application semantics. It is similar to the XML ID type as containing only alphanumerics, '_', ',' and '-' and and must start with an alphabetic character. Ids are case sensitive. Ids should be unique within local scope, thus all atoms within a molecule should have unique ids, but separated molecules within a doc (such as a published article) might have identical ids. Software should be able to search local scope (e.g. all atoms within a molecule). However this is under constant review.</h:div>
idgen xsd:string optional
<h:div class="summary">Allows a referring element to generate a unique id.</h:div>
<h:div class="description">idgen can hold a unique identifier which is copied into the id attribute of the referenced element. This avoids multiple copies of the referenced object with duplicate ids. EXPERIMENTAL</h:div>
<h:div class="curation">2006-05-22: PMR added.</h:div>
process xsd:string optional
<h:div class="summary">Keyword signifying how object is to be processed.</h:div>
<h:div class="description">Semantics depend on the parent element</h:div>
<h:div class="curation">2006-05-20: PMR added</h:div>
ref refType optional
<h:div class="summary">A reference to an element of given type.</h:div>
<h:div class="description">
  <h:tt>ref</h:tt>modifies an element into a reference to an existing element of that type within the doc. This is similar to a pointer and it can be thought of a strongly typed hyperlink. It may also be used for "subclassing" or "overriding" elements.
  <br xmlns=""/>When referring to an element most of the "data" such as attribute values and element content will be on the full instantiated element. Therefore ref (and possibly id) will normally be the only attributes on the pointing element. However there may be some attributes (title, count, etc.) which have useful semantics, but these are element-specific</h:div>
<h:div class="example" href="refGroup1.xml"/>
role xsd:string optional
<h:div class="summary">Role of the object.</h:div>
<h:div class="description">How the object functions or its position in the architecture. No controlled vocabulary.</h:div>
spinMultiplicity xsd:positiveInteger optional
<h:div class="summary">Spin multiplicity.</h:div>
<h:div class="description">Normally for a molecule. This attribute gives the spin multiplicity of the molecule and is independent of any atomic information. No default, and it may take any positive integer value (though values are normally between 1 and 5.</h:div>
symmetryOriented xsd:boolean optional
<h:div class="summary">Is the molecule oriented to the symmetry</h:div>
<h:div class="description">No formal default, but a molecule is assumed to be oriented according to any _symmetry_ children. This is required for crystallographic data, but some systems for isolated molecules allow specification of arbitrary Cartesian or internal coordinates, which must be fitted or refined to a prescribed symmetry. In this case the attribute value is false.</h:div>
title xsd:string optional
<h:div class="summary">A title on an element.</h:div>
<h:div class="description">No controlled value.</h:div>
<h:div class="example" href="title1.xml"/>
Wildcard: ANY attribute from ANY namespace OTHER than 'http://www.xml-cml.org/schema'

Source

<xsd:element name="molecule" id="el.molecule" substitutionGroup="anyCml">
  <xsd:annotation>
    <xsd:documentation>
      <h:div class="summary">A container for atoms, bonds and submolecules.</h:div>
      <h:div class="description">
        <h:p>
          <h:tt>molecule</h:tt>is a container for atoms, bonds and submolecules along with properties such as crystal and non-builtin properties. It should either contain
          <h:tt>molecule</h:tt>or *Array for atoms and bonds. A molecule can be empty (e.g. we just know its name, id, etc.)</h:p>
        <h:p>"Molecule" need not represent a chemically meaningful molecule. It can contain atoms with bonds (as in the solid-sate) and it could simply carry a name (e.g. "taxol") without formal representation of the structure. It can contain "sub molecules", which are often discrete subcomponents (e.g. guest-host).</h:p>
        <h:p>Molecule can contain a <list> element to contain data related to the molecule. Within this can be string/float/integer and other nested lists</h:p>
      </h:div>
      <h:div>
        <h:p>Normally molecule will not contain fragment or fragmentList</h:p>
      </h:div>
      <h:div class="example" href="molecule1.xml"/>
      <h:div class="curation">Revised content model to allow any order of lengths, angles, torsions 2003-01-01..</h:div>
      <h:div class="curation">Added role attribute 2003-03-19..</h:div>
      <h:div class="curation">2006-05-21. PMR changed content model to (A|B|C...)*</h:div>
      <h:div class="curation">2006-11-24. PMR removed @tail, @head, @countExpression, @repeat</h:div>
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="anyCml"/>
      <xsd:any namespace="##other" processContents="lax"/>
      <xsd:any namespace="##local" processContents="lax"/>
    </xsd:choice>
    <xsd:attributeGroup ref="dictRef"/>
    <xsd:attributeGroup ref="convention"/>
    <xsd:attributeGroup ref="title"/>
    <xsd:attributeGroup ref="id"/>
    <xsd:attributeGroup ref="ref"/>
    <xsd:attributeGroup ref="idgen"/>
    <xsd:attributeGroup ref="process"/>
    <xsd:attributeGroup ref="formula"/>
    <xsd:attributeGroup ref="count"/>
    <xsd:attributeGroup ref="chirality"/>
    <xsd:attributeGroup ref="formalCharge"/>
    <xsd:attributeGroup ref="spinMultiplicity"/>
    <xsd:attributeGroup ref="symmetryOriented"/>
    <xsd:attributeGroup ref="role">
      <xsd:annotation>
        <xsd:documentation>
          <h:div class="specific">
            <h:p>No formal semantics (yet). The role describes the purpose of the molecule element at this stage in the information. Examples can be "conformation", "dynamicsStep", "vibration", "valenceBondIsomer", etc. This attribute may be used by applications to determine how to present a set of molecule elements.</h:p>
          </h:div>
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attributeGroup>
    <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
</xsd:element>

Sample

< cml xmlns = "http://www.xml-cml.org/schema" xmlns:dc = "http://purl.org/dc/elements/1.1/" convention = "conventions:molecular" >

< dc:title>

test file for http://www.xml-cml.org/conventions/molecular convention

</ dc:title>

< dc:description>

valid molecular - atom has a child but it is not from the CML namespace

</ dc:description>

< dc:author>

J A Townsend

</ dc:author>

< dc:rights>

Copyright J A Townsend jat45@cantab.net 2009.

</ dc:rights>

< dc:date>

2009-01-21

</ dc:date>

< molecule id = "m1" >

< atomArray>

< atom id = "a1" elementType = "H" >

< dc:description>

a non CML element child of atom

</ dc:description>

</ atom>

</ atomArray>

</ molecule>

</ cml>