blob: ac424a69f20441fdc57f10fec071330faa6ca7b4 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://schema.ogf.org/urf/2003/09/urf"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:urf="http://schema.ogf.org/urf/2003/09/urf"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Usage Record Working Group XML Schema definition (GFD.98)
Copyright (C) Open Grid Forum (2006-2007). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are included
on all such copies and derivative works. However, this document itself
may not be modified in any way, such as by removing the copyright notice
or references to the OGF or other organizations, except as needed for
the purpose of developing Grid Recommendations in which case the
procedures for copyrights defined in the OGF Document process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the OGF or its successors or assignees.
This document and the information contained herein is provided on an "As
Is" basis and the OGF disclaims all warranties, express or implied,
including but not limited to any warranty that the use of the
information herein will not infringe any rights or any implied
warranties of merchantability or fitness for a particular purpose.
</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" />
Changed for Apache Taverna: imported locally instead to avoid w3.org "tar-pit"
-->
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmlds.xsd" />
<xsd:complexType name="UsageRecordType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" ref="urf:RecordIdentity" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:JobIdentity" />
<xsd:element maxOccurs="unbounded" minOccurs="0"
ref="urf:UserIdentity" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:JobName" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:Charge" />
<xsd:element maxOccurs="1" minOccurs="1" ref="urf:Status" />
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
The elements grouped together in this choice may be represented
within a usage record multiple times. Each of these appearances
must be differentiated by the metric and/or type associated with
the element.
</xsd:documentation>
</xsd:annotation>
<xsd:element ref="urf:Disk" />
<xsd:element ref="urf:Memory" />
<xsd:element ref="urf:Swap" />
<xsd:element ref="urf:Network" />
<xsd:element ref="urf:TimeDuration" />
<xsd:element ref="urf:TimeInstant" />
<xsd:element ref="urf:ServiceLevel" />
</xsd:choice>
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:WallDuration" />
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:element maxOccurs="2" minOccurs="0" ref="urf:CpuDuration" />
</xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:NodeCount" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:Processors" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:EndTime" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:StartTime" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:MachineName" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:SubmitHost" />
<xsd:element maxOccurs="1" minOccurs="0" ref="urf:Queue" />
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0"
ref="urf:ProjectName" />
</xsd:sequence>
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:Host" />
</xsd:sequence>
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:element ref="urf:PhaseResource" />
<xsd:element ref="urf:VolumeResource" />
<xsd:element ref="urf:Resource" />
<xsd:element ref="urf:ConsumableResource" />
</xsd:choice>
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element abstract="true" name="Usage" type="urf:UsageRecordType" />
<xsd:element name="UsageRecord" substitutionGroup="urf:Usage"
type="urf:UsageRecordType" />
<xsd:element name="JobUsageRecord" substitutionGroup="urf:Usage">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:UsageRecordType" />
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="UsageRecords">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:Usage" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--
Common properties that may be measured with several different metrics
within the same usage record
-->
<xsd:element name="Network">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf: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="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" 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="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Swap">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" 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="urf:description" use="optional" />
<xsd:attribute default="total" ref="urf:metric" 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="urf:description" use="optional" />
<xsd:attribute ref="urf:metric" use="optional" />
<xsd:attribute name="consumptionRate" type="xsd:float"
use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="TimeDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="TimeInstant">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceLevel">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!--
This element should appear at most twice within a usage record, with
differing values for usageType for each appearance
-->
<xsd:element name="CpuDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute name="usageType">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="user" />
<xsd:enumeration value="system" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!--
These common properties should appear at most once within a usage
record, rather that at most once per metric per usage record
-->
<xsd:element name="WallDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:description" 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="urf: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="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="MachineName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="SubmitHost">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Host">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf: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="urf: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="urf: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="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Status">
<xsd:annotation>
<xsd:documentation>
Minimum required set =
{Aborted, Completed, Failed, Held, Queued, Started, Suspended}
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Charge">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:float">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute ref="urf:unit" use="optional" />
<xsd:attribute name="formula" type="xsd:string" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!-- Identity elements -->
<xsd:element name="JobIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" name="GlobalJobId"
type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="0" name="LocalJobId"
type="xsd:string" />
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="ProcessId"
type="xsd:string" />
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UserIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" name="LocalUserId"
type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="0" name="GlobalUserName"
type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="0" ref="ds:KeyInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RecordIdentity">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:element ref="ds:KeyInfo" />
</xsd:sequence>
<xsd:attribute name="recordId" type="xsd:token" use="required" />
<xsd:attribute name="createTime" type="xsd:dateTime" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- Extensibility Framework -->
<xsd:element name="Resource" type="urf:ResourceType" />
<xsd:element name="ConsumableResource" type="urf:ConsumableResourceType" />
<xsd:element name="PhaseResource">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:ConsumableResourceType">
<xsd:attribute ref="urf:phaseUnit" use="optional" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="VolumeResource">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:ConsumableResourceType">
<xsd:attribute ref="urf:storageUnit" 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="xsd:float">
<xsd:attribute name="units" type="xsd:string" use="optional" />
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Create a generic resource type -->
<xsd:complexType name="ResourceType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Global Attribute Definitions -->
<xsd:attribute name="description" type="xsd:string" />
<!-- Units of measure attribute definitions -->
<xsd:attribute name="unit" type="xsd:token" />
<xsd:attribute name="storageUnit">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="b" />
<xsd:enumeration value="B" />
<xsd:enumeration value="KB" />
<xsd:enumeration value="MB" />
<xsd:enumeration value="GB" />
<xsd:enumeration value="PB" />
<xsd:enumeration value="EB" />
<xsd:enumeration value="Kb" />
<xsd:enumeration value="Mb" />
<xsd:enumeration value="Gb" />
<xsd:enumeration value="Pb" />
<xsd:enumeration value="Eb" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="phaseUnit" type="xsd:duration" />
<xsd:attributeGroup name="intervallicVolume">
<xsd:attribute ref="urf:storageUnit" use="optional" />
<xsd:attribute ref="urf:phaseUnit" use="optional" />
</xsd:attributeGroup>
<!-- End units attributes -->
<xsd:attribute name="metric" type="xsd:token" />
<xsd:attribute name="type" type="xsd:token" />
<!-- Simple type definitions used to constrain values of attributes -->
<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>