<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:omg.org/plm20/computational/query/generic" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:info="urn:omg.org/plm20/schemaInfo" xmlns:core="urn:omg.org/plm20/computational/core" elementFormDefault="qualified">
	<xsd:annotation>
		<xsd:documentation>
			Copyright © 2007, avanion
			Copyright © 2007, Bosch
			Copyright © 2007, Contact
			Copyright © 2007, DaimlerChrysler AG
			Copyright © 2007, IBM
			Copyright © 2007, IN GmbH
			Copyright © 2007, Magna Steyr
			Copyright © 2007, proficiency
			Copyright © 2007, PartMaster GmbH
			Copyright © 2007, PDTec GmbH
			Copyright © 2007, PROSTEP AG
			Copyright © 2007, SAP AG
			Copyright © 2007, T-Systems GmbH
			Copyright © 2007, UGS
			Copyright © 2007, valtech
			Copyright © 2007, Volkswagen AG
			Copyright © 2007, Prostep iViP Association
			Copyright © 2007, 88solutions
			Copyright © 2007, International Standard Organization

			LICENSES
			The companies listed above have granted to the Object Management Group, Inc. (OMG) a nonexclusive, royalty-free, paid up,
			worldwide license to copy and distribute this document and to modify this document and distribute copies of the modified version.
			Each of the copyright holders listed above has agreed that no person shall be deemed to have infringed the copyright in the
			included material of any such copyright holder by reason of having used the specification set forth herein or having conformed any
			computer software to the specification.
			Subject to all of the terms and conditions below, the owners of the copyright in this specification hereby grant you a fully-paid up,
			non-exclusive, nontransferable, perpetual, worldwide license (without the right to sublicense), to use this specification to create and
			distribute software and special purpose specifications that are based upon this specification, and to use, copy, and distribute this
			specification as provided under the Copyright Act; provided that: (1) both the copyright notice identified above and this permission
			notice appear on any copies of this specification; (2) the use of the specifications is for informational purposes and will not be
			copied or posted on any network computer or broadcast in any media and will not be otherwise resold or transferred for
			commercial purposes; and (3) no modifications are made to this specification. This limited permission automatically terminates
			without notice if you breach any of these terms or conditions. Upon termination, you will destroy immediately any copies of the
			specifications in your possession or control.
		</xsd:documentation>
	</xsd:annotation>
	<xsd:import namespace="urn:omg.org/plm20/computational/core"/>
	<xsd:element name="Location_path" type="Location_path"/>
	<xsd:complexType name="Location_path">
		<xsd:complexContent>
			<xsd:extension base="core:PLM_query">
				<xsd:sequence>
					<xsd:element name="First_step" type="Location_step" minOccurs="1" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Location_step" type="Location_step"/>
	<xsd:complexType name="Location_step">
		<xsd:sequence>
			<xsd:element name="Role_name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="Role_declaring_type_name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="Inverse" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="Related_object_predicate" type="Predicate" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Relating_object_predicate" type="Predicate" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Next_step" type="Location_step" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="Predicate" type="Predicate"/>
	<xsd:complexType name="Predicate" abstract="true">
		<xsd:sequence/>
	</xsd:complexType>
	<xsd:element name="Attribute_predicate" type="Attribute_predicate"/>
	<xsd:complexType name="Attribute_predicate" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Attribute_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="Attribute_value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Attribute_equals_predicate" type="Attribute_equals_predicate"/>
	<xsd:complexType name="Attribute_equals_predicate">
		<xsd:complexContent>
			<xsd:extension base="Attribute_predicate">
				<xsd:sequence/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Attribute_greater_than_predicate" type="Attribute_greater_than_predicate"/>
	<xsd:complexType name="Attribute_greater_than_predicate">
		<xsd:complexContent>
			<xsd:extension base="Attribute_predicate">
				<xsd:sequence/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Attribute_less_than_predicate" type="Attribute_less_than_predicate"/>
	<xsd:complexType name="Attribute_less_than_predicate">
		<xsd:complexContent>
			<xsd:extension base="Attribute_predicate">
				<xsd:sequence/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Attribute_pattern_predicate" type="Attribute_pattern_predicate"/>
	<xsd:complexType name="Attribute_pattern_predicate">
		<xsd:complexContent>
			<xsd:extension base="Attribute_predicate">
				<xsd:sequence/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Sort_predicate" type="Sort_predicate"/>
	<xsd:complexType name="Sort_predicate" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Attribute_name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="Maximum_number" type="xsd:int" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="Descending_order" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="Start_index" type="xsd:int" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="String_select_predicate" type="String_select_predicate"/>
	<xsd:complexType name="String_select_predicate">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="String_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="String_value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="String_language" type="xsd:language" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Identifier_predicate" type="Identifier_predicate"/>
	<xsd:complexType name="Identifier_predicate">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Identifier_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="Identifier_value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="Identifier_scope" type="xsd:string" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Type_predicate" type="Type_predicate"/>
	<xsd:complexType name="Type_predicate">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Type_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="Exact_type_match" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Relationship_predicate" type="Relationship_predicate"/>
	<xsd:complexType name="Relationship_predicate">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Role_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="Role_declaring_type_name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="Inverse" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="Related_object_predicate" type="Predicate" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="Relating_object_predicate" type="Predicate" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="Alternative_predicate" type="Alternative_predicate"/>
	<xsd:complexType name="Alternative_predicate">
		<xsd:complexContent>
			<xsd:extension base="Predicate">
				<xsd:sequence>
					<xsd:element name="Predicate" type="Predicate" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
</xsd:schema>
