<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified"
	targetNamespace="http://www.gridforum.org/2003/ur-wg"
	xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:urwg="http://www.gridforum.org/2003/ur-wg" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:annotation>
		<xsd:documentation xml:lang="en">Usage Record Working Group XML Schema reference specification</xsd:documentation>
	</xsd:annotation>
	<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<xsd:complexType name="UsageRecordType">
		<xsd:sequence>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:jobIdentity"/>
			<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urwg:userIdentity"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:JobName"/>
			<xsd:choice maxOccurs="unbounded" minOccurs="0">
				<xsd:element ref="urwg:Disk"/>
				<xsd:element ref="urwg:Memory"/>
				<xsd:element ref="urwg:Network"/>
			</xsd:choice>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:Walltime"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:CpuTime"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:NodeCount"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:Processors"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:EndTime"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:StartTime"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:MachineName"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:SubmitHost"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:Queue"/>
			<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urwg:ProjectName"/>
			<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urwg:Host"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:Charge"/>
			<xsd:element maxOccurs="1" minOccurs="0" ref="urwg:Status"/>
			<xsd:choice maxOccurs="unbounded" minOccurs="0">
				<xsd:element ref="urwg:PhaseResource"/>
				<xsd:element ref="urwg:VolumeResource"/>
				<xsd:element name="Resource" type="urwg:ResourceType"/>
				<xsd:element name="ConsumableResource" type="urwg:ConsumableResourceType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="UsageRecord" type="urwg:UsageRecordType"/>
	<xsd:element name="JobUsageRecord">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="urwg:UsageRecordType">
					<xsd:sequence maxOccurs="1" minOccurs="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Network">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="MB" ref="urwg:volumeUnit" use="optional"/>
					<xsd:attribute default="total" ref="urwg:metric" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Disk">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="MB" ref="urwg:volumeUnit" use="optional"/>
					<xsd:attribute default="total" ref="urwg:metric" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Memory">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="MB" ref="urwg:volumeUnit" use="optional"/>
					<xsd:attribute default="total" ref="urwg:metric" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Walltime">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="seconds" ref="urwg:phaseUnit" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CpuTime">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="seconds" ref="urwg:phaseUnit" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NodeCount">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Processors">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:positiveInteger">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute name="consumptionRate" type="xsd:float" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="EndTime">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:dateTime">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="StartTime">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:dateTime">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="MachineName">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="urwg:domainNameType">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="SubmitHost">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="urwg:domainNameType">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Host">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="urwg:domainNameType">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute default="false" name="primary" type="xsd:boolean"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Queue">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:string">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="JobName">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:string">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ProjectName">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:string">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Status">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:integer">
					<xsd:attribute ref="urwg:description" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Charge">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsd:integer">
					<xsd:attribute ref="urwg:description" use="optional"/>
					<xsd:attribute name="units" type="xsd:string" use="optional"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="jobIdentity">
		<xsd:complexType>
			<xsd:choice maxOccurs="2" minOccurs="1">
				<xsd:element name="LocalJobID" type="xsd:string"/>
				<xsd:element name="GlobalJobID" type="xsd:string"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="userIdentity">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element maxOccurs="1" minOccurs="0" ref="ds:KeyInfo"/>
				<xsd:element maxOccurs="1" minOccurs="0" name="localUserid" type="xsd:string"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!--Extensibility Framework -->
	<xsd:element name="PhaseResource">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="urwg:ConsumableResourceType">
					<xsd:attribute ref="urwg:phaseUnit" use="optional"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="VolumeResource">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="urwg:ConsumableResourceType">
					<xsd:attribute ref="urwg:volumeUnit" use="optional"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--Create a generic consumable resource.  Carries the units attribute -->
	<xsd:complexType name="ConsumableResourceType">
		<xsd:simpleContent>
			<xsd:extension base="urwg:ResourceType">
				<xsd:attribute name="units" type="xsd:string"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<!-- Create a generic resource type-->
	<xsd:complexType name="ResourceType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:integer">
				<xsd:attribute ref="urwg:description" use="optional"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:attribute name="description" type="xsd:string"/>
	<!--Units attribute definitions-->
	<xsd:attribute name="volumeUnit">
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:enumeration value="B"/>
				<xsd:enumeration value="KB"/>
				<xsd:enumeration value="MB"/>
				<xsd:enumeration value="GB"/>
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:attribute>
	<xsd:attribute name="phaseUnit">
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:enumeration value="seconds"/>
				<xsd:enumeration value="minutes"/>
				<xsd:enumeration value="hours"/>
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:attribute>
	<!--End units attributes -->
	<xsd:attribute name="metric" type="xsd:string"/>
	<xsd:simpleType name="domainNameType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="([a-zA-Z0-9][a-zA-Z0-9'\-']*[a-zA-Z0-9]\.)*([a-zA-Z0-9][a-zA-Z0-9'\-']*[a-zA-Z0-9])?"/>
			<xsd:maxLength value="255"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
