<?xml version="1.0" encoding="UTF-8" ?>
<!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more 
	~ contributor license agreements. See the NOTICE file distributed with ~ 
	this work for additional information regarding copyright ownership. ~ The 
	ASF licenses this file to You under the Apache License, Version 2.0 ~ (the 
	"License"); you may not use this file except in compliance with ~ the License. 
	You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 
	~ ~ Unless required by applicable law or agreed to in writing, software ~ 
	distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT 
	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the 
	License for the specific language governing permissions and ~ limitations 
	under the License. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://pirk.apache.org" xmlns="http://pirk.apache.org"
	elementFormDefault="qualified">

	<xs:element name="schema">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="schemaName" type="xs:string">
					<xs:annotation>
						<xs:documentation>
							The name of the query schema.
							The name omits
							leading and trailing
							whitespace, and is case sensitive.
						</xs:documentation>
					</xs:annotation>
				</xs:element>

				<xs:element name="dataSchemaName" type="xs:string">
					<xs:annotation>
						<xs:documentation>
							The name of the data schema
							over which this query
							is run. The name omits
							leading and trailing whitespace, and is
							case
							sensitive.
						</xs:documentation>
					</xs:annotation>
				</xs:element>

				<xs:element name="selectorName" type="xs:string">
					<xs:annotation>
						<xs:documentation>The name of the name of the
							element in the data
							schema that will be the
							selector for this query.
						</xs:documentation>
					</xs:annotation>
				</xs:element>

				<xs:element name="elements">
					<xs:annotation>
						<xs:documentation>
							The set of element names to
							include in the query
							response.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>

							<xs:element name="name" type="xs:string" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The name of an
										element in the data schema to
										include in the query response.
									</xs:documentation>
								</xs:annotation>
							</xs:element>

						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="filter" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>
							The name of a class used to
							filter the query
							response data.
						</xs:documentation>
					</xs:annotation>
				</xs:element>

				<xs:element name="filterNames" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>
							The set of data element names
							over which the
							response filter is applied.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>

							<xs:element name="name" type="xs:string">
								<xs:annotation>
									<xs:documentation>
										The name of an
										element in the data schema over
										which to apply the filter.
									</xs:documentation>
								</xs:annotation>
							</xs:element>

						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="additional" minOccurs="0">
					<xs:annotation>
						<xs:documentation>
							Additional set of fields to include in the query
							schema.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>

							<xs:element name="field" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										Additional field to include in the query schema
									</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="key" type="xs:string">
											<xs:annotation>
												<xs:documentation>
													The key corresponding to the the field
												</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="value" type="xs:string">
											<xs:annotation>
												<xs:documentation>
													The value corresponding to the field
												</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>

						</xs:sequence>
					</xs:complexType>
				</xs:element>

			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>
