<?xml version="1.0" encoding="UTF-8"?>
<!-- 
 Copyright 2008-2009 University of Padua, Italy
 
 Licensed 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="http://ims.dei.unipd.it/circo/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" targetNamespace="http://ims.dei.unipd.it/circo/" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1" xml:lang="en">
	<xs:annotation>
		<xs:documentation xml:lang="en">This schema provides elements and types for the CIRCO (Coordinated Information Retrieval Components Orchestration) framework.</xs:documentation>
		<xs:documentation xml:lang="en">Created on 2008-12-15</xs:documentation>
		<xs:documentation xml:lang="en">Last modified on 2009-05-05</xs:documentation>
		<xs:documentation xml:lang="en">Authored by Nicola Ferro (ferro@dei.unipd.it)</xs:documentation>
		<xs:documentation xml:lang="en">Copyright (c) 2008-2009 - Information Management Systems (IMS) Research Group (http://ims.dei.unipd.it/) - Department of Information Engineering (http://www.dei.unipd.it/) - University of Padua (http://www.unipd.it/)</xs:documentation>
	</xs:annotation>
	<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="http://dublincore.org/schemas/xmls/simpledc20021212.xsd">
		<xs:annotation>
			<xs:documentation xml:lang="en">Imports the schema for the Simple Dublin Core standard.</xs:documentation>
		</xs:annotation>
	</xs:import>
	<xs:element name="circo">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents the root node of any XML document concerning the CIRCO framework.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="metadata" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">Provides metadata information about the file at hand, according to the Simple Dublin Core metadata standard.</xs:documentation>
						<xs:documentation source="http://dublincore.org/" xml:lang="en">For more information about the Dublin Core Metadata Initiative (DCMI), please visit http://dublincore.org/.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:group ref="dc:elementsGroup"/>
					</xs:complexType>
				</xs:element>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation xml:lang="en">The elements that are allowed under the root of the document.</xs:documentation>
					</xs:annotation>
					<xs:element ref="actor"/>
					<xs:element ref="component"/>
					<xs:element ref="engine"/>
					<xs:element ref="error"/>
					<xs:element ref="feature"/>
					<xs:element ref="resource"/>
					<xs:element ref="result"/>
					<xs:element ref="result-list"/>
					<xs:element ref="stream"/>
					<xs:element ref="token"/>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="actor">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents an actor of the system, being it a human being or a computing devices.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="identifier" type="xs:token" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="password" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The password of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="full-name" type="xs:string">
				<xs:annotation>
					<xs:documentation xml:lang="en">The full name of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="e-mail" type="xs:string">
				<xs:annotation>
					<xs:documentation xml:lang="en">The e-mail of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="country" type="xs:language">
				<xs:annotation>
					<xs:documentation xml:lang="en">The country of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="language" type="xs:language">
				<xs:annotation>
					<xs:documentation xml:lang="en">The language of the actor.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="component">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a component of an information retrieval engine.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="actor" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The owner of this component.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the component.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="description" type="xs:string">
				<xs:annotation>
					<xs:documentation xml:lang="en">The description of this component.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="type" type="xs:token" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The type of the component, e.g.  a tokenizer or a stemmer.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="engine">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents an information retrieval engine.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="actor" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The actor responsible for this information retrieval engine.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="components" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The sequence of components chained by this information retrieval engine.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token" use="optional">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the information retrieval engine.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="description" type="xs:string">
				<xs:annotation>
					<xs:documentation xml:lang="en">The description of this information retrieval engine.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="error">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents an occurred error.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="details" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">Additional details which describe the occurred error.</xs:documentation>
					</xs:annotation>
					<xs:complexType mixed="true">
						<xs:complexContent mixed="true">
							<xs:restriction base="xs:anyType">
								<xs:sequence>
									<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="language" type="xs:language">
									<xs:annotation>
										<xs:documentation xml:lang="en">The language of the details.</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:restriction>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="diagnostic" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">Additional diagnostic and debug messages.</xs:documentation>
					</xs:annotation>
					<xs:complexType mixed="true">
						<xs:complexContent mixed="true">
							<xs:restriction base="xs:anyType">
								<xs:sequence>
									<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
							</xs:restriction>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the error.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="code" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">A numeric error code which identifies the type of error.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:hexBinary">
						<xs:enumeration value="CC1000">
							<xs:annotation>
								<xs:documentation xml:lang="en">An error internal to the CIRCO system has occurred.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC2000">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unsupported output format has been requested.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC2001">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unsupported input format has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC2002">
							<xs:annotation>
								<xs:documentation xml:lang="en">An invalid parameter (null, empty, missing, ...) has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC2003">
							<xs:annotation>
								<xs:documentation xml:lang="en">An XML document which does not comply with the CIRCO XSchema has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC3000">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an object without the required authentication has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC3001">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an object with insufficient access rights has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC4000">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unknown object has been requested.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC4001">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an invalid object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC4002">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to create an already existing object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="CC4003">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to refer to an inexistent object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="7FFFFFFF">
							<xs:annotation>
								<xs:documentation xml:lang="en">An error occurred while serializing document to XML.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="type" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">A label which describes the type of error.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:token">
						<xs:enumeration value="INTERNAL_ERROR">
							<xs:annotation>
								<xs:documentation xml:lang="en">An error internal to the CIRCO systems has occurred.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="UNSUPPORTED_OUTPUT_FORMAT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unsupported output format has been requested.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="UNSUPPORTED_INPUT_FORMAT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unsupported input format has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="INVALID_PARAMETER">
							<xs:annotation>
								<xs:documentation xml:lang="en">An invalid parameter (null, empty, missing, ...) has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="MALFORMED_XML">
							<xs:annotation>
								<xs:documentation xml:lang="en">An XML document which does not comply with the CIRCO XSchema has been provided.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="AUTHENTICATION_REQUIRED">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an object without the required authentication has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="INSUFFICIENT_ACCESS_RIGHTS">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an object with insufficient access rights has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="UNKNOWN_OBJECT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An unknown object has been requested.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="INVALID_OBJECT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to access an invalid object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="DUPLICATED_OBJECT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to create an already existing object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="NOT_FOUND_OBJECT">
							<xs:annotation>
								<xs:documentation xml:lang="en">An attempt to refer to an inexistent object has been performed.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
						<xs:enumeration value="XML_SERIALIZATION_ERROR">
							<xs:annotation>
								<xs:documentation xml:lang="en">An error occurred while serializing document to XML.</xs:documentation>
							</xs:annotation>
						</xs:enumeration>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="feature">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a feature of a token of an information resource.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="0">
				<xs:element ref="token">
					<xs:annotation>
						<xs:documentation xml:lang="en">The token described by this feature.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the feature.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="name" type="xs:token" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The name of the feature.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="type" type="xs:QName" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The type of the feature.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="description" type="xs:string">
				<xs:annotation>
					<xs:documentation xml:lang="en">The description of the feature.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="value" type="xs:anySimpleType" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The value of the feature.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="resource">
		<xs:annotation>
			<xs:documentation>Represents an information resource.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="stream" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The stream to which this information resource belongs.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="tokens" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The tokens that are comprised by this resource.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="token" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the resource.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="mime-type" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The MIME media type of this information resource.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="result">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a list of items retrieved in response to a query.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="query" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The string representation query which originated these results.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:any processContents="skip" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element ref="component" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The component which generated these results.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="items" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The items that constitute these results.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation xml:lang="en">An item of the results list.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="identifier" type="xs:token" use="required">
										<xs:annotation>
											<xs:documentation xml:lang="en">The identifier of the found object.</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="rank" type="xs:nonNegativeInteger" use="required">
										<xs:annotation>
											<xs:documentation xml:lang="en">The rank of the found object.</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="score" use="required">
										<xs:annotation>
											<xs:documentation xml:lang="en">The score of the found object.</xs:documentation>
											<xs:documentation xml:lang="en">In case of exact match queries, score is 1; in case of best match queries it is a value in the interval [0, 1].</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:double"/>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="iteration" type="xs:nonNegativeInteger">
										<xs:annotation>
											<xs:documentation xml:lang="en">The iteration, e.g. due to relevance feedback, in which this item has been retrieved.</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the results.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="query-identifier" type="xs:nonNegativeInteger" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The identifier of the query which originated these results.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="result-list">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a list of results in response to several queries.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="result" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the result list.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="stream">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a stream of information resources that are processed by a component.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="component" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The component that generated this stream.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="resources" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The information resources that are part of this stream.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the stream.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="chunked" type="xs:boolean" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">Indicates whether this stream is chunked or not.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="chunk-number" type="xs:nonNegativeInteger">
				<xs:annotation>
					<xs:documentation xml:lang="en">The number of this stream chunk in a chunked stream. The first chunk in a chunked stream starts from 0.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="last-chunk" type="xs:boolean">
				<xs:annotation>
					<xs:documentation xml:lang="en">Indicates whether this is the last chunk of a chunked stream.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="previous-chunk-digest" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The message digest of the previous chunk in a chunked stream.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="digest-type" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The algorithm used to compute the digest of the previous chunk.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="token">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a token of an information resource.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="resource" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The information resource to which this token belongs.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="features" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The features that describe the properties of this token.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="feature" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="trace" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="en">The tokens which have been processed to create this token.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="token" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="identifier" type="xs:token">
				<xs:annotation>
					<xs:documentation xml:lang="en">The unique identifier of the token.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="value" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation xml:lang="en">The string representation of this token.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
</xs:schema>
