<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:gaz="http://www.alexandria.ucsb.edu/gazetteer"
  targetNamespace="http://www.alexandria.ucsb.edu/gazetteer"
  elementFormDefault="qualified">

<annotation>
  <appinfo>
    <header xmlns="">$Header: /export/home/gjanee/gazetteer/RCS/gazetteer-service.xsd,v 1.1 2001/07/08 04:39:56 gjanee Exp $</header>
    <log xmlns="">
      $Log: gazetteer-service.xsd,v $
      Revision 1.1  2001/07/08 04:39:56  gjanee
      Initial revision

    </log>
  </appinfo>
  <documentation>
    <author xmlns="">
      <name>Greg Jan&#x00E9;e</name>
      <affiliation>Alexandria Digital Library Project</affiliation>
      <email-address>gjanee@alexandria.ucsb.edu</email-address>
    </author>
  </documentation>
</annotation>

<include schemaLocation="gazetteer-capabilities.xsd"/>
<include schemaLocation="gazetteer-query.xsd"/>
<include schemaLocation="gazetteer-standard-report.xsd"/>

<element name="gazetteer-service">
  <complexType>
    <choice>
      <element ref="gaz:get-capabilities-request"/>
      <element ref="gaz:get-capabilities-response"/>
      <element ref="gaz:query-request"/>
      <element ref="gaz:query-response"/>
      <element ref="gaz:download-request"/>
      <element ref="gaz:download-response"/>
      <element ref="gaz:add-entry-request"/>
      <element ref="gaz:add-entry-response"/>
      <element ref="gaz:relate-entries-request"/>
      <element ref="gaz:relate-entries-response"/>
      <element ref="gaz:remove-entry-request"/>
      <element ref="gaz:remove-entry-response"/>
    </choice>
    <attribute name="version" type="string" use="required"/>
  </complexType>
</element>

<element name="get-capabilities-request">
  <complexType/>
</element>

<element name="get-capabilities-response">
  <complexType>
    <sequence>
      <element ref="gaz:gazetteer-capabilities"
        minOccurs="0"/>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="query-request">
  <complexType>
    <sequence>
      <element ref="gaz:gazetteer-query"/>
      <element name="report-format">
        <simpleType>
          <restriction base="string">
            <enumeration value="standard"/>
            <enumeration value="extended"/>
          </restriction>
        </simpleType>
      </element>
      <element name="geometry-language" type="anyURI"
        minOccurs="0"/>
    </sequence>
  </complexType>
</element>

<element name="query-response">
  <complexType>
    <sequence>
      <choice minOccurs="0">
        <element name="standard-reports">
          <complexType>
            <sequence>
              <element ref="gaz:gazetteer-standard-report"
                minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </element>
        <element name="extended-reports">
          <complexType>
            <sequence>
              <any processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </element>
      </choice>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="download-request">
  <complexType>
    <sequence>
      <element name="report-format">
        <simpleType>
          <restriction base="string">
            <enumeration value="standard"/>
            <enumeration value="extended"/>
          </restriction>
        </simpleType>
      </element>
      <element name="geometry-language" type="anyURI"
        minOccurs="0"/>
    </sequence>
  </complexType>
</element>

<element name="download-response">
  <complexType>
    <sequence>
      <choice minOccurs="0">
        <element name="standard-reports">
          <complexType>
            <sequence>
              <element ref="gaz:gazetteer-standard-report"
                minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </element>
        <element name="extended-reports">
          <complexType>
            <sequence>
              <any processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </element>
      </choice>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="add-entry-request">
  <complexType>
    <choice>
      <element ref="gaz:gazetteer-standard-report"/>
      <element name="extended-report">
        <complexType>
          <sequence>
            <any processContents="lax"/>
          </sequence>
        </complexType>
      </element>
    </choice>
  </complexType>
</element>

<element name="add-entry-response">
  <complexType>
    <sequence>
      <element name="identifier" type="string"
        minOccurs="0"/>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="relate-entries-request">
  <complexType>
    <sequence>
      <element name="relationship" type="string"/>
      <element name="identifier" type="string" minOccurs="2"
        maxOccurs="2"/>
    </sequence>
  </complexType>
</element>

<element name="relate-entries-response">
  <complexType>
    <sequence>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="remove-entry-request">
  <complexType>
    <sequence>
      <element name="identifier" type="string"/>
    </sequence>
  </complexType>
</element>

<element name="remove-entry-response">
  <complexType>
    <sequence>
      <element ref="gaz:error"/>
    </sequence>
  </complexType>
</element>

<element name="error" nillable="true">
  <complexType>
    <sequence>
      <element name="code" type="string" minOccurs="0"/>
      <element name="description" type="string"
        minOccurs="0"/>
    </sequence>
  </complexType>
</element>

</schema>
