<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://docs.oasis-open.org/pps/ns" targetNamespace="http://docs.oasis-open.org/pps/ns" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!-- Primitive Elements -->
	<xsd:complexType name="PrimitiveType">
		<xsd:sequence>
			<xsd:element ref="Compose" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Produce" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Consume" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Assign" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Relation" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Location" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Capacity" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Progress" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Spec" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Start" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="End" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Event" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Price" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Cost" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Priority" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Display" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Date" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string" use="required"/>
		<xsd:attribute name="key" type="xsd:long"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="parent" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="party" type="xsd:string"/>
		<xsd:attribute name="plan" type="xsd:string"/>
		<xsd:attribute name="order" type="xsd:string"/>
		<xsd:attribute name="item" type="xsd:string"/>
		<xsd:attribute name="resource" type="xsd:string"/>
		<xsd:attribute name="process" type="xsd:string"/>
		<xsd:attribute name="lot" type="xsd:string"/>
		<xsd:attribute name="task" type="xsd:string"/>
		<xsd:attribute name="operation" type="xsd:string"/>
	</xsd:complexType>
	<xsd:element name="Party" type="PrimitiveType"/>
	<xsd:element name="Plan" type="PrimitiveType"/>
	<xsd:element name="Order" type="PrimitiveType"/>
	<xsd:element name="Item" type="PrimitiveType"/>
	<xsd:element name="Resource" type="PrimitiveType"/>
	<xsd:element name="Process" type="PrimitiveType"/>
	<xsd:element name="Lot" type="PrimitiveType"/>
	<xsd:element name="Task" type="PrimitiveType"/>
	<xsd:element name="Operation" type="PrimitiveType"/>
	<!-- 5. Relational Elements -->
	<xsd:complexType name="RelationalType">
		<xsd:sequence>
			<xsd:element ref="Location" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Capacity" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Progress" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Spec" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Start" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="End" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Event" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Price" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Cost" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Priority" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Display" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Date" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Qty" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Char" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="key" type="xsd:long"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="apply" type="xsd:string"/>
		<xsd:attribute name="party" type="xsd:string"/>
		<xsd:attribute name="plan" type="xsd:string"/>
		<xsd:attribute name="order" type="xsd:string"/>
		<xsd:attribute name="item" type="xsd:string"/>
		<xsd:attribute name="resource" type="xsd:string"/>
		<xsd:attribute name="process" type="xsd:string"/>
		<xsd:attribute name="lot" type="xsd:string"/>
		<xsd:attribute name="task" type="xsd:string"/>
		<xsd:attribute name="operation" type="xsd:string"/>
	</xsd:complexType>
	<xsd:element name="Compose" type="RelationalType"/>
	<xsd:element name="Produce" type="RelationalType"/>
	<xsd:element name="Consume" type="RelationalType"/>
	<xsd:element name="Assign" type="RelationalType"/>
	<xsd:element name="Relation" type="RelationalType"/>
	<!-- Specific Elements -->
	<xsd:complexType name="SpecificType">
		<xsd:sequence>
			<xsd:element ref="Start" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="End" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Event" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Price" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Cost" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Priority" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Display" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Date" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Qty" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Char" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="key" type="xsd:long"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="apply" type="xsd:string"/>
	</xsd:complexType>
	<xsd:element name="Location" type="SpecificType"/>
	<xsd:element name="Capacity" type="SpecificType"/>
	<xsd:element name="Progress" type="SpecificType"/>
	<xsd:element name="Spec" type="SpecificType"/>
	<!-- Eventual Elements -->
	<xsd:complexType name="EventualType">
		<xsd:sequence>
			<xsd:element ref="Priority" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Display" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Date" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Qty" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Char" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="key" type="xsd:long"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="apply" type="xsd:string"/>
		<xsd:attribute name="condition" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>
	<xsd:element name="Start" type="EventualType"/>
	<xsd:element name="End" type="EventualType"/>
	<xsd:element name="Event" type="EventualType"/>
	<!-- Accounting Elements -->
	<xsd:complexType name="AccountingType">
		<xsd:sequence>
			<xsd:element ref="Priority" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Display" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Date" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Qty" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Char" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="key" type="xsd:long"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="apply" type="xsd:string"/>
		<xsd:attribute name="condition" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:decimal"/>
	</xsd:complexType>
	<xsd:element name="Price" type="AccountingType"/>
	<xsd:element name="Cost" type="AccountingType"/>
	<!-- Administrative Elements -->
	<xsd:complexType name="AdministrativeType">
		<xsd:sequence>
			<xsd:element ref="Qty" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Char" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="type" type="xsd:string"/>
		<xsd:attribute name="status" type="xsd:string"/>
		<xsd:attribute name="apply" type="xsd:string"/>
		<xsd:attribute name="condition" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>
	<xsd:element name="Priority" type="AdministrativeType"/>
	<xsd:element name="Display" type="AdministrativeType"/>
	<xsd:element name="Description" type="AdministrativeType"/>
	<xsd:element name="Author" type="AdministrativeType"/>
	<xsd:element name="Date" type="AdministrativeType"/>
	<!--  Data Elements -->
	<!--  qty -->
	<xsd:element name="Qty">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string"/>
			<xsd:attribute name="type" type="xsd:string"/>
			<xsd:attribute name="status" type="xsd:string"/>
			<xsd:attribute name="apply" type="xsd:string"/>
			<xsd:attribute name="condition" type="xsd:string"/>
			<xsd:attribute name="value" type="xsd:decimal"/>
			<xsd:attribute name="count" type="xsd:long"/>
			<xsd:attribute name="unit" type="xsd:string"/>
			<xsd:attribute name="base" type="xsd:decimal"/>
		</xsd:complexType>
	</xsd:element>
	<!--  char -->
	<xsd:element name="Char">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string"/>
			<xsd:attribute name="type" type="xsd:string"/>
			<xsd:attribute name="status" type="xsd:string"/>
			<xsd:attribute name="apply" type="xsd:string"/>
			<xsd:attribute name="condition" type="xsd:string"/>
			<xsd:attribute name="value" type="xsd:string"/>
			<xsd:attribute name="count" type="xsd:long"/>
			<xsd:attribute name="unit" type="xsd:string"/>
			<xsd:attribute name="base" type="xsd:string"/>
		</xsd:complexType>
	</xsd:element>
	<!--  time -->
	<xsd:element name="Time">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string"/>
			<xsd:attribute name="type" type="xsd:string"/>
			<xsd:attribute name="status" type="xsd:string"/>
			<xsd:attribute name="apply" type="xsd:string"/>
			<xsd:attribute name="condition" type="xsd:string"/>
			<xsd:attribute name="value" type="xsd:dateTime"/>
			<xsd:attribute name="count" type="xsd:long"/>
			<xsd:attribute name="unit" type="xsd:string"/>
			<xsd:attribute name="base" type="xsd:dateTime"/>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

