<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.ivoa.net/xml/QueryResource/v0.1"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                         xmlns="http://www.w3.org/2001/XMLSchema" 
                         xmlns:qr="http://www.ivoa.net/xml/QueryResource/v0.1" 
                         elementFormDefault="qualified"
                         attributeFormDefault="unqualified"
                 version="0.1">

          <xsd:annotation>
         <xsd:documentation>
             This is the first draft version of the Query schema for querying a Resource Registry.
             See: http://www.ivoa.net/xml/VOResource/v0.9
             The structure of this schema is much like a very basic criteria or predeicate to most popular query languages.
         </xsd:documentation>
      </xsd:annotation>
                 
    <xsd:element name="RegistryQuery">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="qr:QueryResources"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="QueryCriteria">
          <xsd:annotation>
         <xsd:documentation>
      Deals with a particular criteria to perform on a Resource Registry.  This section looks very much like most query languanges except it uses an XPath
      to represent on what you querying against.
         </xsd:documentation>
      </xsd:annotation>

        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ResourceXPath" type="xsd:string"/>
                <xsd:element name="Operand">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="like"/>
                            <xsd:enumeration value="startswith"/>
                            <xsd:enumeration value="endswith"/>
                            <xsd:enumeration value="greatar-than-or-equals"/>
                            <xsd:enumeration value="less-than-or-equals"/>
                            <xsd:enumeration value="greater-than"/>
                            <xsd:enumeration value="less-than"/>
                            <xsd:enumeration value="equals"/>
                            <xsd:enumeration value="not"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="value" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    
    <xsd:element name="QueryResources">
              <xsd:annotation>
         <xsd:documentation>

         </xsd:documentation>
      </xsd:annotation>

        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="qr:QueryCriteria"/>
                    <xsd:sequence  minOccurs="0" maxOccurs="unbounded">
                     <xsd:element name="JoinOperator">
                         <xsd:simpleType>
                             <xsd:restriction base="xsd:string">
                                 <xsd:enumeration value="and"/>
                                 <xsd:enumeration value="or"/>
                             </xsd:restriction>
                          </xsd:simpleType>
                      </xsd:element>
                      <xsd:element ref="qr:QueryCriteria"/>
                   </xsd:sequence>
           </xsd:sequence>
        </xsd:complexType>          
    </xsd:element>
    
</xsd:schema>
