<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by Andrew Tait (private) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="Project">
		<xs:annotation>
			<xs:documentation>Version 1.2.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:all>
				<xs:element name="CreatedAt" type="xs:dateTime"/>
				<xs:element name="Description" minOccurs="0">
					<xs:complexType>
						<xs:all>
							<xs:element name="Title" type="xs:string"/>
							<xs:element name="Summary" type="xs:string" minOccurs="0"/>
							<xs:element name="Contacts" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Contact" maxOccurs="unbounded">
											<xs:complexType>
												<xs:all>
													<xs:element name="Name" minOccurs="0">
														<xs:complexType>
															<xs:all>
																<xs:element name="FirstName" type="xs:string"/>
																<xs:element name="LastName" type="xs:string"/>
															</xs:all>
														</xs:complexType>
													</xs:element>
													<xs:element name="Organization" type="xs:string" minOccurs="0"/>
													<xs:element name="Email" type="xs:string"/>
													<xs:element name="Website" type="xs:string" minOccurs="0"/>
												</xs:all>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Application" minOccurs="0">
								<xs:complexType>
									<xs:all>
										<xs:element name="Name" type="xs:string"/>
										<xs:element name="Version" type="xs:token"/>
										<xs:element name="Manufacturer" type="xs:string"/>
										<xs:element name="Website" type="xs:string"/>
									</xs:all>
									<xs:attribute name="id" type="xs:token" use="required">
										<xs:annotation>
											<xs:documentation>GUID.</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:all>
					</xs:complexType>
				</xs:element>
				<xs:element name="Data">
					<xs:complexType>
						<xs:all>
							<xs:element name="Characteristics">
								<xs:complexType>
									<xs:all>
										<xs:element name="Variables">
											<xs:complexType>
												<xs:all>
													<xs:element name="ContinuousVariables">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="ContinuousVariable" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:all>
																			<xs:element name="Name" type="xs:string"/>
																			<xs:element name="CustomData" type="xs:anyType" minOccurs="0"/>
																		</xs:all>
																		<xs:attribute name="id" type="xs:ID" use="required"/>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Categories" minOccurs="0">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Category" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:all>
																			<xs:element name="Name" type="xs:string"/>
																			<xs:element name="Ranking">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="Item" maxOccurs="unbounded">
																							<xs:complexType>
																								<xs:all>
																									<xs:element name="Value" type="xs:string"/>
																									<xs:element name="Rank" type="xs:positiveInteger"/>
																								</xs:all>
																							</xs:complexType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="CustomData" type="xs:anyType" minOccurs="0"/>
																		</xs:all>
																		<xs:attribute name="id" type="xs:ID" use="required"/>
																		<xs:attribute name="kind">
																			<xs:simpleType>
																				<xs:restriction base="xs:token">
																					<xs:enumeration value="date"/>
																					<xs:enumeration value="number"/>
																					<xs:enumeration value="text"/>
																				</xs:restriction>
																			</xs:simpleType>
																		</xs:attribute>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:all>
											</xs:complexType>
										</xs:element>
										<xs:element name="CustomData" type="xs:anyType" minOccurs="0"/>
									</xs:all>
								</xs:complexType>
							</xs:element>
							<xs:element name="Units">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Unit" maxOccurs="unbounded">
											<xs:complexType>
												<xs:all>
													<xs:element name="Name" type="xs:string"/>
													<xs:element name="Values">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Value" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:simpleContent>
																			<xs:extension base="xs:string">
																				<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																			</xs:extension>
																		</xs:simpleContent>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Prices" minOccurs="0">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Price" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:simpleContent>
																			<xs:extension base="xs:double">
																				<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																			</xs:extension>
																		</xs:simpleContent>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:all>
												<xs:attribute name="id" type="xs:ID" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:all>
					</xs:complexType>
				</xs:element>
				<xs:element name="Models">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Model" maxOccurs="unbounded">
								<xs:complexType>
									<xs:all>
										<xs:element name="Kind">
											<xs:simpleType>
												<xs:restriction base="xs:token">
													<xs:enumeration value="additive"/>
													<xs:enumeration value="allocative"/>
													<xs:enumeration value="bcc"/>
													<xs:enumeration value="ccr"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="Name" type="xs:string"/>
										<xs:element name="Description" type="xs:string"/>
										<xs:element name="ActiveVariables">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="ActiveVariable" maxOccurs="unbounded">
														<xs:complexType>
															<xs:all>
																<xs:element name="Kind">
																	<xs:simpleType>
																		<xs:restriction base="xs:token">
																			<xs:enumeration value="input"/>
																			<xs:enumeration value="output"/>
																			<xs:enumeration value="uncontrolled input"/>
																			<xs:enumeration value="uncontrolled output"/>
																		</xs:restriction>
																	</xs:simpleType>
																</xs:element>
																<xs:element name="WeightRestrictions">
																	<xs:complexType>
																		<xs:all>
																			<xs:element name="MinimumWeight" default="0.0">
																				<xs:simpleType>
																					<xs:restriction base="xs:double">
																						<xs:maxInclusive value="1.0"/>
																						<xs:minInclusive value="0.0"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="MaximumWeight" default="1.0">
																				<xs:simpleType>
																					<xs:restriction base="xs:double">
																						<xs:minInclusive value="0.0"/>
																						<xs:maxInclusive value="1.0"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:all>
																	</xs:complexType>
																</xs:element>
																<xs:element name="Inverted" type="xs:boolean"/>
															</xs:all>
															<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="ActiveUnits">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="ActiveUnit" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="unitReference" type="xs:IDREF" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="Orientation">
											<xs:simpleType>
												<xs:restriction base="xs:token">
													<xs:enumeration value="input minimization"/>
													<xs:enumeration value="output maximization"/>
													<xs:enumeration value="none"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="ReturnsToScale" default="constant">
											<xs:simpleType>
												<xs:restriction base="xs:token">
													<xs:enumeration value="constant"/>
													<xs:enumeration value="decreasing"/>
													<xs:enumeration value="increasing"/>
													<xs:enumeration value="varying"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="EfficiencyThreshold" type="xs:double" default="1.0" minOccurs="0"/>
										<xs:element name="Result" minOccurs="0">
											<xs:complexType>
												<xs:all>
													<xs:element name="Status">
														<xs:simpleType>
															<xs:restriction base="xs:token">
																<xs:enumeration value="solved"/>
																<xs:enumeration value="unsolvable"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="Units">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Unit" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:all>
																			<xs:element name="Efficient" type="xs:boolean" minOccurs="0"/>
																			<xs:element name="Efficiency" type="xs:double" minOccurs="0"/>
																			<xs:element name="Benchmarks" minOccurs="0">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="Benchmark" maxOccurs="unbounded">
																							<xs:complexType>
																								<xs:all>
																									<xs:element name="VariableContributions">
																										<xs:complexType>
																											<xs:sequence>
																												<xs:element name="VariableContribution" maxOccurs="unbounded">
																													<xs:complexType>
																														<xs:simpleContent>
																															<xs:extension base="xs:double">
																																<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																															</xs:extension>
																														</xs:simpleContent>
																													</xs:complexType>
																												</xs:element>
																											</xs:sequence>
																										</xs:complexType>
																									</xs:element>
																								</xs:all>
																								<xs:attribute name="unitReference" type="xs:IDREF"/>
																							</xs:complexType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="Targets" minOccurs="0">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="Target" maxOccurs="unbounded">
																							<xs:complexType>
																								<xs:simpleContent>
																									<xs:extension base="xs:double">
																										<xs:attribute name="variableReference" type="xs:IDREF"/>
																									</xs:extension>
																								</xs:simpleContent>
																							</xs:complexType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="VariableContributions" minOccurs="0">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="VariableContribution" maxOccurs="unbounded">
																							<xs:complexType>
																								<xs:simpleContent>
																									<xs:extension base="xs:double">
																										<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																									</xs:extension>
																								</xs:simpleContent>
																							</xs:complexType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="Malmquist" minOccurs="0">
																				<xs:complexType>
																					<xs:all>
																						<xs:element name="Index"/>
																						<xs:element name="FrontierShift" minOccurs="0"/>
																					</xs:all>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="SolutionCoefficients" minOccurs="0">
																				<xs:complexType>
																					<xs:all>
																						<xs:element name="Lambdas">
																							<xs:complexType>
																								<xs:sequence>
																									<xs:element name="Lambda" maxOccurs="unbounded">
																										<xs:complexType>
																											<xs:simpleContent>
																												<xs:extension base="xs:double">
																													<xs:attribute name="unitReference" type="xs:IDREF"/>
																												</xs:extension>
																											</xs:simpleContent>
																										</xs:complexType>
																									</xs:element>
																								</xs:sequence>
																							</xs:complexType>
																						</xs:element>
																						<xs:element name="InterceptCoefficient" type="xs:double" minOccurs="0"/>
																						<xs:element name="VariableCoefficients" minOccurs="0">
																							<xs:complexType>
																								<xs:sequence>
																									<xs:element name="VariableCoefficient" maxOccurs="unbounded">
																										<xs:complexType>
																											<xs:simpleContent>
																												<xs:extension base="xs:double">
																													<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																												</xs:extension>
																											</xs:simpleContent>
																										</xs:complexType>
																									</xs:element>
																								</xs:sequence>
																							</xs:complexType>
																						</xs:element>
																						<xs:element name="SlackCoefficients" minOccurs="0">
																							<xs:complexType>
																								<xs:sequence>
																									<xs:element name="SlackCoefficient" maxOccurs="unbounded">
																										<xs:complexType>
																											<xs:simpleContent>
																												<xs:extension base="xs:double">
																													<xs:attribute name="variableReference" type="xs:IDREF" use="required"/>
																												</xs:extension>
																											</xs:simpleContent>
																										</xs:complexType>
																									</xs:element>
																								</xs:sequence>
																							</xs:complexType>
																						</xs:element>
																					</xs:all>
																				</xs:complexType>
																			</xs:element>
																		</xs:all>
																		<xs:attribute name="unitReference" type="xs:IDREF" use="required"/>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:all>
											</xs:complexType>
										</xs:element>
									</xs:all>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:all>
		</xs:complexType>
	</xs:element>
</xs:schema>

