Skip to content

Commit

Permalink
Merge pull request #1 from misdoro/vamdc-working
Browse files Browse the repository at this point in the history
Vamdc working
  • Loading branch information
misdoro committed Nov 23, 2015
2 parents 9645464 + 17d2684 commit 29612a9
Show file tree
Hide file tree
Showing 93 changed files with 29,500 additions and 4,742 deletions.
31 changes: 31 additions & 0 deletions README.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Schema design policies in application to XSAMS (proposal).
Edit this note if you have something to add.

* Always put meaningful commit messages, describing the whole set of changes.
"svn diff" before commit would help in writing such message.

* ID and IDREF:

* Define ID types in typesAttributes.xsd,
* Always define ID prefix letter (or several letters, if we run out of them)
to avoid collisions between different IDs in instance documents
* Always document the ID and what would be it's use.
* in documentation of type, it would be good to name places of schema where from that id may be referred
If specific ID is not planned to be referenced from other parts of schema, document it.

* Never define attributes/elements of type IDREF without specifyng where they should refer!
Not everyone is as smart as you, so to deny him making stupid things, don't do this.
* Normally define IDREF type in typesAttributes.xsd,
define IDREF type in the same part where ID is defined only if it is used only in that part of schema.
* Always define ID prefix letter
* Document where the ID is defined, if it is defined separately


* Avoid using <attribute ref="attributeName"/> and <element ref="elementName"/>
Instead define simple type and define attribute as <xs:attribute name="attributeName" type="attributeSpecificType"/>
This is required to avoid the need to include xsams default namespace name
in each of the occurrences of such elements/attributes.

* Create at least basic built-in documentation for added types/elements, so people would understand what you meaned.
That would also make the output of automatic xsd documentation tools meaningful.

162 changes: 162 additions & 0 deletions cases/asymcs.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:asymcs="http://vamdc.org/xml/xsams/1.0/cases/asymcs"
xmlns:ctypes="http://vamdc.org/xml/xsams/1.0/cases/commonTypes"
targetNamespace="http://vamdc.org/xml/xsams/1.0/cases/asymcs"
elementFormDefault="qualified">
<xs:import namespace="http://vamdc.org/xml/xsams/1.0/cases/commonTypes"
schemaLocation="commonTypes.xsd"/>
<xs:annotation>
<xs:documentation>Schema for specifying the quantum numbers of closed-shell asymmetric top molecules</xs:documentation>
</xs:annotation>

<!--=== QNs will be the root element ===-->
<xs:element name="QNs" type="asymcs:QNsType">
<xs:annotation>
<xs:documentation>A list of quantum numbers for closed-shell asymmetric top molecules</xs:documentation>
</xs:annotation>
<!-- the name attribute to r must be unique within each state -->
<xs:unique name="r-name">
<xs:selector xpath="asymcs:r"/>
<xs:field xpath="@name"/>
</xs:unique>
<!-- the mode index of Vi must be unique within each state -->
<xs:unique name="vi-mode">
<xs:selector xpath="asymcs:vi"/>
<xs:field xpath="@mode"/>
</xs:unique>
<!-- the spin ref of Fj must be unique within each state -->
<xs:unique name="Fj-spinref">
<xs:selector xpath="asymcs:Fj"/>
<xs:field xpath="@nuclearSpinRef"/>
</xs:unique>
<!-- the j of Fj must be unique within each state -->
<xs:unique name="Fj-ref">
<xs:selector xpath="asymcs:Fj"/>
<xs:field xpath="@j"/>
</xs:unique>
</xs:element>

<!--Following two types are used to link case to base schema-->
<xs:complexType name="ThisCase" abstract="true">
<xs:complexContent>
<xs:restriction base="ctypes:BaseCase">
<xs:attribute name="caseID" type="xs:string" use="required" fixed="asymcs"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="Case">
<xs:complexContent>
<xs:extension base="asymcs:ThisCase">
<xs:sequence>
<xs:element ref="asymcs:QNs" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="QNsType">
<xs:sequence>

<!-- ElecStateLabel -->
<xs:element name="ElecStateLabel" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The label of the electronic state: X, a, A, b, etc...</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vi -->
<xs:element name="vi" type="ctypes:VibrationalQNType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A vibrational quantum number, v_i</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vibInv -->
<xs:element name="vibInv" type="ctypes:ASParityType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Parity of the vibrational wavefunction with respect to inversion through the molecular centre of mass in the molecular coordinate system: 'a' or 's'</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vibSym -->
<xs:element name="vibSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rotational wavefunction, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- J -->
<xs:element name="J" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The rotational quantum number, J, associated with the total angular momentum excluding nuclear spin</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Ka -->
<xs:element name="Ka" type="xs:nonNegativeInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>The rotational quantum label, Ka, correlating to K in the prolate symmetric top limit</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Kc -->
<xs:element name="Kc" type="xs:nonNegativeInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>The rotational quantum label, Kc, correlating to K in the oblate symmetric top limit</xs:documentation>
</xs:annotation>
</xs:element>

<!-- rotSym -->
<xs:element name="rotSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rotational wavefunction, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- rovibSym -->
<xs:element name="rovibSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rovibrational wavefunction, rotSym x vibSym, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- I -->
<xs:element name="I" type="ctypes:CoupledNuclearSpinAMType" minOccurs="0">
<xs:annotation>
<xs:documentation>The quantum number associated with the total nuclear spin angular momentum resulting from the coupling of two or more individual nuclear spin angular momenta: I = I1 + I2 + ...</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Fj -->
<xs:element name="Fj" type="ctypes:NuclearSpinIntermediateAMType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The quantum number, F_j, associated with the intermediate angular momentum due to coupling the rotational angular momentum with one nuclear spin (F_j may not be a good quantum number)</xs:documentation>
</xs:annotation>
</xs:element>

<!-- F -->
<xs:element name="F" type="ctypes:NuclearSpinAMType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The quantum number, F, associated with the total angular momentum including nuclear spin</xs:documentation>
</xs:annotation>
</xs:element>

<!-- r -->
<xs:element name="r" type="ctypes:RankingType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A named ranking index for states of the same symmetry that can't be or haven't been differentiated any other way: r=1,2,... It is possible to have more than one r defining a state, but their name attributes have to be unique.</xs:documentation>
</xs:annotation>
</xs:element>

<!-- parity -->
<xs:element name="parity" type="ctypes:PMParityType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Total parity with respect to inversion through the molecular centre of mass in the laboratory coordinate system</xs:documentation>
</xs:annotation>
</xs:element>

</xs:sequence>
</xs:complexType>
</xs:schema>
191 changes: 191 additions & 0 deletions cases/asymos.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:asymos="http://vamdc.org/xml/xsams/1.0/cases/asymos"
xmlns:ctypes="http://vamdc.org/xml/xsams/1.0/cases/commonTypes"
targetNamespace="http://vamdc.org/xml/xsams/1.0/cases/asymos"
elementFormDefault="qualified">
<xs:import namespace="http://vamdc.org/xml/xsams/1.0/cases/commonTypes"
schemaLocation="commonTypes.xsd"/>
<xs:annotation>
<xs:documentation>Schema for specifying the quantum numbers of open-shell asymmetric top molecules</xs:documentation>
</xs:annotation>

<!--=== QNs will be the root element ===-->
<xs:element name="QNs" type="asymos:QNsType">
<xs:annotation>
<xs:documentation>A list of quantum numbers for open-shell asymmetric top molecules</xs:documentation>
</xs:annotation>
<!-- the name attribute to r must be unique within each state -->
<xs:unique name="r-name">
<xs:selector xpath="asymos:r"/>
<xs:field xpath="@name"/>
</xs:unique>
<!-- the mode index of Vi must be unique within each state -->
<xs:unique name="vi-mode">
<xs:selector xpath="asymos:vi"/>
<xs:field xpath="@mode"/>
</xs:unique>
<!-- the spin ref of Fj must be unique within each state -->
<xs:unique name="Fj-spinref">
<xs:selector xpath="asymos:Fj"/>
<xs:field xpath="@nuclearSpinRef"/>
</xs:unique>
<!-- the j of Fj must be unique within each state -->
<xs:unique name="Fj-ref">
<xs:selector xpath="asymos:Fj"/>
<xs:field xpath="@j"/>
</xs:unique>
</xs:element>

<!--Following two types are used to link case to base schema-->
<xs:complexType name="ThisCase" abstract="true">
<xs:complexContent>
<xs:restriction base="ctypes:BaseCase">
<xs:attribute name="caseID" type="xs:string" use="required" fixed="asymos"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="Case">
<xs:complexContent>
<xs:extension base="asymos:ThisCase">
<xs:sequence>
<xs:element ref="asymos:QNs" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="QNsType">
<xs:sequence>

<!-- ElecStateLabel -->
<xs:element name="ElecStateLabel" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The label of the electronic state: X, a, A, b, etc...</xs:documentation>
</xs:annotation>
</xs:element>

<!-- elecSym -->
<xs:element name="elecSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the electronic wavefunction</xs:documentation>
</xs:annotation>
</xs:element>

<!-- elecInv -->
<xs:element name="elecInv" type="ctypes:UGParityType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Parity of the electronic wavefunction with respect to inversion through the molecular centre of mass in the molecular coordinate system: 'g' or 'u'</xs:documentation>
</xs:annotation>
</xs:element>

<!-- S -->
<xs:element name="S" type="ctypes:AMType" minOccurs="0">
<xs:annotation>
<xs:documentation>The total electronic spin angular momentum quantum number</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vi -->
<xs:element name="vi" type="ctypes:VibrationalQNType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A vibrational quantum number, v_i</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vibInv -->
<xs:element name="vibInv" type="ctypes:ASParityType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Parity of the vibrational wavefunction with respect to inversion through the molecular centre of mass in the molecular coordinate system: 'a' or 's'</xs:documentation>
</xs:annotation>
</xs:element>

<!-- vibSym -->
<xs:element name="vibSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rotational wavefunction, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- J -->
<xs:element name="J" type="ctypes:AMType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The rotational quantum number, J, associated with the total angular momentum excluding nuclear spin</xs:documentation>
</xs:annotation>
</xs:element>

<!-- N -->
<xs:element name="N" type="xs:nonNegativeInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>The quantum number associated with the total angular momentum excluding electronic and nuclear spin: J = N + S</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Ka -->
<xs:element name="Ka" type="xs:nonNegativeInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>The rotational quantum label, Ka, correlating to K in the prolate symmetric top limit</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Kc -->
<xs:element name="Kc" type="xs:nonNegativeInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>The rotational quantum label, Kc, correlating to K in the oblate symmetric top limit</xs:documentation>
</xs:annotation>
</xs:element>

<!-- rotSym -->
<xs:element name="rotSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rotational wavefunction, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- rovibSym -->
<xs:element name="rovibSym" type="ctypes:SymmetrySpeciesType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Symmetry species of the rovibrational wavefunction, rotSym x vibSym, in some appropriate symmetry group</xs:documentation>
</xs:annotation>
</xs:element>

<!-- I -->
<xs:element name="I" type="ctypes:CoupledNuclearSpinAMType" minOccurs="0">
<xs:annotation>
<xs:documentation>The quantum number associated with the total nuclear spin angular momentum resulting from the coupling of two or more individual nuclear spin angular momenta: I = I1 + I2 + ...</xs:documentation>
</xs:annotation>
</xs:element>

<!-- Fj -->
<xs:element name="Fj" type="ctypes:NuclearSpinIntermediateAMType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The quantum number, F_j, associated with the intermediate angular momentum due to coupling the rotational angular momentum with one nuclear spin (F_j may not be a good quantum number)</xs:documentation>
</xs:annotation>
</xs:element>

<!-- F -->
<xs:element name="F" type="ctypes:NuclearSpinAMType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The quantum number, F, associated with the total angular momentum including nuclear spin</xs:documentation>
</xs:annotation>
</xs:element>

<!-- r -->
<xs:element name="r" type="ctypes:RankingType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A named ranking index for states of the same symmetry that can't be or haven't been differentiated any other way: r=1,2,... It is possible to have more than one r defining a state, but their name attributes have to be unique.</xs:documentation>
</xs:annotation>
</xs:element>

<!-- parity -->
<xs:element name="parity" type="ctypes:PMParityType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Total parity with respect to inversion through the molecular centre of mass in the laboratory coordinate system</xs:documentation>
</xs:annotation>
</xs:element>

</xs:sequence>
</xs:complexType>

</xs:schema>
Loading

0 comments on commit 29612a9

Please sign in to comment.