<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://bisb.gla.org/tasks"
            xmlns="http://bisb.gla.org/tasks" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            elementFormDefault="qualified" 
            attributeFormDefault="unqualified" 
            version="0.1">
    <xsd:annotation>
        <xsd:documentation>
         *   Task description schema.
         *   Author: Vladislav Vyshemirsky
        </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType name="Parameter">
    	<xsd:attribute name="id" type="xsd:string" use="required"></xsd:attribute>
    	<xsd:attribute name="value" type="xsd:string" use="required"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Algorithm">
    	<xsd:sequence>
    		<xsd:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="unbounded"></xsd:element>
    	</xsd:sequence>
    	<xsd:attribute name="id" type="xsd:string" use="required"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Model">
    	<xsd:attribute name="href" type="xsd:string" use="required"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Dataset">
    	<xsd:attribute name="href" type="xsd:string"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Prior">
    	<xsd:attribute name="type" type="xsd:nonNegativeInteger"></xsd:attribute>
    	<xsd:attribute name="href" type="xsd:string"></xsd:attribute>
    	<xsd:attribute name="scope" type="xsd:string"></xsd:attribute>
    	<xsd:attribute name="name" type="xsd:string"></xsd:attribute>
    	<xsd:attribute name="distribution" type="xsd:nonNegativeInteger"></xsd:attribute>
    	<xsd:attribute name="a" type="xsd:double"></xsd:attribute>
    	<xsd:attribute name="b" type="xsd:double"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Checksum">
    	<xsd:attribute name="href" type="xsd:string"></xsd:attribute>
    	<xsd:attribute name="checksum" type="xsd:string"></xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="Result">
    	<xsd:sequence maxOccurs="unbounded" minOccurs="1">
    		<xsd:element name="checksum" type="Checksum"></xsd:element>
    		<xsd:element name="content" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
    	</xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="Task">
    	<xsd:sequence>
    		<xsd:element name="model" type="Model" maxOccurs="unbounded"
    			minOccurs="1">
    		</xsd:element>
    		<xsd:element name="dataset" type="Dataset"
    			maxOccurs="unbounded" minOccurs="1">
    		</xsd:element>
    		<xsd:element name="prior" type="Prior" maxOccurs="unbounded"
    			minOccurs="0">
    		</xsd:element>
    		<xsd:element name="algorithm" type="Algorithm" maxOccurs="1"
    			minOccurs="1">
    		</xsd:element>
    		<xsd:element name="result" type="Result" maxOccurs="1"
    			minOccurs="0">
    		</xsd:element>
    	</xsd:sequence>
    	<xsd:attribute name="type" type="xsd:string" use="required"></xsd:attribute>
    	<xsd:attribute name="mergenoise" type="xsd:boolean" use="required"></xsd:attribute>
    	<xsd:attribute name="name" type="xsd:string" use="optional"></xsd:attribute>
    </xsd:complexType>

    <xsd:element name="task" type="Task"></xsd:element>
</xsd:schema>
