<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.plcs.org/Part" xmlns:plcstypes="http://www.plcs.org/PLMServices/Types" xmlns:systypes="http://www.plcs.org/System/Types" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.plcs.org/Part" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.plcs.org/System/Types" schemaLocation="..\..\..\ws\xsd\System.xsd"/>
	<xs:import namespace="http://www.plcs.org/PLMServices/Types" schemaLocation="..\..\..\ws\xsd\types.xsd"/>
	<xs:element name="CreatePart">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part" type="plcstypes:Part"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreatePartResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Part is created. The created Part instance might be different from the requested Part.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part" type="plcstypes:Part"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="CreatePart_version">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreatePart_versionResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Part_version is created. The created Part_version instance might be different from the requested Part_version.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="UpdatePart_version">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdatePart_versionResponse">
		<xs:annotation>
			<xs:documentation></xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="CreateNext_assembly_usage">
		<xs:annotation>
			<xs:documentation>This message is used to either create an item instance.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="item_instance" type="plcstypes:Next_assembly_usage"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateNext_assembly_usageResponse">
		<xs:complexType>
			<xs:sequence>
				<!--<xs:element name="part" type="plcstypes:Part"/>-->
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetAssemblyStructure">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetAssemblyStructureResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when retreiving the assembly structure given the parent part. Each assembly component relationship reference the child by the attribute related. If the given number of breakdown is more than the first level, then each subsequent assembly component relationship attribute relating will be either set to null, or by a placeholder PLM object only containing a reference to the boid of the parent. This is to avoid cyclic references (where a parent Part is also a child Part in other levels in the assembly structure).</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="plcstypes:Assembly_component_relationship" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="RemoveNext_assembly_usage">
		<xs:annotation>
			<xs:documentation>This message is used to remove an item instance.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="item_instance" type="plcstypes:Next_assembly_usage"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="RemoveNext_assembly_usageResponse">
		<xs:complexType>
			<xs:sequence>
				<!--<xs:element name="part" type="plcstypes:Part"/>-->
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdateNext_assembly_usage">
		<xs:annotation>
			<xs:documentation>This message is used to either update an existing assembly relationship.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="item_instance" type="plcstypes:Next_assembly_usage"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdateNext_assembly_usageResponse">
		<xs:complexType>
			<xs:sequence>
				<!--<xs:element name="part" type="plcstypes:Part"/>-->
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdatePart">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part" type="plcstypes:Part"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdatePartResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Part is updated. The created Part instance might be different from the requested Part.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part" type="plcstypes:Part"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="WhereUsed">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="part_version" type="plcstypes:Part_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="WhereUsedResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when retreiving the assembly structure given the child part. Each assembly component relationship reference the parent by the attribute relating. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="plcstypes:Assembly_component_relationship" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
