next up previous contents
Nächste Seite: Ausprägungsmöglichkeiten Aufwärts: Chemical Markup Language Vorherige Seite: Chemical Markup Language   Inhalt

Dokumentstruktur

Die Elemente in CML kann man grundsätzlich in zwei verschiedene Bereiche aufteilen. Zum Einen gibt es Elemente, die die eigentlichen Daten enthalten. Hierbei handelt es sich im wesentlichen um die Nachbildung der üblichen Datentypen: String, Integer und Float. Aber auch die darauf aufbauenden Arrays und einige Matrizen sind definiert. Diese Elemente beinhalten nur Text und keine weiteren Elemente. Der Sinn des Inhalts wird durch die Attribute festgelegt, insbesondere durch das Attribut builtin.
<string builtin="elementType">C</string>
In diesem Beispiel wird dem Attribut builtin der Wert elementType zugewiesen, wodurch die Bedeutung des Buchstaben C klar wird. Es handelt sich hier um ein Kohlenstoffatom. Das Attribut ist für fast alle Elemente definiert, die Daten enthalten können, und kann dort verschiedene Werte annehmen. In Tabelle 4.5 sind die verschiedenen Ausprägungen für die drei grundlegenden Datentypen aufgeführt. In den entsprechenden Arrays nimmt das Attribut die gleichen Attributwerte an.

Tabelle 4.5: Ausprägungen des Attributs builtin
Element definierte Werte
string id, elementType, atomId, residueType, residueId,
  atomRef, atomRefs, order, stereo, spacegroup
float x2, y2, z2, x3, y3, z3, xFract, yFract,
  zFract, isotope, formalCharge, hydrogenCount,
  nonhydrogenCount, atomParity, length, acell,
  bcell, ccell, alpha, beta, gamma, z, occupancy
integer isotope, formalCharge, hydrogenCount,
  nonhydrogenCount, atomParity, z


An der Anzahl der möglichen Attributwerte läßt sich schon erkennen, daß man mit CML eine Vielzahl von chemischen Sachverhalten darstellen kann. Neben diesem speziellen Attribut hat jedes Element noch drei weitere Attribute: title, id und convention. Für diese Attribute sind keine festen Werte vorgegeben, da sie in der DTD mit dem Datentyp #CDATA definiert worden sind. Sie können jede beliebige Zeichenkette annehmen und somit die verschiedensten Informationen speichern.
<float title="meltingPoint">100.34°</float>
In dem Beispiel wird der Schmelzpunkt eines Atoms verwaltet. Obwohl es kein eigenes Element für den Schmelzpunkt gibt, lassen sich so sehr einfach die Daten dafür ablegen. Man muß nicht für jede chemische Information ein eigenes Element definieren, wodurch die Anzahl der Elemente sehr klein gehalten werden kann. Das macht das Format zum Einen sehr variabel aber zum Anderen auch sehr anfällig für Fehler, da man nicht genau festgelegt hat, welche Daten die Elemente enthalten. Der zweite Bereich der Elemente beschreibt die chemischen Komponenten. Typische Beispiele sind hierfür: atom, atomarray, bond, bondarray und molecule. Diese Elemente beinhalten keinen Text sondern nur andere Elemente. Sie strukturieren den Aufbau eines Dokumentes und stellen dadurch zwischen den enthaltenden Elementen einen chemischen Zusammenhang her.

Beispiel einer CML-Datei
<molecule>
   <atomArray>
      <atom id="a_1">
         <float builtin="x3" units="A">1.0303</float>
         <float builtin="y3" units="A">0.8847</float>
         <float builtin="z3" units="A">0.9763</float>
         <string builtin="elementType">C</string>
      </atom>
      <atom id="a_2">
         <float builtin="x3" units="A">1.8847</float>
         <float builtin="y3" units="A">1.9889</float>
         <float builtin="z3" units="A">1.5717</float>
         <string builtin="elementType">C</string>
      </atom>
                       :
                       :
                       :
      <atom id="a_9">
         <float builtin="x3" units="A">3.7056</float>
         <float builtin="y3" units="A">2.1820</float>
         <float builtin="z3" units="A">2.1139</float>
         <string builtin="elementType">H</string>
      </atom>
   </atomArray>
   <bondArray>
      <bond id="b_1">
         <string builtin="atomRef">a_1</string>
         <string builtin="atomRef">a_2</string>
         <string builtin="order">1</string>
      </bond>
      <bond id="b_2">
         <string builtin="atomRef">a_1</string>
         <string builtin="atomRef">a_4</string>
         <string builtin="order">1</string>
      </bond>
                        :
                        :
                        :
   </bondArray>
</molecule>

Im Quellcode 4.3 ist ein Beispiel einer typischen CML-Datei zu sehen. Eingeleitet wird die Datei durch das Wurzelelement molecule. In diesem Element sind alle Informationen zu dem Molekül gespeichert. Zunächst werden alle Atome in dem Element atomArray aufgelistet. Dabei besitzt jedes atom Element den gleichen Aufbau. Durch das Attribut id läßt sich ein Atom eindeutig identifizieren. Es enthält float Elemente, die die genaue Position im Molekül beschreiben, und ein string Element, das den chemischen Elementtyp festlegt. Nach der Auflistung der Atome werden die Bindungen zwischen den Atomen aufgeführt. Die Bindungen werden durch je ein bond Element beschrieben, die dann im bondArray Element zusammengefaßt werden. Jedes bond Element ist durch das eindeutiges Attribut id genau gekennzeichnet. Es enthält drei string Elemente, wobei die ersten beiden Elemente den id Attributwert eines Atoms beinhalten und somit klar machen, zwischen welchen Atomen die Bindung besteht. Das letzte string Element gibt die Ordnung der Bindung an.


next up previous contents
Nächste Seite: Ausprägungsmöglichkeiten Aufwärts: Chemical Markup Language Vorherige Seite: Chemical Markup Language   Inhalt
Oliver Krone 2003-04-28