<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="document.xsl" ?>

<karne:document title="Universal approach to Web-based Chemistry using XML and CML" id="chemcom2"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:karne="x-schema:karne_schema_01.xml"
	xmlns:chimeral="x-schema:spectrum_schema_ie_01.xml">

<!-- *********************** metadata *********************** -->
<karne:metadata>
<karne:date builtin="date:creation">April 26, 2000</karne:date>
<karne:author idref="insti_1" id="pmr" email="Peter.Murray-rust@nottingham.ac.uk">Peter Murray-Rust</karne:author>
<karne:author idref="insti_2" id="hr" email="henry.rzepa@ic.ac.uk">Henry S. Rzepa</karne:author>
<karne:author idref="insti_2" id="mw" email="karne@innocent.com" href="http://www.ch.ic.ac.uk/chimeral">Michael Wright</karne:author>
<karne:author idref="insti_2" id="sz" email="steve@serf.org">Stephen Zara</karne:author>
<karne:institution id="insti_1">School of Pharmaceutical Sciences, University of Nottingham, UK</karne:institution>
<karne:institution id="insti_2" href="http://www.ch.ic.ac.uk">Department of Chemistry, Imperial College of Science, Technology and Medicine, UK</karne:institution>
</karne:metadata>

<!-- *********************** abstract *********************** -->
<karne:abstract>We report the first fully operational system for managing complex chemical content entirely in interoperating XML-based markup languages.</karne:abstract>

<!-- *********************** keywords *********************** -->
<karne:keywords>ChiMeraL, XML, CML, chemical markup language, chemistry, applet</karne:keywords>

<!-- *********************** chapter *********************** -->
<karne:chapter>
<p>The World-Wide-Web (WWW) was originally developed as a collaborative tool for

    scientists. In 1994 we proposed its use as a novel and widely applicable

    global model for expressing chemical information in an interlinked and

    re-usable form.<karne:link builtin="ref" idref="ref_1 ref_2 ref_3 ref_4"/> This model, based on HTML, has become widely

    used but suffers from a number of structural problems. Chemistry represents

    its message both <em> semantically</em> (<em>e.g.</em>  as a machine-processable

    connection table) and graphically (<em>e.g.</em>  <em>presentation</em> through

    human-readable arrows, boxes, diagrams). The existing use of HTML in

    chemistry emphasizes presentation, and provides no structured extension

    mechanisms. A presentational approach is too flexible to be reliably

    interpreted by machines, and cannot <em>validate</em> the integrity of the

    chemical <em>content</em>. Thus the chemical subscript and superscript

    conventions in <em> e.g. </em>  CH<sub>4</sub><sup><b>+.</b></sup> are only

    unambiguously interpretable by humans. This severely limits the

    re-usability of the rapidly growing amount of high-quality chemistry

    available on Web pages.</p>



    <p>We therefore developed<karne:link builtin="ref" idref="ref_5 ref_6"/> our model to support both types of

    markup. Chemical Markup Language (CML) can carry molecules, crystallography

    and reactions in a formal manner. It forms the core of a comprehensive

    approach to publishing and communicating chemical information for both

    humans and machines. It uses the protocols of the WWW Consortium

    (W3C),<karne:link builtin="ref" idref="ref_7"/> whose goal is to support such <em>interoperability</em>

    with the strategic aim of achieving a "semantic web" where automatic

    processing of information is possible. The core W3C approach is the <em>

    meta-language</em> XML (eXtensible Markup Language) which was formalised in

    1998 and which encourages the creation of discipline-specific languages

    such as CML. The W3C have created a family of protocols supporting most

    aspects of managing Web-based information; the following are most relevant

    here: <em>XML Schemas</em> are a formal description of the language and

    can support arbitrary datatypes and or validate complex documents. <em>

    Scalable Vector Graphics (SVG)</em> provides a framework where presentation

    and content can be robustly combined. <em>XSLT (XSL stylesheets)</em> is a

    very powerful tool for transforming documents. <em>XML Query Language</em>

    and <I>XLinking</I> are under development. <em>XSL(FO)</em> provides high quality

    formatted output for any XML application.<karne:link builtin="ref" idref="ref_7"/></p>



    <p> Much time is currently wasted on processing <em>legacy</em>

    unstructured and often binary documents and poor semantics leads to serious

    information loss. The "plug-compatible" XML approach guarantees a document

    to be searchable, stylable, sortable, transformable, mergeable,

    transmittable and printable without extra cost. CML uses these developments

    and for the first time offers a universal platform- and

    application-independent infrastructure for chemical information. Ideally we

    see all future document and publishing systems being converted to XML and

    describe here an implementation of these concepts termed ChiMeraL.</p>



    <p>Technical documents are often multidisciplinary and component-based and

    draw their components from several XML Schemas. Subdisciplines, <em> e.g. </em>  MathML

    (for mathematics), CML, SVG, are identified within documents by discrete

    <em>namespaces</em>. To avoid <em>collision</em> their <em>tag names</em>

    are mapped onto globally unique URIs (Uniform Resource Identifier); <code>

    http://www.xml-cml.org/</code> serves to uniquify any CML element.

    Components will often be glued together with XHTML (the XML version of

    HTML).<karne:link builtin="ref" idref="ref_8"/> <em> Transformation/reformatting</em> through XSL

    stylesheets is a particularly important operation because it allows

    extraction of document sub components such as molecules for <em> e.g. </em>  redrawing

    in SVG (<em> vide infra</em>) or outputting in any desired format.</p>



    <p> Besides transformation, various operations can be automatically

    performed, often without knowing the precise document structure. These

    include searching, whereby XML elements ("components") can be located by

    local or global context in a document or through content, re-use by

    fragmenting or combining XML documents, rendering/viewing in a browser

    window, high-quality printing, and data authentication

    services.<karne:link builtin="ref" idref="ref_9"/></p>



    <p> "Chemical" information usually requires several other types of markup

    (text, numbers, tables, graphics, etc.). Such CML document components can

    come from many sources, either directly or after conversion from legacy

    formats. The sources include; instruments, databases, dictionaries and

    catalogues; hand-editing/authoring of chemical information; primary and

    secondary publications, and computational chemistry tools. To illustrate

    how the operation of transmitting, querying and processing compound

    chemical data within a Web browser can be combined, we have created a

    Web-based collection of XML tools termed ChiMeraL.<karne:link builtin="ref" idref="ref_10"/> Its use

    involves five distinct stages (<karne:link builtin="figure" idref="fig_flow"/>).</p>



    <p>(1) Conventional HTML is used in conjunction with JavaScript in a

    browser to allow the user to select from an XML library containing CML

    components (<karne:link builtin="figure" idref="fig_chimeral"/>). The library could be a server-based collection or

    could be generated by selective querying of a larger XML document held on

    an XML repository.</p>



    <p> (2) The XML document is validated for integrity against a Schema. This

    is a major improvement over HTML, which has no validation for chemical or

    most other content. Validation can be server or browser-based.</p>



    <p>(3) Selection of a suitable stylesheet for popular chemical editing and

    display programs, <i>e.g.</i> for 2D and 3D molecular co-ordinates and

    numerical information such as spectral/analytical data. The stylesheet is

    used to convert CML elements to legacy formats (<em>e.g.</em>  MDL Molfile, Minnesota

    XYZ format, JCAMP DX format) for display using existing applets (<em>e.g.</em>  JME,

    JMol, JSpec, Marvin, SDA), or it could be directed towards CML-compliant

    applets without the need for such legacy transformation. The XSL transform

    can again be server or browser based. The use of a stylesheet also provides

    the possibility of deriving new quantities from the original data such as

    <em> e.g. </em>  aligning a range of pharmacophores or computing diverse molecular

    properties. The ChiMeraL demonstration (<karne:link builtin="figure" idref="fig_chimeral"/>) includes a

    range of XSL stylesheet fragments, XML example documents and a CML schema,

    together with utility programs which can generate CML

    documents<karne:link builtin="ref" idref="ref_6"/></p>



    <p>(4) The output from the stylesheet is displayed as a web page. The

    original CML components (<em>e.g. </em>  <code>

    &lt;molecule&gt;&lt;/molecule&gt;</code>) are wrapped with suitable XHTML

    to allow appropriate display (<karne:link builtin="figure" idref="fig_chimeral"/>).</p>



    <p> (5) At this stage, the user could edit or add to the document by

    selecting an appropriate stylesheet to invoke appropriate software tools,

    and with appropriate validation, create a new annotated XML document which

    could be returned to the original document repository. Multiple authorship

    of a document is possible since subsequent stylesheet transforms could <i>

    e.g.</i> extract either the original document, or any individual's

    additions to it.</p>



    <p>Chimeral is offered as OpenSource, <i>i.e.</i> available as source code

    which can be used for any purpose, but especially for the development of

    new ideas, tools and resources in this area. XML has benefitted greatly

    from this movement and Chimeral uses several OpenSource components (XML

    tools, JMol, JSpect).<karne:link builtin="ref" idref="ref_11"/> OpenSource is an effective means of

    developing high-quality robust applications very rapidly and we encourage

    developers to increase the volume of WWW-based collaboration in

    chemistry.</p>



    <p> We have described a method for completely transparent Internet-based

    transfer of chemical information from creator/author to reader/user.

    Applications of this method might include a document such as this journal

    article being automatically abstracted for molecular content, and stored or

    used for calculations or searching. One can envisage <em> e.g. </em>  laboratory robots

    scanning CML-based reaction schemes for starting materials and ordering

    them from CML-based "dot.coms" on the WWW, and recording this in electronic

    notebooks. Instruments could directly output universally processable

    spectra and data. Databases could accept chemistry in many traditional

    formats and re-offer them transparently. Computational chemistry and

    modelling programs could be used routinely for adding information content

    to molecules. Finally, we note that the use of XML allows other disciplines

    (bioscience, pharmaceutical, materials, patents) to include semantically

    rich chemistry in their information.</p>
	 
	
	
</karne:chapter>

<!-- *********************** bibliography *********************** -->
<karne:bibliography title="Notes and references">
	<karne:ref id="ref_1">
		<karne:index>1</karne:index>
		<karne:author href="http://www.ch.ic.ac.uk/rzepa/RSC/CC/4_02963A.html">H. S. Rzepa, B. J. Whitaker and M. J. Winter</karne:author>
		<karne:publication>J. Chem. Soc., Chem. Commun.</karne:publication>
		<karne:date>1994</karne:date>
		<karne:pages>1907</karne:pages>
	</karne:ref>
	<karne:ref id="ref_2">
		<karne:index>2</karne:index>
		<karne:author href="http://www.ch.ic.ac.uk/rzepa/RSC/P2/4_05970K.html">O. Casher, G. Chandramohan, M. Hargreaves, C. Leach, P. Murray-Rust, R. Sayle, H. S. Rzepa and B. J. Whitaker</karne:author>
		<karne:publication>J. Chem. Soc., Perkin Trans. 2</karne:publication>
		<karne:date>1995</karne:date>
		<karne:pages>7</karne:pages>
	</karne:ref> 
	<karne:ref id="ref_3">
		<karne:index>3</karne:index>
		<karne:author>H. S. Rzepa, P. Murray-Rust and B. J. Whitaker</karne:author>
		<karne:publication>Chem. Soc. Rev.</karne:publication>
		<karne:date>1997</karne:date>
		<karne:pages>1</karne:pages>
	</karne:ref>
	<karne:ref id="ref_4">
		<karne:index>4</karne:index>
		<karne:author>H. S. Rzepa, P. Murray-Rust and B. J. Whitaker</karne:author>
		<karne:publication>J. Chem. Inf. Comput. Sci.</karne:publication>
		<karne:date>1998</karne:date>
		<karne:volume>38</karne:volume>
		<karne:pages>976</karne:pages>
	</karne:ref>
	<karne:ref id="ref_5">For a formal description of CML version 1.0, see
		<karne:index>5</karne:index>
		<karne:author href="http://www.xml-cml.org/">P. Murray-Rust and H. S. Rzepa</karne:author>
		<karne:publication> J. Chem. Inf. Comput. Sci.</karne:publication>
		<karne:date>1999</karne:date>
		<karne:volume>39</karne:volume>
		<karne:pages>928</karne:pages>
	</karne:ref>
	<karne:ref id="ref_6">The original concept was described in 
		<karne:index>6</karne:index>
		<karne:author>P. Murray-Rust, C. Leach and H. S. Rzepa</karne:author>
		<karne:publication> Abs. Papers. Am . Chem. Soc.</karne:publication>
		<karne:date>1995</karne:date>
		<karne:volume>210</karne:volume>
		<karne:pages>40-COMP</karne:pages>
	</karne:ref>
	<karne:ref id="ref_7">
		<karne:index>7</karne:index>
		<karne:title href="http://www.w3.org/">World-Wide Web Consortium (W3C)</karne:title>
		<karne:publication></karne:publication>
	</karne:ref>
	<karne:ref id="ref_8">W3C Working draft:
		<karne:index>8</karne:index>
		<karne:title href="http://www.w3.org/MarkUp/">"XHTML 1.0. The Extensible HyperText Markup Language"</karne:title>
	</karne:ref>
 	<karne:ref id="ref_9">W3C Working draft:
		<karne:index>9</karne:index>
		<karne:title href="http://www.w3.org/TR/xmldsig-core/"> "XML-Signature Syntax and Processing "</karne:title>
	</karne:ref>
	<karne:ref id="ref_10">
		<karne:index>10</karne:index>
		<karne:title href="http://www.ch.ic.ac.uk/chimeral/">ChiMeraL demonstration</karne:title>
	</karne:ref>
	<karne:ref id="ref_11">
		<karne:index>11</karne:index>
		<karne:author href="http://www.chronicle.com/free/v46/i11/11a05101.htm">V. Kiernan</karne:author>
		<karne:publication>Chronicle Higher Education</karne:publication>
		<karne:date>1999</karne:date>
	</karne:ref>


</karne:bibliography>

<!-- *********************** appendix  *********************** -->
<karne:appendix title="Examples">

<P>Both these example require the <A HREF="http://www.adobe.com/svg/viewer/install/mainframed.html">Adobe SVG</A> plugin</P>

<TABLE WIDTH="95%" ALIGN="center">
<TR><TD COLSPAN="2" ALIGN="left" CLASS="box" WIDTH="100%">
<karne:figure id="fig_flow" builtin="showLabel">Data flow between the principle components of ChiMeraL</karne:figure>
<FONT SIZE="-2"><I>(a)The creation of a structured document in XML syntax from unstructured legacy formats (MOL, JCAMP, <em> etc. </em>). The validity of the process is checked by a CML-specific XML Schema. (b) Illustrative CML document whose root element contains a child molecule element. In turn the molecule contains a list element, itself the parent of many atom elements (omitted for clarity); bonds are analogous. Attributes such as convention identify the usage of terms and values, while the id attribute identifies every element uniquely. (c) Illustrative XSL stylsheet, which transforms CML to XHTML. The title of the molecule is transformed to the XHTML document title, while the content of the molecule is transformed into various legacy formats (MOL, JME, <em> etc. </em>) for display by applets</I></FONT></TD></TR>
<TR><TD ALIGN="center" CLASS="box_white">
<EMBED NAME="CML Flow" WIDTH="800" HEIGHT="550" SRC="writeupdata/flow.svg" TYPE="image/svg" karne:href="writeupdata/flow.gif"/></TD></TR></TABLE>

<HR WIDTH="95%"/>

<TABLE WIDTH="96%" ALIGN="center"><TR><TD ALIGN="left" CLASS="box" WIDTH="100%">
<karne:figure id="fig_chimeral" builtin="showLabel">Examples of stylesheet transformations on CML</karne:figure>
</TD></TR></TABLE>

<TABLE WIDTH="96%" ALIGN="center"><TR><TD ALIGN="center" CLASS="box" WIDTH="100%">
<karne:link builtin="molecule" display="datasheet" idref="mol_caffeine"/>
</TD></TR>
<TR><TD ALIGN="right" CLASS="box">	
<karne:figure id="fig_1.1" builtin="hideLabel">Property display using HTML table</karne:figure>
</TD></TR></TABLE>

<TABLE WIDTH="96%" ALIGN="center"><TR><TD ALIGN="center" CLASS="box" WIDTH="50%">
<karne:link builtin="molecule" display="jmol" height="400" width="400" idref="mol_caffeine" href="writeupdata/jmolcaf.gif"/>
</TD><TD ALIGN="center" CLASS="box" WIDTH="50%">
<karne:link builtin="molecule" display="jme" height="400" width="400" idref="mol_caffeine" href="writeupdata/jmecaf.gif"/>
</TD></TR>
<TR><TD ALIGN="right" CLASS="box">
<karne:figure id="fig_1.2" builtin="hideLabel">2D Molecule display using Marvin applet</karne:figure>
</TD><TD ALIGN="right" CLASS="box">
<karne:figure id="fig_1.3" builtin="hideLabel">3D Molecule display using JMol applet</karne:figure>
</TD></TR></TABLE>

<TABLE WIDTH="96%" ALIGN="center"><TR><TD ALIGN="center" CLASS="box" WIDTH="50%">
<karne:link builtin="spectrum" display="jspec" height="300" width="400" idref="spect_caffeine_ms_1" href="writeupdata/jspeccaf.gif"/>
</TD><TD CLASS="box_white" WIDTH="50%" ALIGN="center">
<EMBED NAME="CML SVG" WIDTH="400" HEIGHT="300" SRC="writeupdata/caffeine_ir.svg" TYPE="image/svg" karne:href="writeupdata/svgcaf.gif"/>
</TD></TR>
<TR><TD ALIGN="right" CLASS="box">
<karne:figure id="fig_1.4" builtin="hideLabel">Spectral display using JSpec applet</karne:figure>
</TD><TD ALIGN="right" CLASS="box">
<karne:figure id="fig_1.5" builtin="hideLabel">Spectral display using SVG and Adobe plugin</karne:figure>
</TD></TR>
</TABLE>

</karne:appendix>

<!-- *********************** CML data block *********************** -->

<cml title="Caffeine, structure and spectra" id="cml_caffeine" xmlns="x-schema:cml_schema_ie_02.xml">
   	<molecule title="caffeine" id="mol_caffeine">
      	<formula>C8 H10 N4 O2</formula>
      	<string title="CAS">58-08-2</string>
      	<string title="ACX">I1001269</string>
      	<string title="DOT">UN 1544</string>
      	<string title="RTECS">EV6475000</string>
      	<float title="molecule weight">194.19</float>
      	<float title="melting point" units="degC">238</float>
      	<float title="specific gravity">1.23</float>
      	<float title="water solubility" units="g/100 mL" convention="g per 100 mL at 23 degC">1-5</float>
     	<string title="comments">White powder or white glistening needles usually melted together. LIGHT SENSITIVE</string>
	  	<list title="alternate names">
	  		<string title="name">1,3,7-Trimethylxanthine</string>
			<string title="name">3,7-dihydro-1,3,7-trimethyl-1H-Purine-2,6-dione</string>
			<string title="name">1,3,7-Trimethyl-2,6-dioxopurine</string>
			<string title="name">7-Methyltheophylline</string>
			<string title="name">Alert-Pep</string>
			<string title="name">Cafeina</string>
			<string title="name">Cafipel</string>
			<string title="name">Guaranine</string>
			<string title="name">Koffein</string>
			<string title="name">Mateina</string>
			<string title="name">Methyltheobromine</string>
			<string title="name">No-Doz</string>
			<string title="name">Refresh'n</string>
			<string title="name">Stim</string>
			<string title="name">Theine</string>
			<string title="name">1-methyltheobromine</string>
			<string title="name">methyltheobromide</string>
			<string title="name">eldiatric c</string>
			<string title="name">organex</string>
			<string title="name">1,3,7-trimethyl-2,6-dioxo-1,2,3,6-tetrahydropurine</string>
			<string title="name">caffenium</string>
		</list>
		<list title="atoms">
			<atom id="c_a_1">
				<integer builtin="atomId">1</integer>
				<float builtin="x3" units="A">-2.8709</float>
				<float builtin="y3" units="A">-1.0499</float>
				<float builtin="z3" units="A">0.1718</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_2">
				<integer builtin="atomId">2</integer>
				<float builtin="x3" units="A">-2.9099</float>
				<float builtin="y3" units="A">0.2747</float>
				<float builtin="z3" units="A">0.1062</float>
				<string builtin="elementType">N</string>
			</atom>
			<atom id="c_a_3">
				<integer builtin="atomId">3</integer>
				<float builtin="x3" units="A">-1.8026</float>
				<float builtin="y3" units="A">0.9662</float>
				<float builtin="z3" units="A">-0.1184</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_4">
				<integer builtin="atomId">4</integer>
				<float builtin="x3" units="A">-0.6411</float>
				<float builtin="y3" units="A">0.2954</float>
				<float builtin="z3" units="A">-0.2316</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_5">
				<integer builtin="atomId">5</integer>
				<float builtin="x3" units="A">-0.6549</float>
				<float builtin="y3" units="A">-1.0889</float>
				<float builtin="z3" units="A">-0.1279</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_6">
				<integer builtin="atomId">6</integer>
				<float builtin="x3" units="A">-1.7352</float>
				<float builtin="y3" units="A">-1.7187</float>
				<float builtin="z3" units="A">0.0624</float>
				<string builtin="elementType">N</string>
			</atom>
			<atom id="c_a_7">
				<integer builtin="atomId">7</integer>
				<float builtin="x3" units="A">0.6052</float>
				<float builtin="y3" units="A">0.7432</float>
				<float builtin="z3" units="A">-0.4434</float>
				<string builtin="elementType">N</string>
			</atom>
			<atom id="c_a_8">
				<integer builtin="atomId">8</integer>
				<float builtin="x3" units="A">1.2863</float>
				<float builtin="y3" units="A">-0.4175</float>
				<float builtin="z3" units="A">-0.4514</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_9">
				<integer builtin="atomId">9</integer>
				<float builtin="x3" units="A">0.5994</float>
				<float builtin="y3" units="A">-1.5633</float>
				<float builtin="z3" units="A">-0.2698</float>
				<string builtin="elementType">N</string>
			</atom>
			<atom id="c_a_10">
				<integer builtin="atomId">10</integer>
				<float builtin="x3" units="A">1.0875</float>
				<float builtin="y3" units="A">2.0867</float>
				<float builtin="z3" units="A">-0.6139</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_11">
				<integer builtin="atomId">11</integer>
				<float builtin="x3" units="A">-1.8349</float>
				<float builtin="y3" units="A">2.1699</float>
				<float builtin="z3" units="A">-0.2205</float>
				<string builtin="elementType">O</string>
			</atom>
			<atom id="c_a_12">
				<integer builtin="atomId">12</integer>
				<float builtin="x3" units="A">-4.2178</float>
				<float builtin="y3" units="A">0.9810</float>
				<float builtin="z3" units="A">0.2003</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_13">
				<integer builtin="atomId">13</integer>
				<float builtin="x3" units="A">-3.8944</float>
				<float builtin="y3" units="A">-1.6746</float>
				<float builtin="z3" units="A">0.3323</float>
				<string builtin="elementType">O</string>
			</atom>
			<atom id="c_a_14">
				<integer builtin="atomId">14</integer>
				<float builtin="x3" units="A">-1.6764</float>
				<float builtin="y3" units="A">-3.1997</float>
				<float builtin="z3" units="A">0.1458</float>
				<string builtin="elementType">C</string>
			</atom>
			<atom id="c_a_15">
				<integer builtin="atomId">15</integer>
				<float builtin="x3" units="A">2.3776</float>
				<float builtin="y3" units="A">-0.4481</float>
				<float builtin="z3" units="A">-0.6036</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_16">
				<integer builtin="atomId">16</integer>
				<float builtin="x3" units="A">2.1902</float>
				<float builtin="y3" units="A">2.0944</float>
				<float builtin="z3" units="A">-0.7699</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_17">
				<integer builtin="atomId">17</integer>
				<float builtin="x3" units="A">0.6074</float>
				<float builtin="y3" units="A">2.5547</float>
				<float builtin="z3" units="A">-1.5032</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_18">
				<integer builtin="atomId">18</integer>
				<float builtin="x3" units="A">0.8606</float>
				<float builtin="y3" units="A">2.6915</float>
				<float builtin="z3" units="A">0.2934</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_19">
				<integer builtin="atomId">19</integer>
				<float builtin="x3" units="A">-4.0942</float>
				<float builtin="y3" units="A">2.0097</float>
				<float builtin="z3" units="A">0.6091</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_20">
				<integer builtin="atomId">20</integer>
				<float builtin="x3" units="A">-4.6699</float>
				<float builtin="y3" units="A">1.0338</float>
				<float builtin="z3" units="A">-0.8167</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_21">
				<integer builtin="atomId">21</integer>
				<float builtin="x3" units="A">-4.9101</float>
				<float builtin="y3" units="A">0.4518</float>
				<float builtin="z3" units="A">0.8943</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_22">
				<integer builtin="atomId">22</integer>
				<float builtin="x3" units="A">-2.3049</float>
				<float builtin="y3" units="A">-3.6334</float>
				<float builtin="z3" units="A">-0.6659</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_23">
				<integer builtin="atomId">23</integer>
				<float builtin="x3" units="A">-0.6444</float>
				<float builtin="y3" units="A">-3.6030</float>
				<float builtin="z3" units="A">0.0359</float>
				<string builtin="elementType">H</string>
			</atom>
			<atom id="c_a_24">
				<integer builtin="atomId">24</integer>
				<float builtin="x3" units="A">-2.0682</float>
				<float builtin="y3" units="A">-3.5218</float>
				<float builtin="z3" units="A">1.1381</float>
				<string builtin="elementType">H</string>
			</atom>
		</list>
		<list title="bonds">
			<bond id="c_b_1">
				<integer title="bondId">1</integer>
				<integer builtin="atomRef">1</integer>
				<integer builtin="atomRef">2</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_2">
				<integer title="bondId">2</integer>
				<integer builtin="atomRef">1</integer>
				<integer builtin="atomRef">6</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_3">
				<integer title="bondId">3</integer>
				<integer builtin="atomRef">1</integer>
				<integer builtin="atomRef">13</integer>
				<integer builtin="order">2</integer>
			</bond>
			<bond id="c_b_4">
				<integer title="bondId">4</integer>
				<integer builtin="atomRef">2</integer>
				<integer builtin="atomRef">3</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_5">
				<integer title="bondId">5</integer>
				<integer builtin="atomRef">2</integer>
				<integer builtin="atomRef">12</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_6">
				<integer title="bondId">6</integer>
				<integer builtin="atomRef">3</integer>
				<integer builtin="atomRef">4</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_7">
				<integer title="bondId">7</integer>
				<integer builtin="atomRef">3</integer>
				<integer builtin="atomRef">11</integer>
				<integer builtin="order">2</integer>
			</bond>
			<bond id="c_b_8">
				<integer title="bondId">8</integer>
				<integer builtin="atomRef">4</integer>
				<integer builtin="atomRef">5</integer>
				<integer builtin="order">2</integer>
			</bond>
			<bond id="c_b_9">
				<integer title="bondId">9</integer>
				<integer builtin="atomRef">4</integer>
				<integer builtin="atomRef">7</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_10">
				<integer title="bondId">10</integer>
				<integer builtin="atomRef">5</integer>
				<integer builtin="atomRef">6</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_11">
				<integer title="bondId">11</integer>
				<integer builtin="atomRef">5</integer>
				<integer builtin="atomRef">9</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_12">
				<integer title="bondId">12</integer>
				<integer builtin="atomRef">6</integer>
				<integer builtin="atomRef">14</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_13">
				<integer title="bondId">13</integer>
				<integer builtin="atomRef">7</integer>
				<integer builtin="atomRef">8</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_14">
				<integer title="bondId">14</integer>
				<integer builtin="atomRef">7</integer>
				<integer builtin="atomRef">10</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_15">
				<integer title="bondId">15</integer>
				<integer builtin="atomRef">8</integer>
				<integer builtin="atomRef">9</integer>
				<integer builtin="order">2</integer>
			</bond>
			<bond id="c_b_16">
				<integer title="bondId">16</integer>
				<integer builtin="atomRef">8</integer>
				<integer builtin="atomRef">15</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_17">
				<integer title="bondId">17</integer>
				<integer builtin="atomRef">10</integer>
				<integer builtin="atomRef">16</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_18">
				<integer title="bondId">18</integer>
				<integer builtin="atomRef">10</integer>
				<integer builtin="atomRef">17</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_19">
				<integer title="bondId">19</integer>
				<integer builtin="atomRef">10</integer>
				<integer builtin="atomRef">18</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_20">
				<integer title="bondId">20</integer>
				<integer builtin="atomRef">12</integer>
				<integer builtin="atomRef">19</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_21">
				<integer title="bondId">21</integer>
				<integer builtin="atomRef">12</integer>
				<integer builtin="atomRef">20</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_22">
				<integer title="bondId">22</integer>
				<integer builtin="atomRef">12</integer>
				<integer builtin="atomRef">21</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_23">
				<integer title="bondId">23</integer>
				<integer builtin="atomRef">14</integer>
				<integer builtin="atomRef">22</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_24">
				<integer title="bondId">24</integer>
				<integer builtin="atomRef">14</integer>
				<integer builtin="atomRef">23</integer>
				<integer builtin="order">1</integer>
			</bond>
			<bond id="c_b_25">
				<integer title="bondId">25</integer>
				<integer builtin="atomRef">14</integer>
				<integer builtin="atomRef">24</integer>
				<integer builtin="order">1</integer>
			</bond>
		</list>
	</molecule>
	<chimeral:spectrum title="Caffeine" id="spect_caffeine_ms_1" convention="JCAMP-DX= 4.24">
		<string title="datatype">MASS SPECTRUM</string>
		<string title="EPA">250547</string>
		<string title="origin">Virginia Division of Forensic Science</string>
		<string title="owner">NIST Mass Spectrometry Data Center</string>
		<float title="xunits">M/Z</float>
		<float title="yunits">RELATIVE ABUNDANCE</float>
		<float title="firstx" convention="M/Z">14</float>
		<float title="lastx" convention="M/Z">197</float>
		<float title="deltax" convention="M/Z"></float>
		<float title="xfactor">1</float>
		<float title="firsty" convention="RELATIVE ABUNDANCE">70</float>
		<float title="miny" convention="RELATIVE ABUNDANCE">10</float>
		<float title="maxy" convention="RELATIVE ABUNDANCE">9999</float>
		<float title="yfactor">1</float>
		<float title="npoints">104</float>
		<list title="peak table" convention="(XY..XY)">
			<coordinate2 id="c_ms_1">14, 70</coordinate2>
			<coordinate2 id="c_ms_2">15, 840</coordinate2>
			<coordinate2 id="c_ms_3">16, 50</coordinate2>
			<coordinate2 id="c_ms_4">17, 40</coordinate2>
			<coordinate2 id="c_ms_5">18, 60</coordinate2>
			<coordinate2 id="c_ms_6">20, 10</coordinate2>
			<coordinate2 id="c_ms_7">25, 10</coordinate2>
			<coordinate2 id="c_ms_8">26, 50</coordinate2>
			<coordinate2 id="c_ms_9">27, 150</coordinate2>
			<coordinate2 id="c_ms_10">28, 900</coordinate2>
			<coordinate2 id="c_ms_11">29, 150</coordinate2>
			<coordinate2 id="c_ms_12">30, 40</coordinate2>
			<coordinate2 id="c_ms_13">31, 10</coordinate2>
			<coordinate2 id="c_ms_14">32, 150</coordinate2>
			<coordinate2 id="c_ms_15">34, 10</coordinate2>
			<coordinate2 id="c_ms_16">38, 120</coordinate2>
			<coordinate2 id="c_ms_17">39, 190</coordinate2>
			<coordinate2 id="c_ms_18">40, 680</coordinate2>
			<coordinate2 id="c_ms_19">41, 580</coordinate2>
			<coordinate2 id="c_ms_20">42, 1241</coordinate2>
			<coordinate2 id="c_ms_21">43, 60</coordinate2>
			<coordinate2 id="c_ms_22">44, 10</coordinate2>
			<coordinate2 id="c_ms_23">45, 10</coordinate2>
			<coordinate2 id="c_ms_24">50, 10</coordinate2>
			<coordinate2 id="c_ms_25">51, 130</coordinate2>
			<coordinate2 id="c_ms_26">52, 350</coordinate2>
			<coordinate2 id="c_ms_27">53, 470</coordinate2>
			<coordinate2 id="c_ms_28">54, 570</coordinate2>
			<coordinate2 id="c_ms_29">55, 3383</coordinate2>
			<coordinate2 id="c_ms_30">56, 730</coordinate2>
			<coordinate2 id="c_ms_31">57, 110</coordinate2>
			<coordinate2 id="c_ms_32">58, 140</coordinate2>
			<coordinate2 id="c_ms_33">59, 10</coordinate2>
			<coordinate2 id="c_ms_34">62, 10</coordinate2>
			<coordinate2 id="c_ms_35">63, 10</coordinate2>
			<coordinate2 id="c_ms_36">64, 30</coordinate2>
			<coordinate2 id="c_ms_37">65, 120</coordinate2>
			<coordinate2 id="c_ms_38">66, 640</coordinate2>
			<coordinate2 id="c_ms_39">67, 4153</coordinate2>
			<coordinate2 id="c_ms_40">68, 450</coordinate2>
			<coordinate2 id="c_ms_41">69, 170</coordinate2>
			<coordinate2 id="c_ms_42">70, 430</coordinate2>
			<coordinate2 id="c_ms_43">71, 10</coordinate2>
			<coordinate2 id="c_ms_44">72, 10</coordinate2>
			<coordinate2 id="c_ms_45">76, 10</coordinate2>
			<coordinate2 id="c_ms_46">77, 70</coordinate2>
			<coordinate2 id="c_ms_47">78, 70</coordinate2>
			<coordinate2 id="c_ms_48">79, 120</coordinate2>
			<coordinate2 id="c_ms_49">80, 230</coordinate2>
			<coordinate2 id="c_ms_50">81, 740</coordinate2>
			<coordinate2 id="c_ms_51">82, 2742</coordinate2>
			<coordinate2 id="c_ms_52">83, 330</coordinate2>
			<coordinate2 id="c_ms_53">85, 10</coordinate2>
			<coordinate2 id="c_ms_54">91, 10</coordinate2>
			<coordinate2 id="c_ms_55">92, 20</coordinate2>
			<coordinate2 id="c_ms_56">93, 60</coordinate2>
			<coordinate2 id="c_ms_57">94, 390</coordinate2>
			<coordinate2 id="c_ms_58">95, 130</coordinate2>
			<coordinate2 id="c_ms_59">96, 60</coordinate2>
			<coordinate2 id="c_ms_60">97, 210</coordinate2>
			<coordinate2 id="c_ms_61">104, 10</coordinate2>
			<coordinate2 id="c_ms_62">105, 10</coordinate2>
			<coordinate2 id="c_ms_63">106, 20</coordinate2>
			<coordinate2 id="c_ms_64">107, 70</coordinate2>
			<coordinate2 id="c_ms_65">109, 5935</coordinate2>
			<coordinate2 id="c_ms_66">110, 750</coordinate2>
			<coordinate2 id="c_ms_67">111, 120</coordinate2>
			<coordinate2 id="c_ms_68">112, 10</coordinate2>
			<coordinate2 id="c_ms_69">120, 10</coordinate2>
			<coordinate2 id="c_ms_70">121, 20</coordinate2>
			<coordinate2 id="c_ms_71">122, 90</coordinate2>
			<coordinate2 id="c_ms_72">123, 50</coordinate2>
			<coordinate2 id="c_ms_73">124, 60</coordinate2>
			<coordinate2 id="c_ms_74">125, 10</coordinate2>
			<coordinate2 id="c_ms_75">126, 10</coordinate2>
			<coordinate2 id="c_ms_76">132, 10</coordinate2>
			<coordinate2 id="c_ms_77">133, 10</coordinate2>
			<coordinate2 id="c_ms_78">134, 10</coordinate2>
			<coordinate2 id="c_ms_79">135, 70</coordinate2>
			<coordinate2 id="c_ms_80">136, 500</coordinate2>
			<coordinate2 id="c_ms_81">137, 460</coordinate2>
			<coordinate2 id="c_ms_82">138, 200</coordinate2>
			<coordinate2 id="c_ms_83">139, 10</coordinate2>
			<coordinate2 id="c_ms_84">140, 10</coordinate2>
			<coordinate2 id="c_ms_85">147, 10</coordinate2>
			<coordinate2 id="c_ms_86">148, 10</coordinate2>
			<coordinate2 id="c_ms_87">149, 50</coordinate2>
			<coordinate2 id="c_ms_88">150, 120</coordinate2>
			<coordinate2 id="c_ms_89">151, 40</coordinate2>
			<coordinate2 id="c_ms_90">152, 40</coordinate2>
			<coordinate2 id="c_ms_91">153, 10</coordinate2>
			<coordinate2 id="c_ms_92">161, 10</coordinate2>
			<coordinate2 id="c_ms_93">163, 20</coordinate2>
			<coordinate2 id="c_ms_94">164, 60</coordinate2>
			<coordinate2 id="c_ms_95">165, 570</coordinate2>
			<coordinate2 id="c_ms_96">166, 90</coordinate2>
			<coordinate2 id="c_ms_97">167, 10</coordinate2>
			<coordinate2 id="c_ms_98">179, 10</coordinate2>
			<coordinate2 id="c_ms_99">190, 10</coordinate2>
			<coordinate2 id="c_ms_100">193, 1461</coordinate2>
			<coordinate2 id="c_ms_101">194, 9999</coordinate2>
			<coordinate2 id="c_ms_102">195, 1050</coordinate2>
			<coordinate2 id="c_ms_103">196, 90</coordinate2>
			<coordinate2 id="c_ms_104">197, 10</coordinate2>
		</list>
	</chimeral:spectrum>
</cml>
</karne:document>
