<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 U (http://www.altova.com) by Chris Maynard (EPCC) -->
<!-- QCDml revision 1.3.0 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.lqcd.org/ildg/QCDml/ensemble1.3" targetNamespace="http://www.lqcd.org/ildg/QCDml/ensemble1.3" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:complexType name="arrayType">
		<xs:annotation>
			<xs:documentation>SciDAC array definition</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="elem" type="xs:anySimpleType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="action">
		<xs:annotation>
			<xs:documentation>The action XML chunk</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="gluon">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="generalGluonAction" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="quark" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="generalQuarkAction" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="boundaryConditionType">
		<xs:annotation>
			<xs:documentation>Enumeration of possible BCs</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="periodic"/>
			<xs:enumeration value="antiperiodic"/>
			<xs:enumeration value="dirichlet"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="representationType">
		<xs:annotation>
			<xs:documentation>Enumeration of possible representations of groups</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="fundamental"/>
			<xs:enumeration value="adjoint"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gaugeGroupType">
		<xs:annotation>
			<xs:documentation>Enumeration of possible gauge groups</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="SU(3)"/>
			<xs:enumeration value="SU(2)"/>
			<xs:enumeration value="SU(4)"/>
			<xs:enumeration value="SU(5)"/>
			<xs:enumeration value="SU(6)"/>
			<xs:enumeration value="U(1)"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="quarkField">
		<xs:annotation>
			<xs:documentation>Describes the quark field normalisation and boundary conditions</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="normalisation"/>
				<xs:element ref="boundaryCondition"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="gluonField">
		<xs:annotation>
			<xs:documentation>Contains the properties of the gluon field, e.g. gauge group and representation</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="gaugeGroup" type="gaugeGroupType"/>
				<xs:element name="representation" type="representationType"/>
				<xs:element ref="boundaryCondition"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="array" type="arrayType" abstract="true">
		<xs:annotation>
			<xs:documentation>The SciDAC array definition</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="numberOfFlavours" type="xs:integer">
		<xs:annotation>
			<xs:documentation>The number of flavours of quarks that have the action defined by the following couplings</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="boundaryCondition">
		<xs:annotation>
			<xs:documentation>An array of boundaryConditionType</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="elem" type="boundaryConditionType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="couplingsType">
		<xs:annotation>
			<xs:documentation>General complex type contains more than one coupling</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="nCouplings" type="couplingType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="couplingType">
		<xs:annotation>
			<xs:documentation>All couplings are of this type, essentially a double</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:complexType name="quarkCouplingsType">
		<xs:annotation>
			<xs:documentation>Contaings N couplings plus integer numberOfFlavours</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="numberOfFlavours"/>
			<xs:element name="nCouplings" type="couplingType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="generalQuarkActionType">
		<xs:annotation>
			<xs:documentation>Has the general properties of the quark action</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="glossary" type="xs:anyURI"/>
			<xs:element ref="quarkField"/>
			<xs:element ref="numberOfFlavours"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="generalQuarkAction" type="generalQuarkActionType" abstract="true">
		<xs:annotation>
			<xs:documentation>Has the general properties of the quark action, i.e. the number of quark flavours and the properties of the fields</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="generalGluonActionType">
		<xs:annotation>
			<xs:documentation>Has the general properties of the gluon action</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="glossary" type="xs:anyURI"/>
			<xs:element ref="gluonField"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="generalGluonAction" type="generalGluonActionType" abstract="true">
		<xs:annotation>
			<xs:documentation>Has the general properties of the gloun action, i.e. the gluon field and the glossary XML</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="iwasakiRGGluonActionType">
		<xs:complexContent>
			<xs:extension base="sixLinkGluonActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="iwasakiRGGluonAction" type="iwasakiRGGluonActionType" substitutionGroup="sixLinkGluonAction">
		<xs:annotation>
			<xs:documentation>This six-link action has three couplings</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="plaquetteGluonActionType">
		<xs:complexContent>
			<xs:extension base="generalGluonActionType">
				<xs:sequence>
					<xs:element name="beta" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="sixLinkGluonActionType" abstract="true">
		<xs:complexContent>
			<xs:extension base="plaquetteGluonActionType">
				<xs:sequence>
					<xs:element name="c0" type="couplingType"/>
					<xs:element name="c1" type="couplingType"/>
					<xs:element name="c2" type="couplingType"/>
					<xs:element name="c3" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="sixLinkGluonAction" type="sixLinkGluonActionType" abstract="true" substitutionGroup="plaquetteGluonAction">
		<xs:annotation>
			<xs:documentation>Abstract class of all six link gluon action. Doesn't fix the couplings. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="plaquetteGluonAction" type="plaquetteGluonActionType" substitutionGroup="generalGluonAction">
		<xs:annotation>
			<xs:documentation>The Wilson plaquette action, has a coupling beta</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="DBW2GluonActionType">
		<xs:complexContent>
			<xs:extension base="sixLinkGluonActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="DBW2GluonAction" type="DBW2GluonActionType" substitutionGroup="sixLinkGluonAction">
		<xs:annotation>
			<xs:documentation>DBW2 is a six link action with specific couplings</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="treelevelSymanzikGluonActionType">
		<xs:complexContent>
			<xs:extension base="sixLinkGluonActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="treelevelSymanzikGluonAction" type="treelevelSymanzikGluonActionType" substitutionGroup="sixLinkGluonAction">
		<xs:annotation>
			<xs:documentation>The treelevel Symanzik action is a six link action with specific couplings</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="LuescherWeiszGluonActionType">
		<xs:complexContent>
			<xs:extension base="sixLinkGluonActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="tpLuescherWeiszGluonActionType">
		<xs:complexContent>
			<xs:extension base="LuescherWeiszGluonActionType">
				<xs:sequence>
					<xs:element name="u0" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="LuescherWeiszGluonAction" type="LuescherWeiszGluonActionType" substitutionGroup="sixLinkGluonAction">
		<xs:annotation>
			<xs:documentation>The Luescher-Weisz gluon action is a six link action</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="tpLuescherWeiszGluonAction" type="tpLuescherWeiszGluonActionType" substitutionGroup="sixLinkGluonAction">
		<xs:annotation>
			<xs:documentation>The Luescher-Weisz gluon action with tadpole-improved coefficients is a six link action</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="wilsonQuarkActionType">
		<xs:complexContent>
			<xs:extension base="generalQuarkActionType">
				<xs:sequence>
					<xs:element name="kappa" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="wilsonQuarkAction" type="wilsonQuarkActionType" substitutionGroup="generalQuarkAction">
		<xs:annotation>
			<xs:documentation>The wilson quark action, has a coupling kappa</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="cloverQuarkActionType" abstract="true">
		<xs:complexContent>
			<xs:extension base="wilsonQuarkActionType">
				<xs:sequence>
					<xs:element name="cSW" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="tpCloverQuarkActionType">
		<xs:complexContent>
			<xs:extension base="cloverQuarkActionType">
				<xs:sequence>
					<xs:element name="u0" type="couplingType" minOccurs="1" maxOccurs="1" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="npCloverQuarkActionType">
		<xs:complexContent>
			<xs:extension base="cloverQuarkActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="cloverQuarkAction" type="cloverQuarkActionType" abstract="true" substitutionGroup="wilsonQuarkAction">
		<xs:annotation>
			<xs:documentation>The generic clover wilson action type. It is abstract because there are different definitions of CSW that are all clover actions</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="npCloverQuarkAction" type="npCloverQuarkActionType" substitutionGroup="cloverQuarkAction">
		<xs:annotation>
			<xs:documentation>The Clover Wilson quark action where the coefficient has been determined non-perturbatively</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="tpCloverQuarkAction" type="tpCloverQuarkActionType" substitutionGroup="cloverQuarkAction">
		<xs:annotation>
			<xs:documentation>The Clover Wilson quark action where the coefficient has been determined by tadpole improved perturbation theory</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="wilsonTmQuarkActionType">
		<xs:complexContent>
			<xs:extension base="wilsonQuarkActionType">
				<xs:sequence>
					<xs:element name="mu"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="wilsonTmQuarkAction" type="wilsonTmQuarkActionType" substitutionGroup="wilsonQuarkAction">
		<xs:annotation>
			<xs:documentation>The Wilson twisted mass quark action</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="KSQuarkActionType">
		<xs:complexContent>
			<xs:extension base="generalQuarkActionType">
				<xs:sequence>
					<xs:element name="mass" type="couplingType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="KSQuarkAction" type="KSQuarkActionType" abstract="true" substitutionGroup="generalQuarkAction">
		<xs:annotation>
			<xs:documentation>The basic KS action. Abstract</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="asqTadQuarkActionType">
		<xs:complexContent>
			<xs:extension base="KSQuarkActionType">
				<xs:sequence>
					<xs:element name="cNaik" type="couplingType"/>
					<xs:element name="c1Link" type="couplingType"/>
					<xs:element name="c3Link" type="couplingType"/>
					<xs:element name="c5LinkChair" type="couplingType"/>
					<xs:element name="c7LinkTwist" type="couplingType"/>
					<xs:element name="cLepage" type="couplingType"/>
					<xs:element name="u0" type="couplingType" minOccurs="1" maxOccurs="1"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="asqTadQuarkAction" type="asqTadQuarkActionType" substitutionGroup="KSQuarkAction">
		<xs:annotation>
			<xs:documentation>A specific improved KS quark action</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="generalOverlapQuarkAction" type="generalOverlapQuarkActionType" abstract="true" substitutionGroup="generalQuarkAction">
		<xs:annotation>
			<xs:documentation>The abstract Overlap quark operator</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="generalOverlapQuarkActionType">
		<xs:complexContent>
			<xs:extension base="generalQuarkActionType">
				<xs:sequence>
					<xs:element name="mass" type="couplingType">
						<xs:annotation>
							<xs:documentation>The quark mass for this operator</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="kernelMass" type="couplingType">
						<xs:annotation>
							<xs:documentation>The mass that goes into the kernel. Sometimes called the domain wall height. Sometimes given a negative sign convention. This is NOT enforced here.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="N5" type="couplingType">
						<xs:annotation>
							<xs:documentation>The degree of the approximation for the square root or equivalently the size of the fifth dimension</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="domainWallQuarkActionType">
		<xs:complexContent>
			<xs:extension base="generalOverlapQuarkActionType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="domainWallQuarkAction" type="domainWallQuarkActionType" substitutionGroup="generalOverlapQuarkAction">
		<xs:annotation>
			<xs:documentation>The domain Wall quark action. 4D is Wilson and the approx is tanh </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="size">
		<xs:annotation>
			<xs:documentation>The simulation size, for each dimension, as well as the order of the dimensioons</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="elem" type="dimensionType" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="dimensionType">
		<xs:annotation>
			<xs:documentation>The name of the dimension and its size</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" type="xs:Name"/>
			<xs:element name="length" type="xs:integer"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="observables">
		<xs:annotation>
			<xs:documentation>Observables calculated on configurations of this ensemble</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element name="elem" type="observableType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="observableType">
		<xs:annotation>
			<xs:documentation>Definition of observalbes</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" type="observableNameType"/>
			<xs:element name="val" type="xs:double"/>
			<xs:element name="err" type="xs:double"/>
			<xs:element name="glossary" type="xs:anyURI"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="observableNameType">
		<xs:annotation>
			<xs:documentation>Enumeration of possible observable names</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="ampi"/>
			<xs:enumeration value="amrho"/>
			<xs:enumeration value="mpi/mrho"/>
			<xs:enumeration value="r0/a"/>
			<xs:enumeration value="r1/a"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="physics">
		<xs:annotation>
			<xs:documentation>Contains the physics information</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="size"/>
				<xs:element ref="action"/>
				<xs:element ref="observables" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="markovChain">
		<xs:annotation>
			<xs:documentation>Also known as ensemble XML. below this level the XML is static across an ensemble of data.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="markovChainURI"/>
				<xs:element ref="management"/>
				<xs:element ref="physics"/>
				<xs:element name="algorithm" type="algorithmType"/>
				<xs:element name="cLibrary" type="xs:anyURI" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="data" type="xs:anyURI">
		<xs:annotation>
			<xs:documentation>The Logical file name on the grid of the data file itself</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="markovChainURI" type="xs:anyURI">
		<xs:annotation>
			<xs:documentation>The URI which identifies the of the ensemble</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="algorithmType">
		<xs:annotation>
			<xs:documentation>The type for algorithms</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" type="xs:Name"/>
			<xs:element name="glossary" type="xs:anyURI"/>
			<xs:element name="reference" type="xs:string"/>
			<xs:element name="exact" type="xs:boolean"/>
			<xs:element name="parameters" minOccurs="0">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="parameterType"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="parameterType">
		<xs:annotation>
			<xs:documentation>Contains a name and a value</xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element name="name" type="xs:Name"/>
			<xs:element name="value" type="xs:anySimpleType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="management">
		<xs:annotation>
			<xs:documentation>Contains information about who, what, and when the data was done</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="revisions" type="xs:nonNegativeInteger" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The number of times the entry for this ensemble has been revised</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="collaboration" type="xs:normalizedString"/>
				<xs:element name="projectName" type="xs:normalizedString"/>
				<xs:element name="ensembleLabel" type="xs:normalizedString" minOccurs="0"/>
				<xs:element name="reference" type="xs:normalizedString" minOccurs="0"/>
				<xs:element name="archiveHistory">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="elem" type="managementActionType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="managementActionType">
		<xs:annotation>
			<xs:documentation>Management action such as add to the catalogue, withdraw from the catalogue</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="revision" type="xs:nonNegativeInteger" minOccurs="0"/>
			<xs:element name="revisionAction" type="revisionActionType"/>
			<xs:element name="participant">
				<xs:annotation>
					<xs:documentation>Who made this revision</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="name" type="xs:string"/>
						<xs:element name="institution" type="xs:string"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="date" type="xs:dateTime"/>
			<xs:element name="comment" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="revisionActionType">
		<xs:annotation>
			<xs:documentation>An enumeration of revision actions</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="add">
				<xs:annotation>
					<xs:documentation>add a new ensemble</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="replace">
				<xs:annotation>
					<xs:documentation>replace ensemble document</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="remove">
				<xs:annotation>
					<xs:documentation>remove ensemble</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="negativeCouplingType">
		<xs:restriction base="couplingType">
			<xs:maxExclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

