<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.utmc.uk.com/utmc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:siri="http://www.siri.org.uk/siri" targetNamespace="http://www.utmc.uk.com/utmc" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0" id="utmc_filter_traffic_alert">
	<!-- ===Dependencies========================================================= -->
	<xsd:include schemaLocation="utmc_traffic_event_alert-v1.0.xsd"/>
	<xsd:include schemaLocation="../utmcsvc/utmc_filter_traffic_event-v1.0.xsd"/>
	<xsd:include schemaLocation="../utmc/utmc_all_objects-v1.0.xsd"/>
	<!-- ===eGIF/GovTalk Documentation ======================================= -->
	<xsd:annotation>
		<xsd:appinfo>
			<Metadata xmlns="http://www.govtalk.gov.uk/CM/gms-xs">
				<Aggregation>main schema</Aggregation>
				<Audience>e-service developers</Audience>
				<Contributor>Freeflow Project. UTMC XML working Group. See main package headers </Contributor>
				<Coverage>United Kingdom</Coverage>
				<Creator>Drafted for version 1.0   FREEFLOW. Nick Knowles Kizoom mailto:schemer@/www.utmc.uk.com/</Creator>
				<Date>
					<Created>2009-04-01</Created>
					<!-- Documentation headers added -->
				</Date>
				<Description>
					<p>UtmcXml is an XML representation of the Urban Traffic Management Control model that can be used to exchange data objects between UTMC databases and other services.</p>. 
					<p>This subschema describes the   UTMC  Alert filter. It can be used to specify which Instances of Alerts are to be returned.  
 
					</p>
				</Description>
				<Format>
					<MediaType>text/xml</MediaType>
					<Syntax>http://www.w3.org/2001/XMLSchema</Syntax>
					<Description>XML schema, W3C Recommendation 2001</Description>
				</Format>
				<Identifier>{http://www.utmc.uk.com/schemas/1.0/utmcsvc/}utmc_filter_traffic_alert-v1.0.xsd</Identifier>
				<Language>[ISO 639-2/B] ENG</Language>
				<Publisher>Kizoom, 109-123 Clifton Street, London EC4A 4LD </Publisher>
				<Relation>
					<Requires>http://www.utmc.uk.com/schemas/1.0/utmc_freeflow/utmc_traffic_event_alert-v1.0.xsd</Requires>
					<Requires>http://www.utmc.uk.com/schemas/1.0/utmcsvc/utmc_filter_traffic_event-v1.0.xsd</Requires>
					<Requires>http://www.utmc.uk.com/schemas/1.0/utmc/utmc_all_objects-v1.0.xsd</Requires>
				</Relation>
				<Rights>Unclassified
                            <Copyright>Freeflow, UTMC  2009</Copyright>
				</Rights>
				<Source>
					<p>Derived from the UTMC specification and SIRI standards.
							<ul>
							<li>UTMC Data Object specification: ts004.003annexdapr07.xls</li>
							<li>UTMC UML specification: ts004-004a-annexd-sep08.pdf  - </li>
						</ul>
					</p>
				</Source>
				<Status>Version 1.0 Draft for approval</Status>
				<Subject>
					<Category>Arts, recreation and travel, Tourism, Travel (tourism), Transport,
Public transport, Bus services, Coach services, Bus stops and stations,
Business and industry, Transport, 
Roads and road transport
</Category>
					<Project>Freeflow UtmcXml Interface</Project>
				</Subject>
				<Title>UTMC XML schema.   Subschema  describing  the  UTMC  Alert Filter</Title>
				<Type>Standard</Type>
			</Metadata>
		</xsd:appinfo>
	</xsd:annotation>
	<!-- ======================================================================= -->
	<xsd:element name="AlertRequestFilter" substitutionGroup="AbstractDataObjectRequestFilter">
		<xsd:annotation>
			<xsd:documentation>Alert Filter. Freeflow Extension. Return alerts that match these values.  Values are ANDed  </xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="AbstractRequestFilterStructure">
					<xsd:sequence>
						<xsd:element name="topics" type="AlertRequestTopicsStructure">
							<xsd:annotation>
								<xsd:documentation>Values to use select Alerts.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="policies" type="AlertRequestPolicyStructure" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>Policies to apply when fetching data specified by topics</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!-- ======================================================================= -->
	<xsd:complexType name="AlertRequestTopicsStructure">
		<xsd:annotation>
			<xsd:documentation>Type for an Alert  Filter Topic.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="TrafficEventRequestTopicsStructure">
				<xsd:sequence>
					<xsd:group ref="AlertRequestTopicGroup">
						<xsd:annotation>
							<xsd:documentation>Parameters that specify the content to be returned. Only Devices that match these criteria will be included</xsd:documentation>
						</xsd:annotation>
					</xsd:group>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:group name="AlertRequestTopicGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert  Filter Topics.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="alertsFor" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Return only alerts marked as affecting the  specified objects.  </xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:choice>
						<xsd:element ref="AllObjectInstances"/>
						<xsd:element ref="DataObjectRef" maxOccurs="unbounded"/>
					</xsd:choice>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="publishingActions" type="PublishingActionsEnum" default="all" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Return alerts with the matching publishing action.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="AlertRequestPolicyStructure">
		<xsd:annotation>
			<xsd:documentation>Type for an Alert Filter Policy</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractRequestPolicyStructure">
				<xsd:sequence>
					<xsd:group ref="AlertRequestPolicyGroup"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:group name="AlertRequestPolicyGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert Filter Policy.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="DataRequestType" type="AlertRequestDetailEnum" default="elements" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Types of detail to include in response. Default is elements means. Currency is specified separately</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="AlertTopicGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert Filter Topics.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:choice/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="AlertAreaGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert Filter Topic Areas.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="zonesAffected" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Include Traffic Events for specified Zones.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element ref="NetworkZoneRef" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="transportLinks" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Include Traffic events  associated with specified Links.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element ref="TransportLinkRef" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="AlertTemporalGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert Filter Topic Temporal.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="CreatedBetween" type="OpenTimestampRangeStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Only Include traffic events created within this range</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ModifiedBetween" type="OpenTimestampRangeStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Only Include traffic events modified within this range</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:simpleType name="AlertRequestDetailEnum">
		<xsd:annotation>
			<xsd:documentation>Detail Levels for Alert Request Filter. </xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="all"/>
			<xsd:enumeration value="elements">
				<xsd:annotation>
					<xsd:documentation>Return  minimum and other available  basic details for each Stop Visit. Do not include data on times at next stop or destination.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="other"/>
			<xsd:enumeration value="static">
				<xsd:annotation>
					<xsd:documentation>Return all basic  data, and also origin via points and  destination.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="PublishingActionsEnum">
		<xsd:annotation>
			<xsd:documentation>Detail Levels for Alert Request Filter Publishing.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="web"/>
			<xsd:enumeration value="alerts">
				<xsd:annotation>
					<xsd:documentation>Return  minimum and other available  basic details for each Stop Visit. Do not include data on times at next stop or destination.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="userAction"/>
			<xsd:enumeration value="mobile">
				<xsd:annotation>
					<xsd:documentation>Return all basic  data, and also origin via points and  destination.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="email"/>
			<xsd:enumeration value="all"/>
			<xsd:enumeration value="sms"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<xsd:element name="AlertSubscriptionFilter" substitutionGroup="AbstractSubscriptionFilter">
		<xsd:annotation>
			<xsd:documentation>Alert Subscription Filter. Freeflow Extension.   Specifies criteria to create a subscription that returns matching alerts.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="AbstractSubscriptionFilterStructure">
					<xsd:sequence>
						<xsd:element ref="AlertRequestFilter">
							<xsd:annotation>
								<xsd:documentation>Alert request . Freeflow Extension.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="SubscriptionPolicy" type="AbstractSubscriptionPolicyStructure" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>Policy to use when processing Alert Subscriptions </xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="AlertSubscriptionFilterStructure">
		<xsd:annotation>
			<xsd:documentation>Type for Alert Subscription filter.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractSubscriptionFilterStructure">
				<xsd:sequence>
					<xsd:group ref="AlertSubscriptionGroup"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:group name="AlertSubscriptionGroup">
		<xsd:annotation>
			<xsd:documentation>Elements for Alert  subscription  Filter.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element ref="AlertRequestFilter"/>
		</xsd:sequence>
	</xsd:group>
	<!-- ===All elements=============================================================== -->
	<xsd:element name="AllAlertInstances" type="AllObjectInstancesType" substitutionGroup="AllTrafficEventInstances">
		<xsd:annotation>
			<xsd:documentation>All Alerts. Freeflow Extension.</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="AllAlertTypes" type="AllObjectTypesType" substitutionGroup="AllTrafficEventTypes">
		<xsd:annotation>
			<xsd:documentation>All Alert Types. Freeflow Extension.</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<!-- ===All================================================ -->
</xsd:schema>

