<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="http://www.rreganjr.com/requel" xmlns:tns="http://www.rreganjr.com/requel" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="actor" type="tns:actor"/>

  <xs:element name="addActorPosition" type="tns:addActorPosition"/>

  <xs:element name="addGlossaryTermPosition" type="tns:addGlossaryTermPosition"/>

  <xs:element name="addWordToDictionaryPosition" type="tns:addWordToDictionaryPosition"/>

  <xs:element name="argument" type="tns:argument"/>

  <xs:element name="changeSpellingPosition" type="tns:changeSpellingPosition"/>

  <xs:element name="domainAdminUserRole" type="tns:domainAdminUserRole"/>

  <xs:element name="goal" type="tns:goal"/>

  <xs:element name="goalRelation" type="tns:goalRelation"/>

  <xs:element name="issue" type="tns:issue"/>

  <xs:element name="lexicalIssue" type="tns:lexicalIssue"/>

  <xs:element name="nonuser-stakeholder" type="tns:nonuser-stakeholder"/>

  <xs:element name="note" type="tns:note"/>

  <xs:element name="organization" type="tns:organization"/>

  <xs:element name="position" type="tns:position"/>

  <xs:element name="project" type="tns:project"/>

  <xs:element name="projectPermission" type="tns:projectPermission"/>

  <xs:element name="projectUserRole" type="tns:projectUserRole"/>

  <xs:element name="report" type="tns:report"/>

  <xs:element name="scenario" type="tns:scenario"/>

  <xs:element name="step" type="tns:step"/>

  <xs:element name="story" type="tns:story"/>

  <xs:element name="systemAdminUserRole" type="tns:systemAdminUserRole"/>

  <xs:element name="team" type="tns:team"/>

  <xs:element name="term" type="tns:term"/>

  <xs:element name="usecase" type="tns:usecase"/>

  <xs:element name="user" type="tns:user"/>

  <xs:element name="user-stakeholder" type="tns:user-stakeholder"/>

  <xs:element name="userPermission" type="tns:userPermission"/>

  <xs:complexType name="abstractAnnotation" abstract="true">
    <xs:sequence>
      <xs:element name="text" type="xs:string" form="qualified" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>

  <xs:complexType name="user">
    <xs:sequence>
      <xs:element name="username" type="xs:string" form="qualified"/>
      <xs:element name="password" type="xs:string" form="qualified"/>
      <xs:element name="name" type="xs:string" form="qualified" default=""/>
      <xs:element name="emailAddress" type="xs:string" form="qualified" minOccurs="0"/>
      <xs:element name="phoneNumber" type="xs:string" form="qualified" minOccurs="0"/>
      <xs:element ref="tns:organization"/>
      <xs:element name="userRoles" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element ref="tns:domainAdminUserRole"/>
              <xs:element ref="tns:projectUserRole"/>
              <xs:element ref="tns:systemAdminUserRole"/>
            </xs:choice>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="editable" type="xs:boolean" form="qualified"/>
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>

  <xs:complexType name="organization">
    <xs:sequence/>
    <xs:attribute name="name" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="abstractUserRole" abstract="true">
    <xs:sequence>
      <xs:element name="userPermissions" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:userPermission" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="userPermission">
    <xs:sequence/>
    <xs:attribute name="id" type="xs:string"/>
    <xs:attribute name="name" type="xs:string"/>
    <xs:attribute name="userRoleType" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="addWordToDictionaryPosition">
    <xs:complexContent>
      <xs:extension base="tns:position">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="position">
    <xs:sequence>
      <xs:element name="arguments" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:argument" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="text" type="xs:string" form="qualified" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>

  <xs:complexType name="argument">
    <xs:sequence>
      <xs:element name="text" type="xs:string" form="qualified" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="supportLevel" type="tns:argumentPositionSupportLevel"/>
  </xs:complexType>

  <xs:complexType name="changeSpellingPosition">
    <xs:complexContent>
      <xs:extension base="tns:position">
        <xs:sequence/>
        <xs:attribute name="proposedWord" type="xs:string"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="issue">
    <xs:complexContent>
      <xs:extension base="tns:abstractAnnotation">
        <xs:sequence>
          <xs:element name="positions" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="positionRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="mustBeResolved" type="xs:boolean" use="required"/>
        <xs:attribute name="resolvedByPosition" type="xs:IDREF"/>
        <xs:attribute name="resolvedByUser" type="xs:IDREF"/>
        <xs:attribute name="dateResolved" type="xs:string"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="lexicalIssue">
    <xs:complexContent>
      <xs:extension base="tns:issue">
        <xs:sequence/>
        <xs:attribute name="propertyName" type="xs:string"/>
        <xs:attribute name="word" type="xs:string"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="note">
    <xs:complexContent>
      <xs:extension base="tns:abstractAnnotation">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="domainAdminUserRole">
    <xs:complexContent>
      <xs:extension base="tns:abstractUserRole">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="projectUserRole">
    <xs:complexContent>
      <xs:extension base="tns:abstractUserRole">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractProjectOrDomain" abstract="true">
    <xs:sequence>
      <xs:element name="actors" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:actor" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="scenarios" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element ref="tns:step"/>
              <xs:element ref="tns:scenario"/>
            </xs:choice>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="glossary" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:term" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="goals" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:goal" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
      <xs:element name="reports" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:report" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="stakeholders" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element ref="tns:user-stakeholder"/>
              <xs:element ref="tns:nonuser-stakeholder"/>
            </xs:choice>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="stories" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:story" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="teams" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:team" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="description" type="xs:string" form="qualified" minOccurs="0"/>
      <xs:element name="usecases" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="tns:usecase" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="revision" type="xs:int" use="required"/>
  </xs:complexType>

  <xs:complexType name="actor">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="goals" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="goalRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractTextEntity" abstract="true">
    <xs:complexContent>
      <xs:extension base="tns:abstractProjectOrDomainEntity">
        <xs:sequence>
          <xs:element name="text" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractProjectOrDomainEntity" abstract="true">
    <xs:sequence>
      <xs:element name="annotations" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="annotationRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="glossaryTerms" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="glossaryTermRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="revision" type="xs:int" use="required"/>
  </xs:complexType>

  <xs:complexType name="goal">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
          <xs:element name="goalRelations" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element ref="tns:goalRelation" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="goalRelation">
    <xs:sequence>
      <xs:element name="annotations" form="qualified" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="annotationRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="createdBy" type="xs:IDREF"/>
    <xs:attribute name="dateCreated" type="xs:string"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="relationType" type="xs:string"/>
    <xs:attribute name="toGoal" type="xs:IDREF"/>
  </xs:complexType>

  <xs:complexType name="term">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="canonicalTerm" type="xs:IDREF"/>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="step">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="scenarioType" type="xs:string"/>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="report">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="user-stakeholder">
    <xs:complexContent>
      <xs:extension base="tns:abstractStakeholder">
        <xs:sequence>
          <xs:element name="projectPermissions" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element ref="tns:projectPermission" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element ref="tns:user"/>
        </xs:sequence>
        <xs:attribute name="team" type="xs:IDREF"/>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractStakeholder" abstract="true">
    <xs:complexContent>
      <xs:extension base="tns:abstractProjectOrDomainEntity">
        <xs:sequence>
          <xs:element name="goals" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="goalRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="projectPermission">
    <xs:sequence/>
    <xs:attribute name="entityType" type="xs:string"/>
    <xs:attribute name="permissionType" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="team">
    <xs:complexContent>
      <xs:extension base="tns:abstractProjectOrDomainEntity">
        <xs:sequence>
          <xs:element name="members" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="stakeholderRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="nonuser-stakeholder">
    <xs:complexContent>
      <xs:extension base="tns:abstractStakeholder">
        <xs:sequence>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
          <xs:element name="text" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="story">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="actors" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="actorRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="goals" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="goalRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="storyType" type="xs:string"/>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="usecase">
    <xs:complexContent>
      <xs:extension base="tns:abstractTextEntity">
        <xs:sequence>
          <xs:element name="actors" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="actorRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="goals" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="goalRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
          <xs:element name="primaryActorRef" type="xs:IDREF" form="qualified" minOccurs="0"/>
          <xs:element name="scenarioRef" type="xs:IDREF" form="qualified" minOccurs="0"/>
          <xs:element name="stories" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="storyRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="scenario">
    <xs:complexContent>
      <xs:extension base="tns:step">
        <xs:sequence>
          <xs:element name="steps" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="stepRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="addActorPosition">
    <xs:complexContent>
      <xs:extension base="tns:position">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="addGlossaryTermPosition">
    <xs:complexContent>
      <xs:extension base="tns:position">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="project">
    <xs:complexContent>
      <xs:extension base="tns:abstractProjectOrDomain">
        <xs:sequence>
          <xs:element name="annotations" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element ref="tns:issue"/>
                  <xs:element ref="tns:lexicalIssue"/>
                  <xs:element ref="tns:note"/>
                </xs:choice>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="positions" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element ref="tns:position"/>
                  <xs:element ref="tns:addWordToDictionaryPosition"/>
                  <xs:element ref="tns:changeSpellingPosition"/>
                  <xs:element ref="tns:addActorPosition"/>
                  <xs:element ref="tns:addGlossaryTermPosition"/>
                </xs:choice>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="annotations" form="qualified" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="annotationRef" type="xs:IDREF" form="qualified" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element ref="tns:organization"/>
          <xs:element name="status" type="xs:string" form="qualified" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="systemAdminUserRole">
    <xs:complexContent>
      <xs:extension base="tns:abstractUserRole">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="argumentPositionSupportLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="StronglyFor"/>
      <xs:enumeration value="For"/>
      <xs:enumeration value="Neutral"/>
      <xs:enumeration value="Against"/>
      <xs:enumeration value="StronglyAgainst"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

