<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0" targetNamespace="http://gdmxml.fugal.net/1.0" xmlns:ns1="http://gdmxml.fugal.net/1.0">
  <xs:element name="gdmxml">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:activity"/>
        <xs:element ref="ns1:assertion"/>
        <xs:element ref="ns1:characteristic"/>
        <xs:element ref="ns1:characteristic-part-type"/>
        <xs:element ref="ns1:citation-part-type"/>
        <xs:element ref="ns1:event"/>
        <xs:element ref="ns1:event-type"/>
        <xs:element ref="ns1:group"/>
        <xs:element ref="ns1:group-type"/>
        <xs:element ref="ns1:persona"/>
        <xs:element ref="ns1:place"/>
        <xs:element ref="ns1:place-part-type"/>
        <xs:element ref="ns1:project"/>
        <xs:element ref="ns1:repository"/>
        <xs:element ref="ns1:repository-source"/>
        <xs:element ref="ns1:representation-type"/>
        <xs:element ref="ns1:research-objective-activity"/>
        <xs:element ref="ns1:researcher"/>
        <xs:element ref="ns1:researcher-project"/>
        <xs:element ref="ns1:source"/>
        <xs:element ref="ns1:source-group"/>
        <xs:element ref="ns1:surety-scheme"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="activity">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:choice>
          <xs:annotation>
            <xs:documentation>TypeCode is implied by which element is included here.</xs:documentation>
          </xs:annotation>
          <xs:element ref="ns1:administrative-task"/>
          <xs:element ref="ns1:search"/>
        </xs:choice>
        <xs:element ref="ns1:status"/>
        <xs:element ref="ns1:priority"/>
        <xs:element ref="ns1:scheduled-date"/>
        <xs:element ref="ns1:completed-date"/>
        <xs:element ref="ns1:description"/>
        <xs:element ref="ns1:comments"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="researcher-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="status">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="priority">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="scheduled-date">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="completed-date">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="description">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="comments">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="administrative-task">
    <xs:complexType/>
  </xs:element>
  <xs:element name="project">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:description"/>
        <xs:element ref="ns1:client-data"/>
        <xs:element ref="ns1:research-objective"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="surety-scheme-ref" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="name">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="client-data">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="research-objective">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:description"/>
        <xs:element ref="ns1:priority"/>
        <xs:element ref="ns1:status"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="research-objective-activity">
    <xs:complexType>
      <xs:attribute name="research-objective-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="activity-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="researcher">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element name="address">
          <xs:annotation>
            <xs:documentation>"A RESEARCHER lives in one PLACE.", and "Part of the address is connected to Place-ID in PLACE." (GDM, pg 71) Therefore connection is part of address.</xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:attribute name="place-ref" use="required" type="xs:IDREF"/>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" ref="ns1:comments"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="researcher-project">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="role">
          <xs:complexType mixed="true"/>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="researcher-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="project-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="search">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:searched-for"/>
      </xs:sequence>
      <xs:attribute name="repository-source-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="searched-for">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="source-group">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:source-group-source"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="source-group-source">
    <xs:complexType>
      <xs:attribute name="source-ref" use="required" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation>source-group-ref is implied</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="surety-scheme">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:description"/>
        <xs:element ref="ns1:surety-scheme-part"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="surety-scheme-part">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:description"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="citation-part">
    <xs:complexType mixed="true">
      <xs:attribute name="citation-part-type-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="citation-part-type">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="repository">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element minOccurs="0" name="address">
          <xs:complexType mixed="true"/>
        </xs:element>
        <xs:element minOccurs="0" ref="ns1:phone"/>
        <xs:element minOccurs="0" ref="ns1:hours"/>
        <xs:element minOccurs="0" ref="ns1:comments"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="place-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="phone">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="hours">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="repository-source">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="ns1:call-number"/>
        <xs:element minOccurs="0" ref="ns1:description"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="source-ref" type="xs:IDREF"/>
      <xs:attribute name="repository-ref" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="call-number">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="representation">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="ns1:medium"/>
        <xs:element minOccurs="0" ref="ns1:content"/>
        <xs:element minOccurs="0" ref="ns1:comments"/>
        <xs:element minOccurs="0" ref="ns1:physical-file-code"/>
      </xs:all>
      <xs:attribute name="representation-type-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="medium">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="content">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="physical-file-code">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="representation-type">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element minOccurs="0" ref="ns1:description"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="source">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:citation-part"/>
        <xs:element ref="ns1:representation"/>
        <xs:element ref="ns1:subject-date"/>
        <xs:element ref="ns1:comments"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="higher-source-ref" type="xs:IDREF"/>
      <xs:attribute name="subject-place-ref" type="xs:IDREF"/>
      <xs:attribute name="jurisdiction-place-ref" type="xs:IDREF"/>
      <xs:attribute name="researcher-ref" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="subject-date">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="assertion">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="assertion">
          <xs:complexType>
            <xs:attribute name="ref" use="required" type="xs:IDREF"/>
          </xs:complexType>
        </xs:element>
        <xs:choice>
          <xs:element ref="ns1:assertion-subject">
            <xs:annotation>
              <xs:documentation>Note that the order of assertion-subject elements matters.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element ref="ns1:assertion-subject"/>
        </xs:choice>
        <xs:element ref="ns1:disproved"/>
        <xs:element ref="ns1:rationale"/>
        <xs:element ref="ns1:value"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="surety-scheme-part-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="researcher-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="source-ref" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation>An assertion is based either upon a source, or lower-level assertions. Note that ASSERTION-ASSERTION is implicit here.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="disproved">
    <xs:complexType/>
  </xs:element>
  <xs:element name="rationale">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="value">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" name="role">
          <xs:annotation>
            <xs:documentation>In some contexts, the 'value' is a role. Roles are either event-type or group-type, and they refer to an event-type-role or group-type-role element respectively. I am allowing both a role and text to coexist because the GDM is very vague about what restrictions, if any, are placed on the value field.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="type" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="event-type"/>
                  <xs:enumeration value="group-type"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="ref" use="required" type="xs:IDREF"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="assertion-subject">
    <xs:complexType>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="persona"/>
            <xs:enumeration value="event"/>
            <xs:enumeration value="characteristic"/>
            <xs:enumeration value="group"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="characteristic">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:date"/>
        <xs:element ref="ns1:characteristic-part">
          <xs:annotation>
            <xs:documentation>The order of the characteristic-part elements is important.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="place-ref" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation>changed from GDM: place-ref is not required (what place would you put for hair color?)</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="date">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="characteristic-part">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="characteristic-part-type-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="characteristic-part-type">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="event">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:date"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="event-type-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="place-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="event-type">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:event-type-role"/>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="event-type-role">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID">
        <xs:annotation>
          <xs:documentation>event-type-role needs an id even though it is embedded in event-type because it is referenced by the role element in assertion.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="group">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:date"/>
        <xs:element ref="ns1:criteria"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="group-type-ref" use="required" type="xs:IDREF"/>
      <xs:attribute name="place-ref" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation>Changed from the GDM: place-ref is optional. It makes no sense to have a place-ref for a persona group intended to link personas from several places.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="criteria">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="group-type">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ns1:name"/>
        <xs:element ref="ns1:group-type-role">
          <xs:annotation>
            <xs:documentation>The order of group-type-role elements is important.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="group-type-role">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID">
        <xs:annotation>
          <xs:documentation>group-type-role needs an id even though it is embedded in group-type because it is referenced by the role element in assertion.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="persona">
    <xs:complexType>
      <xs:all>
        <xs:element ref="ns1:name"/>
        <xs:element minOccurs="0" ref="ns1:description-comments"/>
      </xs:all>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="description-comments">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="place">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:existence-date"/>
        <xs:element maxOccurs="unbounded" ref="ns1:place-part">
          <xs:annotation>
            <xs:documentation>The order of place-part elements is important.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="existence-date">
    <xs:complexType mixed="true"/>
  </xs:element>
  <xs:element name="place-part">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="place-part-type-ref" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="place-part-type">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ns1:name"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
<!-- This file is generated by trang. XSD output by trang is under active development, and I have not verified the validity or the semantics of this file. -->
