<?xml version="1.0"?>

<!--
| XML Schema for the APE Webservice output.
| Author: Kaarel Kaljurand
| Version: 2009-05-24
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="error">
	<xsd:complexType>
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="type" type="errorType"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
</xsd:element>

<xsd:element name="apeResult">
	<xsd:complexType>
		<xsd:sequence>
			<xsd:element name="duration" minOccurs="0" maxOccurs="1" type="durationType"/>
			<xsd:element name="input" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="tokens" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="sentences" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="drs" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="syntax" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="syntaxpp" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="syntaxd" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="syntaxdpp" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="drspp" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="drsxml" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="drshtml" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="paraphrase" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="paraphrase1" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="paraphrase2" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="owlrdf" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="owlfss" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="owlxml" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="ruleml" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="fol" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="pnf" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="tptp" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="messages" minOccurs="0" maxOccurs="1" type="messagesType"/>
		</xsd:sequence>
		<xsd:attribute name="timestamp" use="optional" type="xsd:date"/>
	</xsd:complexType>
</xsd:element>


<xsd:complexType name="durationType">
	<xsd:attribute name="tokenizer" type="xsd:float"/>
	<xsd:attribute name="parser" type="xsd:float"/>
	<xsd:attribute name="refres" type="xsd:float"/>
</xsd:complexType>

<xsd:complexType name="messagesType">
	<xsd:sequence>
		<xsd:element name="message" minOccurs="0" maxOccurs="unbounded" type="messageType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="messageType">
	<xsd:attribute name="importance" type="importanceType"/>
	<xsd:attribute name="type" type="typeType"/>
	<xsd:attribute name="sentence" type="xsd:string"/>
	<xsd:attribute name="token" type="xsd:string"/>
	<xsd:attribute name="value" type="xsd:string"/>
	<xsd:attribute name="repair" type="xsd:string"/>
</xsd:complexType>


<xsd:simpleType name="errorType">
	<xsd:restriction  base="xsd:string">
		<xsd:enumeration value="fail fetch acetext"/>
		<xsd:enumeration value="fail fetch lexicon"/>
		<xsd:enumeration value="fail socket init"/>
		<xsd:enumeration value="fail socket connect"/>
		<xsd:enumeration value="fail socket close"/>
		<xsd:enumeration value="fail logfile open"/>
		<xsd:enumeration value="fail logfile close"/>
		<xsd:enumeration value="fail ulex open"/>
		<xsd:enumeration value="fail ulex close"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="importanceType">
	<xsd:restriction  base="xsd:string">
		<xsd:enumeration value="error"/>
		<xsd:enumeration value="warning"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="typeType">
	<xsd:restriction  base="xsd:string">
		<xsd:enumeration value="character"/>
		<xsd:enumeration value="word"/>
		<xsd:enumeration value="sentence"/>
		<xsd:enumeration value="syntax"/>
		<xsd:enumeration value="anaphor"/>
		<xsd:enumeration value="timelimit"/>
		<xsd:enumeration value="lexicon"/>
		<xsd:enumeration value="owl"/>
		<xsd:enumeration value="ape"/>
	</xsd:restriction>
</xsd:simpleType>

</xsd:schema>
