<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs            ="http://www.w3.org/2001/XMLSchema" 
		   xmlns:services      ="http://services.natureserve.org" 
		   targetNamespace     ="http://services.natureserve.org" 
		   elementFormDefault  ="qualified" 
		   attributeFormDefault="unqualified">
		   
	<xs:include schemaLocation ="NatureServeBasicTypes.xsd"/>

	<xs:complexType name="delineationType">
		<xs:annotation>
			<xs:documentation>
				This represents a population delineation for a species
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="subTypes"                          minOccurs="0" maxOccurs="1" type="services:subTypesType"/>
			<xs:element name="minimumCriteriaForOccurrence"      minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="mappingGuidance"                   minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="separation"                        minOccurs="0" maxOccurs="1" type="services:separationType"/>
			<xs:element name="inferredMinimumExtentOfHabitatUse" minOccurs="0" maxOccurs="1" type="services:inferredMinimumExtentOfHabitatUseType"/>
			<xs:element name="versionDate"                       minOccurs="1" maxOccurs="1" type="xs:date"/>
			<xs:element name="author"                            minOccurs="1" maxOccurs="1" type="xs:string"/>
			<xs:element name="notes"                             minOccurs="0" maxOccurs="1" type="xs:string"/>
		</xs:sequence>
		<xs:attribute name="groupName"    use="optional" type="xs:string"/>
		<xs:attribute name="useClassName" use="optional" type="xs:string"/>
	</xs:complexType>
	
	<xs:complexType name="delineationsType">
		<xs:annotation>
			<xs:documentation>
				This is a list of zero or more delineations
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="delineation" minOccurs="0" maxOccurs="unbounded" type="services:delineationType"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="inferredMinimumExtentOfHabitatUseType">
		<xs:annotation>
			<xs:documentation>
				This is the minimum amount of habitat that this species requires
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="distance"      minOccurs="1" maxOccurs="1" type="services:unitOfMeasurementType"/>
			<xs:element name="justification" minOccurs="0" maxOccurs="1" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="populationOccurrenceType">
		<xs:annotation>
			<xs:documentation>
				This is used to enumerate the criteria used to deterimen population occurrences for
				a species.  This is not a list of population occurenecs but rather the set of rules
				used to build population occurrences.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="delineations" minOccurs="1" maxOccurs="1" type="services:delineationsType" />
			<xs:element name="viabilities"  minOccurs="0" maxOccurs="1" type="services:viabilitiesType"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="separationType">
			<xs:annotation>
				<xs:documentation>
					These are all of the different separation criteria that can be used to determine
					where population occureneces for this species should be divided
				</xs:documentation>
			</xs:annotation>
			<xs:sequence>
				<xs:element name="barriers"                     minOccurs="0" maxOccurs="1" type="xs:string"/>
				<xs:element name="distanceForUnsuitableHabitat" minOccurs="0" maxOccurs="1" type="services:unitOfMeasurementType"/>
				<xs:element name="distanceForSuitableHabitat"   minOccurs="0" maxOccurs="1" type="services:unitOfMeasurementType"/>				
				<xs:element name="alternateSeparationProcedure" minOccurs="0" maxOccurs="1" type="xs:string"/>
				<xs:element name="justification"                minOccurs="0" maxOccurs="1" type="xs:string"/>
			</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="subTypesType">
		<xs:annotation>
			<xs:documentation>
				Subtypes are used in delineations to enumerate the list of categories that a
				population delineation falls into
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="subType" minOccurs="1" maxOccurs="unbounded" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="viabilitiesType">
		<xs:annotation>
			<xs:documentation>
				This is a list of one or more viabilities
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="viability" minOccurs="1" maxOccurs="unbounded" type="services:viabilityType"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="viabilityType">
		<xs:annotation>
			<xs:documentation>
				This is the set of rules necessary to determine what kind of viability a 
				population occurence has
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="excellentViability" minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="goodViability"      minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="fairViability"      minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="poorViability"      minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="justification"      minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="versionDate"        minOccurs="1" maxOccurs="1" type="xs:date"/>												
			<xs:element name="author"             minOccurs="1" maxOccurs="1" type="xs:string"/>			
			<xs:element name="notes"              minOccurs="0" maxOccurs="1" type="xs:string"/>			
		</xs:sequence>
		<xs:attribute name="groupName" use="optional" type="xs:string"/>
	</xs:complexType>
</xs:schema>