<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:icsy:venice:types:presence" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:basic="urn:icsy:venice:types:basic" xmlns:domain="urn:icsy:venice:types:domain" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:icsy:venice:types:presence">
	<import namespace="urn:icsy:venice:types:basic" schemaLocation="http://www.v-grid.info/types/basic.xsd"/>
	<import namespace="urn:icsy:venice:types:domain" schemaLocation="http://www.v-grid.info/types/domain.xsd"/>
	<simpleType name="qvalue">
		<annotation>
			<documentation>The priority that can be assigned to a contact element.</documentation>
		</annotation>
		<restriction base="decimal">
			<pattern value="0(.[0-9]{0,3})?"/>
			<pattern value="1(.0{0,3})?"/>
		</restriction>
	</simpleType>
	<simpleType name="basic">
		<annotation>
			<documentation>The basic status type.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="open"/>
			<enumeration value="closed"/>
		</restriction>
	</simpleType>
	<simpleType name="activity">
		<annotation>
			<documentation>The activity status type.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="away"/>
			<enumeration value="busy"/>
			<enumeration value="meeting"/>
			<enumeration value="meal"/>
			<enumeration value="working"/>
			<enumeration value="holiday"/>
			<enumeration value="on-the-phone"/>
			<enumeration value="shopping"/>
			<enumeration value="sleeping"/>
			<enumeration value="out-of-paper"/>
			<enumeration value="out-of-inc"/>
			<enumeration value="error"/>
			<enumeration value="other"/>
		</restriction>
	</simpleType>
	<simpleType name="location">
		<annotation>
			<documentation>The location status type.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="office"/>
			<enumeration value="school"/>
			<enumeration value="library"/>
			<enumeration value="home"/>
			<enumeration value="hotel"/>
			<enumeration value="outdoors"/>
			<enumeration value="other"/>
		</restriction>
	</simpleType>
	<simpleType name="SubscriptionType">
		<annotation>
			<documentation>The type of a subscription.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="subscriber"/>
			<enumeration value="fetcher"/>
		</restriction>
	</simpleType>
	<complexType name="presence">
		<annotation>
			<documentation>The presence information data type containing tuples of data and notes.</documentation>
		</annotation>
		<sequence>
			<element name="tuple" type="tns:tuple" minOccurs="0" maxOccurs="unbounded"/>
			<element name="note" type="tns:note" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="entity" type="anyURI" use="required"/>
	</complexType>
	<element name="presence" type="tns:presence"/>
	<complexType name="tuple">
		<annotation>
			<documentation>A tuple containing the presentity's data.</documentation>
		</annotation>
		<sequence>
			<element name="status" type="tns:status"/>
			<element name="contact" type="tns:contact" minOccurs="0"/>
			<element name="note" type="tns:note" minOccurs="0" maxOccurs="unbounded"/>
			<element name="timestamp" type="dateTime"/>
		</sequence>
		<attribute name="id" type="ID" use="required"/>
	</complexType>
	<element name="tuple" type="tns:tuple"/>
	<complexType name="status">
		<annotation>
			<documentation>The status of a presentity.</documentation>
		</annotation>
		<sequence>
			<element name="basic" type="tns:basic" minOccurs="0"/>
			<element name="activity" type="tns:activity" minOccurs="0"/>
			<element name="location" type="tns:location" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="status" type="tns:status"/>
	<complexType name="contact">
		<annotation>
			<documentation>An URI defining a contact data set.</documentation>
		</annotation>
		<simpleContent>
			<extension base="anyURI">
				<attribute name="priority" type="tns:qvalue"/>
			</extension>
		</simpleContent>
	</complexType>
	<element name="contact" type="tns:contact"/>
	<complexType name="note">
		<annotation>
			<documentation>An arbitrary note that can be attached to several elements.</documentation>
		</annotation>
		<simpleContent>
			<extension base="string">
			</extension>
		</simpleContent>
	</complexType>
	<element name="note" type="tns:note"/>
	<complexType name="Subscription">
		<annotation>
			<documentation>A subscription a watcher has made for watching a presentity.</documentation>
		</annotation>
		<sequence>
			<element name="id" type="basic:UUID"/>
			<element name="type" type="tns:SubscriptionType"/>
			<element name="watcher" type="domain:UserName"/>
			<element name="presentity" type="domain:UserName"/>
		</sequence>
	</complexType>
	<element name="Subscription" type="tns:Subscription"/>
	<complexType name="Watcher">
		<annotation>
			<documentation>A watcher watching a presentity.</documentation>
		</annotation>
		<sequence>
			<element name="watcher" type="domain:UserName"/>
			<element name="type" type="tns:SubscriptionType"/>
		</sequence>
	</complexType>
	<element name="Watcher" type="tns:Watcher"/>
	<complexType name="SubscriptionArray">
		<annotation>
			<documentation>An array of Subscriptions.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:Subscription" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="SubscriptionArray" type="tns:SubscriptionArray"/>
	<complexType name="WatcherArray">
		<annotation>
			<documentation>An array of Watchers.</documentation>
		</annotation>
		<sequence>
			<element name="contents" type="tns:Watcher" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="WatcherArray" type="tns:WatcherArray"/>
</schema>

