<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by Gus Gassmann (Dalhousie University) -->
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Jun Ma (Northwestern University) -->
<!-- schema stage stamping: experiment -> draft -> proposal -> recommendation -> finalization -> version 1.0, 1.1 2.0, ... -->
<xs:schema xmlns="os.optimizationservices.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="os.optimizationservices.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!--OSrL.xsd: version 2.0 (The entire schema except for osrl->optimization->osal)-->
	<xs:include schemaLocation="OSgL.xsd"/>
	<xs:include schemaLocation="OSaL.xsd"/>
	<xs:element name="osrl" type="OSrL">
		<xs:annotation>
			<xs:documentation>version 2.0</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="OSrL">
		<xs:annotation>
			<xs:documentation>version 2.0, all descendant elements included except for osrl->optimization->osal</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="resultHeader" type="GeneralFileHeader" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.3</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="general" type="GeneralResult" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="system" type="SystemResult" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="service" type="ServiceResult" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0. Note: this is mainly the output from the OS service.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="job" type="JobResult" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="optimization" type="OptimizationResult" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0, except for the osal child element, which is under proposal. Note: this is mainly the output from the solver. </xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="GeneralResult">
		<xs:all>
			<xs:element name="generalStatus" type="GeneralStatus" minOccurs="0"/>
			<xs:element name="message" type="xs:string" minOccurs="0"/>
			<xs:element name="serviceURI" type="xs:string" minOccurs="0"/>
			<xs:element name="serviceName" type="xs:string" minOccurs="0"/>
			<xs:element name="instanceName" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Note: if present, should match the instance name in the instanceHeader of the input OSiL</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="jobID" type="xs:string" minOccurs="0"/>
			<xs:element name="solverInvoked" type="xs:string" minOccurs="0"/>
			<xs:element name="timeStamp" type="xs:dateTime" minOccurs="0"/>
			<xs:element name="otherResults" type="OtherResults" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
	<xs:complexType name="SystemResult">
		<xs:all>
			<xs:element name="systemInformation" type="xs:string" minOccurs="0"/>
			<xs:element name="availableDiskSpace" type="StorageCapacity" default="0.0" minOccurs="0"/>
			<xs:element name="availableMemory" type="StorageCapacity" default="0.0" minOccurs="0"/>
			<xs:element name="availableCPUSpeed" type="CPUSpeed" default="0.0" minOccurs="0"/>
			<xs:element name="availableCPUNumber" type="CPUNumber" default="1" minOccurs="0"/>
			<xs:element name="otherResults" type="OtherResults" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
	<xs:complexType name="ServiceResult">
		<xs:all>
			<xs:element name="currentState" default="unknown" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="busy"/>
						<xs:enumeration value="busyButAccepting"/>
						<xs:enumeration value="idle"/>
						<xs:enumeration value="idleButNotAccepting"/>
						<xs:enumeration value="noResponse"/>
						<xs:enumeration value="unknown"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="currentJobCount" type="xs:int" default="-1" minOccurs="0"/>
			<xs:element name="totalJobsSoFar" type="xs:int" default="-1" minOccurs="0"/>
			<xs:element name="timeServiceStarted" type="xs:dateTime" default="1970-01-01T00:00:00-00:00" minOccurs="0"/>
			<xs:element name="serviceUtilization" default="-1.0" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:double"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name="otherResults" type="OtherResults" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
	<xs:complexType name="JobResult">
		<xs:all>
			<xs:element name="status" default="finished" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="waiting"/>
						<xs:enumeration value="running"/>
						<xs:enumeration value="killed"/>
						<xs:enumeration value="finished"/>
						<xs:enumeration value="unknown"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="submitTime" type="xs:dateTime" default="1970-01-01T00:00:00-00:00" minOccurs="0"/>
			<xs:element name="scheduledStartTime" type="xs:dateTime" default="1970-01-01T00:00:00-00:00" minOccurs="0"/>
			<xs:element name="actualStartTime" type="xs:dateTime" default="1970-01-01T00:00:00-00:00" minOccurs="0"/>
			<xs:element name="endTime" type="xs:dateTime" default="1970-01-01T00:00:00-00:00" minOccurs="0"/>
			<xs:element name="timingInformation" type="TimingInformation" minOccurs="0"/>
			<xs:element name="usedDiskSpace" type="StorageCapacity" default="0.0" minOccurs="0"/>
			<xs:element name="usedMemory" type="StorageCapacity" default="0.0" minOccurs="0"/>
			<xs:element name="usedCPUSpeed" type="CPUSpeed" default="0.0" minOccurs="0"/>
			<xs:element name="usedCPUNumber" type="CPUNumber" default="1" minOccurs="0"/>
			<xs:element name="otherResults" type="OtherResults" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
	<xs:complexType name="TimingInformation">
		<xs:sequence>
			<xs:element name="time" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="TimeMeasurement"/>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="numberOfTimes" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="TimeMeasurement">
		<xs:simpleContent>
			<xs:extension base="TimeSpan">
				<xs:attribute name="type" use="optional" default="elapsedTime">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="cpuTime"/>
							<xs:enumeration value="elapsedTime"/>
							<xs:enumeration value="other"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="category" use="optional" default="total">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="total"/>
							<xs:enumeration value="input"/>
							<xs:enumeration value="preprocessing"/>
							<xs:enumeration value="optimization"/>
							<xs:enumeration value="postprocessing"/>
							<xs:enumeration value="output"/>
							<xs:enumeration value="other"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="description" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="OptimizationResult">
		<xs:annotation>
			<xs:documentation>numberOfVariables, numberOfObjectives and numberOfConstraints are the numbers in the original optimization instance and should match those in the corresponding OSiL. Use -1 if not applicable or necessary in appropriate scenarios.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="solution" type="OptimizationSolution" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>since version 2.0</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="otherSolverOutput" type="OtherSolverOutput" minOccurs="0">
				<xs:annotation>
					<xs:documentation>since version 2.0</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="osal" type="OSaL" minOccurs="0">
				<xs:annotation>
					<xs:documentation>proposal</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="numberOfSolutions" type="xs:nonNegativeInteger" use="required"/>
		<xs:attribute name="numberOfVariables" use="required">
			<xs:annotation>
				<xs:documentation>If present, must match number of variables in the original optimization instance</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:int">
					<xs:minInclusive value="-1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="numberOfObjectives" use="required">
			<xs:annotation>
				<xs:documentation>If present, must match number of objectives in the original optimization instance</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:int">
					<xs:minInclusive value="-1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="numberOfConstraints" use="required">
			<xs:annotation>
				<xs:documentation>If present, must match number of constraints in the original optimization instance</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:int">
					<xs:minInclusive value="-1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="OtherResults">
		<xs:sequence>
			<xs:element name="other" type="OtherResult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfOtherResults" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="OtherResult" mixed="true">
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="value" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="GeneralStatus">
		<xs:sequence>
			<xs:element name="substatus" type="GeneralSubstatus" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfSubstatuses" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="error"/>
					<xs:enumeration value="warning"/>
					<xs:enumeration value="normal"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="GeneralSubstatus">
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OptimizationSolution">
		<xs:sequence>
			<xs:element name="status" type="OptimizationSolutionStatus"/>
			<xs:element name="message" type="xs:string" minOccurs="0"/>
			<xs:element name="variables" type="VariableSolution" minOccurs="0"/>
			<xs:element name="objectives" type="ObjectiveSolution" minOccurs="0"/>
			<xs:element name="constraints" type="ConstraintSolution" minOccurs="0"/>
			<xs:element name="otherSolutionResults" type="OtherSolutionResults" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="targetObjectiveIdx" type="xs:negativeInteger" use="optional"/>
		<xs:attribute name="targetObjectiveName" type="xs:string" use="optional"/>
		<xs:attribute name="weightedObjectives" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:complexType name="OptimizationSolutionStatus">
		<xs:sequence>
			<xs:element name="substatus" type="OptimizationSolutionSubstatus" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfSubstatuses" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="unbounded"/>
					<xs:enumeration value="globallyOptimal"/>
					<xs:enumeration value="locallyOptimal"/>
					<xs:enumeration value="optimal"/>
					<xs:enumeration value="bestSoFar"/>
					<xs:enumeration value="feasible"/>
					<xs:enumeration value="infeasible"/>
					<xs:enumeration value="unsure"/>
					<xs:enumeration value="error"/>
					<xs:enumeration value="other"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OptimizationSolutionSubstatus">
		<xs:attribute name="type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="stoppedByLimit"/>
					<xs:enumeration value="stoppedByBounds"/>
					<xs:enumeration value="other"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="ObjectiveSolution">
		<xs:sequence>
			<xs:element name="values" type="ObjectiveValues" minOccurs="0"/>
			<xs:element name="basisStatus" type="BasisStatus" minOccurs="0"/>
			<xs:element name="other" type="OtherObjectiveResult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfOtherObjectiveResults" type="xs:nonNegativeInteger" use="optional" default="0"/>
	</xs:complexType>
	<xs:complexType name="ObjValue">
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="idx" type="xs:negativeInteger" use="optional" default="-1"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ObjectiveValues">
		<xs:sequence>
			<xs:element name="obj" type="ObjValue" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfObj" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="OtherObjectiveResult">
		<xs:choice>
			<xs:element name="obj" type="OtherObjResult" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfObj must be set in parent, and the number of entries must agree with numberOfObj</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="enumeration" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfEnumerations must be set in parent, and the number of entries must agree with numberOfEnumerations</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="IntVector">
							<xs:attribute name="value" type="xs:string" use="required"/>
							<xs:attribute name="description" type="xs:string" use="optional"/>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="numberOfObj" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="numberOfEnumerations" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="value" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
		<xs:attribute name="objType" type="xs:string" use="optional"/>
		<xs:attribute name="enumType" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OtherObjResult">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="idx" type="xs:negativeInteger" use="optional" default="-1"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="VariableSolution">
		<xs:sequence>
			<xs:element name="values" type="VariableValues" minOccurs="0"/>
			<xs:element name="valuesString" type="VariableValuesString" minOccurs="0"/>
			<xs:element name="basisStatus" type="BasisStatus" minOccurs="0"/>
			<xs:element name="other" type="OtherVariableResult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfOtherVariableResults" type="xs:nonNegativeInteger" use="optional" default="0"/>
	</xs:complexType>
	<xs:complexType name="VarValue">
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="idx" type="xs:nonNegativeInteger" use="required"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="VariableValues">
		<xs:sequence>
			<xs:element name="var" type="VarValue" default="0.0" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfVar" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="VarValueString">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="idx" type="xs:nonNegativeInteger" use="required"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="VariableValuesString">
		<xs:sequence>
			<xs:element name="var" type="VarValueString" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfVar" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="OtherVariableResult">
		<xs:choice>
			<xs:element name="var" type="OtherVarResult" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfVar must be set in parent, and the number of entries must agree with numberOfVar</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="enumeration" type="OtherOptionEnumeration" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfEnumerations must be set in parent, and the number of entries must agree with numberOfEnumerations</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:choice>
		<xs:attribute name="numberOfVar" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="numberOfEnumerations" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="value" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
		<xs:attribute name="varType" type="xs:string" use="optional"/>
		<xs:attribute name="enumType" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OtherVarResult">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="idx" type="xs:nonNegativeInteger" use="required"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ConstraintSolution">
		<xs:sequence>
			<xs:element name="dualValues" type="DualVariableValues" minOccurs="0"/>
			<xs:element name="basisStatus" type="BasisStatus" minOccurs="0"/>
			<xs:element name="other" type="OtherConstraintResult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfOtherConstraintResults" type="xs:nonNegativeInteger" use="optional" default="0"/>
	</xs:complexType>
	<xs:complexType name="DualVarValue">
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="idx" type="xs:nonNegativeInteger" use="required"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="DualVariableValues">
		<xs:sequence>
			<xs:element name="con" type="DualVarValue" default="0.0" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfCon" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="OtherConstraintResult">
		<xs:choice>
			<xs:element name="con" type="OtherConResult" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfCon must be set in parent, and the number of entries must agree with numberOfCon</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="enumeration" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>If present, numberOfEnumerations must be set in parent, and the number of entries must agree with numberOfEnumerations</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="IntVector">
							<xs:attribute name="value" type="xs:string" use="required"/>
							<xs:attribute name="description" type="xs:string" use="optional"/>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="numberOfCon" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="numberOfEnumerations" type="xs:nonNegativeInteger" use="optional" default="0"/>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="value" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
		<xs:attribute name="conType" type="xs:string" use="optional"/>
		<xs:attribute name="enumType" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OtherConResult">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="idx" type="xs:nonNegativeInteger" use="required"/>
				<xs:attribute name="name" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="OtherSolverOutput">
		<xs:sequence>
			<xs:element name="solverOutput" type="SolverOutput" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfSolverOutputs" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="SolverOutput">
		<xs:sequence>
			<xs:element name="item" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfItems" type="xs:nonNegativeInteger" use="required"/>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="category" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="OtherSolutionResults">
		<xs:sequence>
			<xs:element name="otherSolutionResult" type="OtherSolutionResult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="numberOfOtherSolutionResults" type="xs:nonNegativeInteger" use="required"/>
	</xs:complexType>
	<xs:complexType name="OtherSolutionResult">
		<xs:sequence>
			<xs:element name="item" type="xs:string" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>number must agree with numberOfItems</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="value" type="xs:string"/>
		<xs:attribute name="category" type="xs:string" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
		<xs:attribute name="numberOfItems" type="xs:nonNegativeInteger" default="0"/>
	</xs:complexType>
</xs:schema>
