<?xml version='1.0' encoding='UTF-8'?>
<xsd:schema elementFormDefault='qualified' targetNamespace='urn:omg.org/plm20/computational/query/generic' xmlns='urn:omg.org/plm20/computational/query/generic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:info='urn:omg.org/plm20/schemaInfo' xmlns:core='urn:omg.org/plm20/computational/core'>
	<xsd:import namespace='urn:omg.org/plm20/computational/core' schemaLocation='ComputationalCore.xsd'></xsd:import>
	<xsd:annotation>
		<xsd:documentation>
			--016 add complexType Sort_predicate--
			--034 modularize xml schemas--
		</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name='Location_path'>
		<xsd:complexContent>
			<xsd:extension base='core:PLM_query'>
				<xsd:sequence>
					<xsd:element name='First_step' type='Location_step'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Location_step'>
		<xsd:sequence>
			<xsd:element minOccurs='0' name='Role_name' type='xsd:string'></xsd:element>
			<xsd:element minOccurs='0' name='Role_declaring_type_name' type='xsd:string'></xsd:element>
			<xsd:element minOccurs='0' name='Inverse' type='xsd:boolean'></xsd:element>
			<xsd:element maxOccurs='unbounded' minOccurs='0' name='Related_object_predicate' type='Predicate'></xsd:element>
			<xsd:element maxOccurs='unbounded' minOccurs='0' name='Relating_object_predicate' type='Predicate'></xsd:element>
			<xsd:element maxOccurs='unbounded' minOccurs='0' name='Next_step' type='Location_step'></xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType abstract='true' name='Predicate'></xsd:complexType>
	<xsd:complexType abstract='true' name='Attribute_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element name='Attribute_name' type='xsd:string'></xsd:element>
					<xsd:element name='Attribute_value' type='xsd:string'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Attribute_equals_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Attribute_predicate'></xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Attribute_greater_than_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Attribute_predicate'></xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Attribute_less_than_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Attribute_predicate'></xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Attribute_pattern_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Attribute_predicate'></xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType abstract='true' name='Sort_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element minOccurs='0' name='Attribute_name' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='Maximum_number' type='xsd:int'></xsd:element>
					<xsd:element minOccurs='0' name='Descending_order' type='xsd:boolean'></xsd:element>
					<xsd:element minOccurs='0' name='Start_index' type='xsd:int'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='String_select_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element name='String_name' type='xsd:string'></xsd:element>
					<xsd:element name='String_value' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='String_language' type='xsd:language'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Identifier_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element name='Identifier_name' type='xsd:string'></xsd:element>
					<xsd:element name='Identifier_value' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='Identifier_scope' type='xsd:string'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Type_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element name='Type_name' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='Exact_type_match' type='xsd:boolean'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Relationship_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element name='Role_name' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='Role_declaring_type_name' type='xsd:string'></xsd:element>
					<xsd:element minOccurs='0' name='Inverse' type='xsd:boolean'></xsd:element>
					<xsd:element maxOccurs='unbounded' minOccurs='0' name='Related_object_predicate' type='Predicate'></xsd:element>
					<xsd:element maxOccurs='unbounded' minOccurs='0' name='Relating_object_predicate' type='Predicate'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name='Alternative_predicate'>
		<xsd:complexContent>
			<xsd:extension base='Predicate'>
				<xsd:sequence>
					<xsd:element maxOccurs='unbounded' minOccurs='0' name='Predicate' type='Predicate'></xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
</xsd:schema>
