<?xml version="1.0" encoding="UTF-8"?>

<!-- 	*******************************************************************************************************************************
	
	Contact Information
	*******************************************************************************************************
	Individual Name: Yassine LASSOUED
	Organization Name: Coastal and Marine Resources Centre (CMRC)
	Address:  - Naval Base - Haulbowline - Cobh - Co. Cork - Ireland
	Phone: +353 21 470 31 03
	Fax: +353 21 470 31 32
	Email: y <DOT/> lassoued <AT/> ucc <DOT/> ie
	
	Information
	*******************************************************************************************************
	This GML Application Schema (GAS), called Arc Marine GML application Schema (AMGAS), has been developed
	as part of the InterRisk project (http://interrisk.nersc.no/).
	InterRisk is an FP6-IST project addressing interoperable Global Monitoring for Environment and
	Security (GMES) services for environmental risk management in marine and coastal areas of Europe.
	The project addresses the need for better access to information for risk management in Europe, both
	in cases of natural hazards and industrial accidents. The overall objective is to develop a pilot system
	for interoperable GMES monitoring and forecasting services for environmental management in marine
	and coastal areas. The InterRisk pilot will consist of an open system architecture based on established
	Geographic Information Systems (GIS) and web services protocols, and the InterRisk services to be
	implemented for several European regional seas.
	The InterRisk pilot system and services will be validated by users responsible for crisis management in
	case of oil spills, harmful algal blooms (HABs) and other marine pollution events, in Norwegian,
	UK/Irish, French, German, Polish and Italian coastal waters.
	
	The AMGAS defines the data types and elements of the ASRI Arc Marine data model (http://dusk2.geo.orst.edu/djl/arcgis/).
	
	Element definitions (in the annotation tags) have been taken from the Arc Marine book [1]
	
	References
	********************	
	[1] Dawn J. Wright and Michael J. Blongewicz and Patrick N. Halpin and Joe Breman, "Arc Marine -
	GIS for a Blue Planet". First Edition 2007. ESRI Press, Redlands, California. ISBN 978-1-58948-017-9.
	
	Technical Information
	*******************************************************************************************************
	One of the main issues of developing a XML schema from a relational data model is the implementation of
	relationships.
	In this version of the Arc Marine GML application schema, relationships are implemented by nesting related elements
	using GML asscociations. Given two entity classes a and b, implemented as A and B in the application schema, and
	a relationship r between a and b, r is implemented as a property (sub element) of A containing an element of type B
	or a property of B containing an element of type A.
	The issue is whether r should be a property of A or B. In this version, we try to consider the most  intuitive and
	practical option. However, in most cases we consider both options. In such a case it is up to the user to choose
	the most appropriate option for their application.
	Example: Relationship MeasurementHasData is implemented both as Measurement/MeasurementHasData
	and as MeasuredData/MeasuredDataHasMeasurement.
	
	******************************************************************************************************************************* -->







<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:am="http://dusk.geo.orst.edu/djl/arcgis"
	xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink"
	targetNamespace="http://dusk.geo.orst.edu/djl/arcgis" elementFormDefault="qualified">

	<!--=====================================================-->
	<!--Importing schema files-->
	<!--=====================================================-->
	<import namespace="http://www.opengis.net/gml" schemaLocation="./GML_3.1.1/base/gml.xsd"/>
	<!--=============End of external schemas import==============-->
	<!--=====================================================-->


	<!--===================================================================================================================-->
	<!--Defining Marine Objects-->
	<!--===================================================================================================================-->
	<!--Defining the Object class-->
	<complexType name="ObjectType">
		<annotation>
			<documentation> An object represents a real world object, such as a fish habitat, an
				underwater volcano, or a marker buoy, etc. </documentation>
		</annotation>
		<complexContent>
			<extension base="gml:AbstractFeatureType">
				<attribute name="OBJECTID" type="long" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Object" type="am:ObjectType" substitutionGroup="gml:_Feature"/>
	<!--End of the Object class definition-->

	<!--Defining the Cruise class-->
	<complexType name="CruiseType">
		<annotation>
			<documentation> CruiseType defines a type for the Cruise class. Cruise is an
				instantiable object class that stores the characteristics of a ship during an entire
				expedition. Example: Can be used for defining linear events against MarineLine
				Features, such as the tracklines of a ship during a cruise. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Code" type="string" minOccurs="0">
						<annotation>
							<documentation> A user-defined code for a given cruise </documentation>
						</annotation>
					</element>
					<element name="Name" type="string" minOccurs="0">
						<annotation>
							<documentation> The name of the cruise </documentation>
						</annotation>
					</element>
					<element name="Type" type="string" minOccurs="0">
						<annotation>
							<documentation> </documentation>
						</annotation>
					</element>
					<element name="Purpose" type="string" minOccurs="0">
						<annotation>
							<documentation> The purpose of the cruise </documentation>
						</annotation>
					</element>
					<element name="Status" type="string" minOccurs="0">
						<annotation>
							<documentation> Defines the status of the cruise </documentation>
						</annotation>
					</element>
					<element name="Description" type="string" minOccurs="0">
						<annotation>
							<documentation> A general description of the cruise </documentation>
						</annotation>
					</element>
					<element name="StartDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The beginning time stamp for the cruise </documentation>
						</annotation>
					</element>
					<element name="EndDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The ending time stamp for the cruise </documentation>
						</annotation>
					</element>
					<element name="ShipName" type="string" minOccurs="0">
						<annotation>
							<documentation> The name of the ship participating in the cruise.
							</documentation>
						</annotation>
					</element>
					<!--<element name="CruiseHasTrack" type="am:Track_PropertyType" minOccurs="0"
						maxOccurs="unbounded">
						<annotation>
							<documentation> Associates 0 or many tracks with a cruise. This property
								implements the CruiseHasTracks relationship. It can be omitted.
								Property Track/TrackHasCruise can be used instead. </documentation>
						</annotation>
					</element>-->
					<element name="CruiseHasMeasurementPoint"
						type="am:MeasurementPoint_PropertyType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates 0 or many MeasurementPoints with a cruise.
								This property can be omitted. Property
								MeasurementPoint/MeasurementPointHasCruise can be used instead.
							</documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="CruiseID" type="long" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Cruise" type="am:CruiseType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Cruise is an instantiable object class that stores the characteristics
				of a ship during an entire expedition. Example: Can be used for defining linear
				events against MarineLine Features, such as the tracklines of a ship during a
				cruise. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Cruise_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Cruise"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Cruise class definition -->

	<!--Defining the MarineEvent class-->
	<complexType name="MarineEventType">
		<annotation>
			<documentation> MarineEventType defines a type for the MarineEvent class. MarineEvent is
				an instantiable object class for defining either linear or point events that can be
				applied referenced to any MarineLine Features with Measures (HasM). Examples:
				Shoreline Features: Land Classification, Tourism Areas, Wave Action, Erodability,
				Coastal Risk, Sediment Transport; Transects Features: Accretion/Erosion; Cruise
				Features: Something to do with time, where the Measures of a Cruise are in a Time
				format; Run Features: Something to do with time, where the Measures of a Run are in
				a Time format. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="MarineEventHasMarineFeature" type="am:MarineFeature_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a feature line or a feature point with the
								MarineEvent. This property can be omitted. </documentation>
						</annotation>
					</element>
					<element name="FromLocation" type="double" minOccurs="0">
						<annotation>
							<documentation> Beginning location for a Linear Event, the location for
								a Point Event. </documentation>
						</annotation>
					</element>
					<element name="ToLocation" type="double" minOccurs="0">
						<annotation>
							<documentation> Ending location for a Linear Event. </documentation>
						</annotation>
					</element>
					<element name="DataValue" type="string" minOccurs="0">
						<annotation>
							<documentation> Value for the current event. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="MarineEventID" type="long" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MarineEvent" type="am:MarineEventType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> MarineEvent is an instantiable object class for defining either linear
				or point events that can be applied referenced to any MarineLine Features with
				Measures (HasM). Examples: Shoreline Features: Land Classification, Tourism Areas,
				Wave Action, Erodability, Coastal Risk, Sediment Transport; Transects Features:
				Accretion/Erosion; Cruise Features: Something to do with time, where the Measures of
				a Cruise are in a Time format; Run Features: Something to do with time, where the
				Measures of a Run are in a Time format. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MarineEvent_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MarineEvent"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MarineEvent class definition -->

	<!--Defining the Series class-->
	<complexType name="SeriesType">
		<annotation>
			<documentation> SeriesType defines a type for the Series class. Series is an
				instantiable object class for defining a Series from a collection of
				LocationSeriesPoints or TimeDurationAreas. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<choice>
						<element name="SeriesHasLocationSeries"
							type="am:LocationSeries_PropertyType" minOccurs="0"
							maxOccurs="unbounded">
							<annotation>
								<documentation> A Series contains a collection of
									LocationsSeriesPoints. This property can be omitted. Property
									LocationSeriesPoint/LocationSeriesPointHasSeries can be used
									instead. </documentation>
							</annotation>
						</element>
						<element name="SeriesHasTimeDurationArea"
							type="am:TimeDurationArea_PropertyType" minOccurs="0"
							maxOccurs="unbounded">
							<annotation>
								<documentation> A Series contains a collection of TimeDurationAreas.
									This property can be omitted. Property
									TimeDurationArea/TimeDurationAreaHasSeries can be used instead.
								</documentation>
							</annotation>
						</element>
					</choice>
				</sequence>
				<attribute name="SeriesID" type="long" use="optional">
					<annotation>
						<documentation> This attribute is a unique identifier, database wide, for
							all Series records. </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Series" type="am:SeriesType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Series is an instantiable object class for defining a Series from a
				collection of LocationSeriesPoints or TimeDurationAreas. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Series_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Series"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of SeriesType class definition -->

	<!--Defining the SurveyInfo class-->
	<complexType name="SurveyInfoType">
		<annotation>
			<documentation> SurveyInfoType defines a type for the SurveyInfo class. SurveyInfo is an
				instantiable object class designed for storing information about a specific survey.
				Surveys generally consists of collecting data for specific areas of interest during
				a cruise. Then by various means, surveys collect samples and measure values at many
				locations. The number of locations can range from as few as tens of values, as with
				soil samples or fish counts, to as many as billions of locations using multibeam
				swath mapping equipment capturing depth or backscatter values. However, surveys are
				usually a collection of points, no matter the number. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="StartDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The beginning date of the survey </documentation>
						</annotation>
					</element>
					<element name="EndDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The ending date of the survey </documentation>
						</annotation>
					</element>
					<element name="Description" type="string" minOccurs="0">
						<annotation>
							<documentation> A general description of the Survey </documentation>
						</annotation>
					</element>
					<element name="SurveyInfoHasDevice" type="am:MeasuringDevice_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a MeasuringDevice with the SurveyInfo
							</documentation>
						</annotation>
					</element>
					<element name="SurveyHasTrack" type="am:Track_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Associates a Track with the SurveyInfo </documentation>
						</annotation>
					</element>
					<element name="SurveyHasProfileLine" type="am:ProfileLine_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates ProfileLines with the SurveyInfo. This
								property implements the SurveyHasSurveyKeys and the
								ProfileLineHasSurveyKeys relationships. It can be omitted, Property
								ProfileLine/ProfileLineHasSurveyInfo can be used instead.
							</documentation>
						</annotation>
					</element>
					<element name="SurveyInfoHasPoint" type="am:InstantaneousPoint_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates InstantaneousPoints with the SurveyInfo. This
								property implements the SurveyInfoHasPoints relationsship. It can be
								omitted. Property InstantaneousPoint/InstantaneousPointHasSurveyInfo
								can be used instead. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="SurveyID" type="long" use="optional">
					<annotation>
						<documentation> SurveyID is a unique number identifier, database wide, for
							all SurveyInfo objects. </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="SurveyInfo" type="am:SurveyInfoType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> SurveyInfo is an instantiable object class designed for storing
				information about a specific survey. Surveys generally consists of collecting data
				for specific areas of interest during a cruise. Then by various means, surveys
				collect samples and measure values at many locations. The number of locations can
				range from as few as tens of values, as with soil samples or fish counts, to as many
				as billions of locations using multibeam swath mapping equipment capturing depth or
				backscatter values. However, surveys are usually a collection of points, no matter
				the number. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="SurveyInfo_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:SurveyInfo"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of SurveyInfo class definition -->

	<!--Defining the Vehicle class -->
	<complexType name="VehicleType">
		<annotation>
			<documentation> VehicleType is a type for the Vehicle class. Vehicle is an instantiable
				object class for storing information about the vehicle being used during a
			survey.</documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Name" type="string" minOccurs="0">
						<annotation>
							<documentation> The name of the vehicle </documentation>
						</annotation>
					</element>
					<element name="Type" type="string" minOccurs="0">
						<annotation>
							<documentation> Text describing the type of a vehicle </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="VehicleID" type="long" use="optional">
					<annotation>
						<documentation> A unique identifier, database wide, for all Vehicle records
						</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Vehicle" type="am:VehicleType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Vehicle is an instantiable object class for storing information about
				the vehicle being used during a survey.</documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Vehicle_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Vehicle"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Vehicle class definition -->


	<!--=====================================================-->
	<!--Defining Measurements-->
	<!--=====================================================-->

	<!--Defining the Measurement class-->
	<complexType name="MeasurementType">
		<annotation>
			<documentation> MeasurementType is a type for the Measurement class. Measurement is an
				instantiable object class designed for extending a single feature with multiple
				depths. Example: A position along a TC String, ADCP Bin, CTD Bottle.
			</documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="FeatureClass" type="string" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The name of the feature class in which the relating
								feature participates </documentation>
						</annotation>
					</element>
					<element name="XLocation" type="double" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The X coordinate of the Measurement as it might vary
								from the X coordinate of the feature the Measurement is associated
								to </documentation>
						</annotation>
					</element>
					<element name="ZLocation" type="double" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The value representing the depth being associated with
								the feature </documentation>
						</annotation>
					</element>
					<element name="YLocation" type="double" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The Y coordinate of the Measurement as it might vary
								from the Y coordinate of the feature the Measurement is associated
								to </documentation>
						</annotation>
					</element>
					<element name="MeasurementHasData" type="am:MeasuredData_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates measured data with a measurement. This
								property implements the MeasurementHasData relationship. It can be
								omitted. Property MesuredData/MeasuredDataHasMeasurement can be used
								instead. </documentation>
						</annotation>
					</element>
					<element name="MeasurementHasMarineFeature" type="am:MarineFeature_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> All features from any feature class have the potential
								to form a relationship with the Measurement class. This property
								associates a MarineFeature object with the Measurement. It can be
								omitted. Property MarineFeature/MarineFeatureHasMeasurement can be
								used instead. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="MeasurementID" type="integer" use="optional">
					<annotation>
						<documentation> A unique identifier, database wide, for all Measurement
							objects </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Measurement" type="am:MeasurementType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Measurement is an instantiable object class designed for extending a
				single feature with multiple depths. Example: A position along a TC String, ADCP
				Bin, CTD Bottle. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Measurement_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Measurement"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Measurement class definition -->

	<!--Defining the MeasuredData class-->
	<complexType name="MeasuredDataType">
		<annotation>
			<documentation> MeasuredDataType defines a type for the MeasuredData class. MeasuredData
				is an instantiable object class that stores recorded values for a given parameter.
			</documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="DataValue" type="double" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The recorded value. </documentation>
						</annotation>
					</element>
					<element name="MeasuredDataHasMeasurement" type="am:Measurement_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Measurement with MeasuredData. This
								property implements the MeasurementHasData relationship. It can be
								omitted. Property Measurement/MeasurementHasData can be used
								instead. </documentation>
						</annotation>
					</element>
					<element name="MeasuredDataHasDevice" type="am:MeasuringDevice_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Device with the MeasuredData. This property
								implements the MeasuringDeviceHasData relationship. </documentation>
						</annotation>
					</element>
					<element name="MeasuredDataHasParameter" type="am:Parameter_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Parameter with the MeasuredData. This
								property implements the ParameterHasData relationship.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MeasuredData" type="am:MeasuredDataType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> MeasuredData is an instantiable object class that stores recorded values
				for a given parameter. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MeasuredData_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeasuredData"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MeasuredData class definition -->

	<!--Defining the MeasuringDevice class-->
	<complexType name="MeasuringDeviceType">
		<annotation>
			<documentation> MeasuringDeviceType is a type for the MeasuringDevice class.
				MeasuringDevice is an instantiable object class that stores information pertaining
				to the device taking the measurements. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Name" type="string" minOccurs="0">
						<annotation>
							<documentation> Name of the device </documentation>
						</annotation>
					</element>
					<element name="Description" type="string" minOccurs="0">
						<annotation>
							<documentation> Description of the device </documentation>
						</annotation>
					</element>
					<element name="MeasuringDeviceHasVehicle" type="am:Vehicle_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates a Vehicle with a MeasuringDevice
							</documentation>
						</annotation>
					</element>
					<!--<element name="MeasuringDeviceHasData" type="am:MeasuredData_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates MeasuredData with a MeasuringDevice. This
								property implements the MeasuringDeviceHasData relationship. It can
								be omitted. Property MeasuredData/MeasuredDataHasDevice can be used
								instead. </documentation>
						</annotation>
					</element>-->
				</sequence>
				<attribute name="DeviceID" type="long" use="optional">
					<annotation>
						<documentation> A unique identifier, database wide, for all MeasuringDevice
							objects </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MeasuringDevice" type="am:MeasuringDeviceType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> MeasuringDevice is an instantiable object class that stores information
				pertaining to the device taking the measurements. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MeasuringDevice_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeasuringDevice"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MeasuringDevice class definition -->

	<!--Defining the Parameter class-->
	<complexType name="ParameterType">
		<!-- Not to confuse with parameterType (small 't') -->
		<annotation>
			<documentation> ParameterType is a type for the Parameter class. Parameter is an
				instantiable object class that stores information about the parameters being
				measured. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Name" type="string" minOccurs="0">
						<annotation>
							<documentation> The name of a parameter </documentation>
						</annotation>
					</element>
					<element name="Description" type="string" minOccurs="0">
						<annotation>
							<documentation> The description of a parameter </documentation>
						</annotation>
					</element>
					<element name="Unit" type="string" minOccurs="0">
						<annotation>
							<documentation> The unit of measure for a parameter </documentation>
						</annotation>
					</element>
					<element name="SignificantDigits" type="long" minOccurs="0">
						<annotation>
							<documentation> The number of significant digits defining the precision
								of this parameter </documentation>
						</annotation>
					</element>
					<!--<element name="ParameterHasData" type="am:MeasuredData_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates MeasuredData with the parameter. This
								property implements the ParameterHasData relationship. It can be
								omitted. Property MeasuredData/MeasuredDataHasParameter can be used
								instead. </documentation>
						</annotation>
					</element>-->
					<!--<choice>
						<element name="ParameterHasVector" type="am:VectorQuantity_PropertyType"
							minOccurs="0" maxOccurs="unbounded">
							<annotation>
								<documentation> Associates VectorQuantities with a Parameter. This
									property implements the ParameterHasVectors relationship. It can
									be omitted. Property VectorQuantity/VectorQuantityHasParameter
									can be used instead. </documentation>
							</annotation>
						</element>
						<element name="ParameterHasScalar" type="am:ScalarQuantity_PropertyType"
							minOccurs="0" maxOccurs="unbounded">
							<annotation>
								<documentation> Associates ScalarQuantities with a Parameter. This
									property implements the ParameterHasScalars relationship. It can
									be omitted. Property ScalarQuantity/ScalarQuantityHasParameter
									can be used instead. </documentation>
							</annotation>
						</element>
					</choice>-->
				</sequence>
				<attribute name="ParameterID" type="long" use="optional">
					<annotation>
						<documentation> A unique identifier, database wide, for all Parameter
							records </documentation>
					</annotation>
				</attribute>
				<attribute name="Quantity" type="am:parameterType" use="optional" default="1">
					<annotation>
						<documentation> The quantity type for a parameter</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Parameter" type="am:ParameterType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Parameter is an instantiable object class that stores information about
				the parameters being measured. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Parameter_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Parameter"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Parameter class definition -->


	<!--=====================================================-->
	<!--Defining TimeSeries-->
	<!--=====================================================-->

	<!--Defining the TSType class-->
	<complexType name="TSTypeType">
		<annotation>
			<documentation> The TSTypeType defines a type for the TSType class. TSType is an index
				of the types of time series data stored in the TimeSeries objects. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Variable" type="string" minOccurs="0">
						<annotation>
							<documentation> The type of data being described by the time series
							</documentation>
						</annotation>
					</element>
					<element name="Units" type="string" minOccurs="0">
						<annotation>
							<documentation> The units of measurement </documentation>
						</annotation>
					</element>
					<element name="IsRegular" type="am:AHBoolean" minOccurs="0">
						<annotation>
							<documentation> Whether the units have a regular or irregular time step
							</documentation>
						</annotation>
					</element>
					<element name="TSInterval" type="am:TSIntervalType" nillable="true"
						minOccurs="0">
						<annotation>
							<documentation> The interval between two time steps </documentation>
						</annotation>
					</element>
					<element name="DataType" type="am:TSDataType" minOccurs="0">
						<annotation>
							<documentation> The type of time series (1=Instantaneous, 2=Cumulative,
								3=Incremental, etc.) </documentation>
						</annotation>
					</element>
					<element name="Origin" type="am:TSOrigins" minOccurs="0">
						<annotation>
							<documentation> The origin of the time series (1=Recorded, 2=Generated)
							</documentation>
						</annotation>
					</element>
					<element name="TSTypeHasTimeSeries" type="am:TimeSeries_PropertyType"
						maxOccurs="unbounded">
						<annotation>
							<documentation> Associates TimeSeries with the TSType. This property
								implements the TSTypeHasTimeSeries. It can be omitted. Property
								TimeSeries/TimeSeriesHasTSType can be used instead. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="TSTypeID" type="long" use="optional">
					<annotation>
						<documentation> A unique identifier, database wide, for all TSType records
						</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="TSType" type="am:TSTypeType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> TSType is an index of the types of time series data stored in the
				TimeSeries objects. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="TSType_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:TSType"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of TSType class definition -->

	<!--Defining the TimeSeries class-->
	<complexType name="TimeSeriesType">
		<annotation>
			<documentation> TimeSeriesType is a type for the TimeSeries class. TimeSeries is an
				instantiable object class that stores the time-varying attributes of features.
			</documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="TSDateTime" type="date" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The date and time stamp of a time series value
							</documentation>
						</annotation>
					</element>
					<element name="TSValue" type="double" nillable="false" minOccurs="0">
						<annotation>
							<documentation> The measured value for the time step </documentation>
						</annotation>
					</element>
					<element name="TimeSeriesHasMarineFeature" type="am:MarineFeature_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> All features from any feature class have the potential
								to form a relationship with the TimeSeries class. This property can
								be omitted. Property MarineFeature/MarineFeatureHasTimeSeries can be
								used instead. </documentation>
						</annotation>
					</element>
					<element name="TimeSeriesHasTSType" type="am:TSType_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Associates a TSType with the TimeSeries. This property
								implements the TSTypeHasTimeSeries. It can be omitted. Property
								TSType/TSTypeHasTimeSeries can be used instead. </documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="TimeSeries" type="am:TimeSeriesType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> TimeSeries is an instantiable object class that stores the time-varying
				attributes of features. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="TimeSeries_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:TimeSeries"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of TimeSeries class definition -->




	<!--===================================================================================================================-->
	<!--Defining Marine Features-->
	<!--===================================================================================================================-->
	
	
	<!--Defining the Feature class-->
	<complexType name="FeatureType">
		<annotation>
			<documentation> FeatureType is a type for the Feature class. Features are geographic
				objects that have a spatial location defined. More specifically, a feature is just
				like an object but it also has a geometry or shape column in its relational database
				table. Through inheritance, a feature class has all of the attributes and behaviors
				of the object, but with additional, spatial capabilities. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="Shape" type="gml:GeometryPropertyType" nillable="true"
						minOccurs="0">
						<annotation>
							<documentation> The Shape property is the geometric property of a
								feature. </documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Feature" type="am:FeatureType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Features are geographic objects that have a spatial location defined.
				More specifically, a feature is just like an object but it also has a geometry or
				shape column in its relational database table. Through inheritance, a feature class
				has all of the attributes and behaviors of the object, but with additional, spatial
				capabilities. </documentation>
		</annotation>
	</element>
	<!--End of Feature class definition-->

	<!--Defining the abstract MarineFeature class-->
	<complexType name="MarineFeatureType" abstract="true">
		<annotation>
			<documentation> MarineFeatureType is a type for the MarineFeature class. Marine Features
				are feature classes for representing physical maritime features (i.e., spatial
				features that represent natural or manmade things in the water). </documentation>
		</annotation>
		<complexContent>
			<extension base="am:FeatureType">
				<sequence>
					<element name="FeatureCode" type="string" minOccurs="0">
						<annotation>
							<documentation> A user-defined code used for identifying a feature
							</documentation>
						</annotation>
					</element>
					<element name="MarineFeatureHasMeasurement" type="am:Measurement_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> All features from any feature class have the potential
								to form a relationship with the Measurement class. This property
								associates a Measurements with the MarineFeature. It can be omitted.
								Property Measurement/MeasurementHasMarineFeature can be used
								instead. </documentation>
						</annotation>
					</element>
					<element name="MarineFeatureHasTimeSeries" type="am:TimeSeries_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> All features from any feature class have the potential
								to form a relationship with the TimeSeries class. This property
								associates a TimeSeries with the MarineFeature. It can be omitted.
								Property TimeSeries/TimeSeriesHasMarineFeature can be used instead.
							</documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="FeatureID" type="long" use="optional">
					<annotation>
						<documentation> A geodatabase-wide unique identifier and key field for
							MarineFeatures </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MarineFeature" type="am:MarineFeatureType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> Marine Features are feature classes for representing physical maritime
				features (i.e., spatial features that represent natural or manmade things in the
				water). </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MarineFeature_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MarineFeature"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of the abstract MarineFeature class definition-->


	<!--=====================================================-->
	<!--Defining Marine Points-->
	<!--=====================================================-->



	<!--Defining the abstract MarinePoint class-->
	<complexType name="MarinePointType" abstract="true">
		<annotation>
			<documentation> MarinePointType is a type for the the MarinePoint class class.
				MarinePoint is a generic abstract class for representing Marine Features and
				Measurement Points. </documentation>
		</annotation>
		<complexContent>
			<restriction base="am:MarineFeatureType">
				<!--<sequence>
					<element name="Shape" type="gml:PointPropertyType"></element>
				</sequence>-->
			</restriction>
			<!--Warning: The geometry must be of type gml:PointType-->
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MarinePoint" type="am:MarinePointType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> MarinePoint is a generic abstract class for representing Marine Features
				and Measurement Points. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MarinePoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MarinePoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of the abstract MarinePoint class definition-->

	<!--Defining the FeaturePoint class-->
	<complexType name="FeaturePointType">
		<annotation>
			<documentation> FeaturePointType defines a type for the FeaturePoint class. A
				FeaturePoint could be a fixed object, such as a permanent monument, a structure, or
				a fixed buoy that does not require any specific measurement or attribute. The
				standard point feature common to standard GIs applications would sufficiently
				represent this feature as a fixed (x, y) location in space and would allow for
				attributes to be attached or related to this feature. The feature would be
				considered as not having any required temporal attributes, but in a marine
				environment a required z-elevation value would be necessary to relate the feature to
				a vertical datum. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarinePointType"/>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="FeaturePoint" type="am:FeaturePointType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> A FeaturePoint could be a fixed object, such as a permanent monument, a
				structure, or a fixed buoy that does not require any specific measurement or
				attribute. The standard point feature common to standard GIs applications would
				sufficiently represent this feature as a fixed (x, y) location in space and would
				allow for attributes to be attached or related to this feature. The feature would be
				considered as not having any required temporal attributes, but in a marine
				environment a required z-elevation value would be necessary to relate the feature to
				a vertical datum. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="FeaturePoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:FeaturePoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of FeaturePoint class definition -->

	<!--Defining the MeasurementPoint class-->
	<complexType name="MeasurementPointType" abstract="true">
		<annotation>
			<documentation> MeasurementPointType is a type for the MeasurementPoint class.
				MeasurementPoint is an abstract subclass of MarinePoint used for categorizing points
				that are associated with Time or Measurements. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarinePointType">
				<sequence>
					<element name="MeasurementPointHasCruise" type="am:Cruise_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates 0 or many Cruises with the MeasurementPoint.
								This property can be omitted. Property
								Cruise/CruiseHasMeasurementPoint can be used instead.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MeasurementPoint" type="am:MeasurementPointType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> MeasurementPoint is an abstract subclass of MarinePoint used for
				categorizing points that are associated with Time or Measurements. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MeasurementPoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeasurementPoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MeasurementPoint class definition -->

	<!--Defining the TimeSeriesPoint class-->
	<complexType name="TimeSeriesPointType">
		<annotation>
			<documentation> TimeSeriesPointType is a type for the TimeSeries class. While Location
				Series provide the generic representation for moving points, the Time Series subtype
				provides a representation for features that stay in a fixed location but record
				attribute data over time. Again, numerous marine features readily fit this
				description. A weather buoy recording wave heights and wind speeds at a fixed
				location, a sea turtle nesting beach where observers record the number of hatchlings
				each season, and a gauging station in an estuary that records changes in salinity
				are all fixed geographic locations with attributes measured at different time
				intervals. So Time Series points can provide a common data type for a wide variety
				of common monitoring applications in coastal and marine environments. A
				TimeSeriesPoint can have multiple Z depths via implementing the Measurement object
				class. Examples: Observation buoy or hydrophone, Moored Current meter, OBS (Ocean
				Bottom Seismometer), Moored ADCP (Acoustic Doppler Current Profiler)
			</documentation>
		</annotation>
		<complexContent>
			<extension base="am:MeasurementPointType"/>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="TimeSeriesPoint" type="am:TimeSeriesPointType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> While Location Series provide the generic representation for moving
				points, the Time Series subtype provides a representation for features that stay in
				a fixed location but record attribute data over time. Again, numerous marine
				features readily fit this description. A weather buoy recording wave heights and
				wind speeds at a fixed location, a sea turtle nesting beach where observers record
				the number of hatchlings each season, and a gauging station in an estuary that
				records changes in salinity are all fixed geographic locations with attributes
				measured at different time intervals. So Time Series points can provide a common
				data type for a wide variety of common monitoring applications in coastal and marine
				environments. A TimeSeriesPoint can have multiple Z depths via implementing the
				Measurement object class. Examples: Observation buoy or hydrophone, Moored Current
				meter, OBS (Ocean Bottom Seismometer), Moored ADCP (Acoustic Doppler Current
				Profiler) </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="TimeSeriesPoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeasurementPoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of TimeSeriesPoint class definition -->

	<!--Defining the InstantaneousPoint class -->
	<complexType name="InstantaneousPointType">
		<annotation>
			<documentation> InstantaneousPointType is a type for the InstantaneousPoint class. Often
				the time of an observation is critical to the representation of the data and further
				analysis for marine GIS applications. A conductivity-temperature-depth (CTD) cast
				from a vessel measures salinity, temperature, and depth for a particular moment in
				time at a particular depth. Similarly, an observer spotting a right whale notes the
				location as well as the time of observation. Our ability to analyze and relate
				marine observation data to other marine features is inherently tied to our ability
				to locate observation in time and space. So the development of a feature class
				subtype specifically designed to represent data tied to an instant in time is
				essential for a wide number of marine applications. The Instantaneous Point subtype
				provides a common feature class that requires a location (x, y, z) as well as a time
				(t) description in addition to any measurement (m1, ..., mn) attributes collected at
				that location in space and time. Each observation in this generic data type is
				independant. Examples: CTD (conductivity/temperature/depth), XBT (eXpendable
				BathyThermograph), SVP (Sound Velocity Profile) casts below the water surface, all
				with multiple Measurements. Instantaneous Point = CTD or measurement package
				Measurement Table – Measure ID of 1st CTD measure stop at depth z MDevice Table =
				bottle, or could be same device but calibrated different way MType = reading is of
				type dissolved O2 (could be salinity, temp, photosynthetically available radiation
				(PAR), etc.) MData = that actual numerical value of dissolved O2. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MeasurementPointType">
				<sequence>
					<element name="TimeValue" type="date" minOccurs="0">
						<annotation>
							<documentation> The time stamp for identifying the point.
							</documentation>
						</annotation>
					</element>
					<element name="ZValue" type="double" minOccurs="0">
						<annotation>
							<documentation> The Z value for identifying the point. </documentation>
						</annotation>
					</element>
					<element name="InstantaneousPointHasSurveyInfo"
						type="am:SurveyInfo_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Associates a Survey with the InstantaneousPoint. This
								property implements the SurveyHasPoints relationship. It can be
								omitted. Property SurveyInfo/SurveyInfoHasPoint can be used instead.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="InstantaneousPoint" type="am:InstantaneousPointType"
		substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Often the time of an observation is critical to the representation of
				the data and further analysis for marine GIS applications. A
				conductivity-temperature-depth (CTD) cast from a vessel measures salinity,
				temperature, and depth for a particular moment in time at a particular depth.
				Similarly, an observer spotting a right whale notes the location as well as the time
				of observation. Our ability to analyze and relate marine observation data to other
				marine features is inherently tied to our ability to locate observation in time and
				space. So the development of a feature class subtype specifically designed to
				represent data tied to an instant in time is essential for a wide number of marine
				applications. The Instantaneous Point subtype provides a common feature class that
				requires a location (x, y, z) as well as a time (t) description in addition to any
				measurement (m1, ..., mn) attributes collected at that location in space and time.
				Each observation in this generic data type is independant. Examples: CTD
				(conductivity/temperature/depth), XBT (eXpendable BathyThermograph), SVP (Sound
				Velocity Profile) casts below the water surface, all with multiple Measurements.
				Instantaneous Point = CTD or measurement package Measurement Table – Measure ID of
				1st CTD measure stop at depth z MDevice Table = bottle, or could be same device but
				calibrated different way MType = reading is of type dissolved O2 (could be salinity,
				temp, photosynthetically available radiation (PAR), etc.) MData = that actual
				numerical value of dissolved O2. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="InstantaneousPoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:InstantaneousPoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of InstantaneousPoint class definition -->

	<!--Defining the Sounding class -->
	<complexType name="SoundingType">
		<annotation>
			<documentation> SoundingType is a type for the Sounding class. Soundings, the
				measurement or estimate of a depth value (z) at a location with no other attributes,
				is a very common Point Feature in marine applications and was assigned a seperate
				subtype to represent this simple feature. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:InstantaneousPointType"> </extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Sounding" type="am:SoundingType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Soundings, the measurement or estimate of a depth value (z) at a
				location with no other attributes, is a very common Point Feature in marine
				applications and was assigned a seperate subtype to represent this simple feature.
			</documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Sounding_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Sounding"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Sounding class definition -->

	<!--Defining the SurveyPoint class -->
	<complexType name="SurveyPointType">
		<annotation>
			<documentation> SurveyPointType is a type for the Survey class. A Survey Point measures
				a single defined measurement (e.g. lidar elevations) at a discrete geographic
				location with no other required attributes. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:InstantaneousPointType"> </extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="SurveyPoint" type="am:SurveyPointType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> A Survey Point measures a single defined measurement (e.g. lidar
				elevations) at a discrete geographic location with no other required attributes.
			</documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="SurveyPoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:SurveyPoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of SurveyPoint class definition -->

	<!--Defining the LocationSeries class -->
	<complexType name="LocationSeriesType">
		<annotation>
			<documentation> LocationSeriesType is a type for the LocationSeries class. Another data
				type common to marine applications pertains to objects moving in the ocean
				environment. A vessel moving along a track, an autonomous vehicle conducting a dive,
				and a telemetry track of a satellite-tagged animal all represent multiple locations
				in space and time for a single entity. The Location Series subtype represents a
				series of point locations for an identified feature. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:InstantaneousPointType"> </extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="LocationSeries" type="am:LocationSeriesType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Another data type common to marine applications pertains to objects
				moving in the ocean environment. A vessel moving along a track, an autonomous
				vehicle conducting a dive, and a telemetry track of a satellite-tagged animal all
				represent multiple locations in space and time for a single entity. The Location
				Series subtype represents a series of point locations for an identified feature.
			</documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="LocationSeries_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:LocationSeries"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of LocationSeries class definition -->


	<!--=====================================================-->
	<!--Defining Marine Lines-->
	<!--=====================================================-->

	<!--Defining the abstract MarineLine class-->
	<complexType name="MarineLineType" abstract="true">
		<annotation>
			<documentation> MarineLineType defines a type for the MarineLine class. The MarineLine
				class is an abstract class for defining subclasses of linear features.
			</documentation>
		</annotation>
		<complexContent>
			<restriction base="am:MarineFeatureType"> </restriction>
			<!--Warning: The geometry must be of type gml:CurvePropertyType-->
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MarineLine" type="am:MarineLineType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> The MarineLine class is an abstract class for defining subclasses of
				linear features. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MarineLine_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MarineLine"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of the abstract MarineLine class definition-->

	<!--Defining the FeatureLine class-->
	<complexType name="FeatureLineType">
		<annotation>
			<documentation> FeatureLineType defines a type for the FeatureLine feature class. Many
				marine features are most appropriately represented by standard line features. An
				undersea cable, a juridictional boundary, or a shipping lane could all be readily
				represented with a standard Feature Line. Feature Lines require a unique identifier;
				a vector of x,y coordinate pairs; as well as free-form measurement attributes unique
				to the particular application. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineLineType"/>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="FeatureLine" type="am:FeatureLineType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Many marine features are most appropriately represented by standard line
				features. An undersea cable, a juridictional boundary, or a shipping lane could all
				be readily represented with a standard Feature Line. Feature Lines require a unique
				identifier; a vector of x,y coordinate pairs; as well as free-form measurement
				attributes unique to the particular application. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="FeatureLine_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:FeatureLine"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of FeatureLine class definition -->

	<!--Defining the Shoreline class-->
	<complexType name="ShorelineType">
		<annotation>
			<documentation> ShoreLineType defines a type for the ShoreLine feature class. One
				category of Feature Line is so common and essential for coastal and marine
				applications that we provided a specialized subtype. Shoreline is a subtype of
				Feature Lines in that it demarcates essential boundaries of oceans and estuaries,
				but Shoreline definitions must also be explicitly stated (e.g. Mean Low Water versus
				Mean High Water) and must relate to a vertical datum to be properly represented. The
				specialized Shoreline subtype requires a shoreline type and a VDatum attribute to
				assure consistency in the representation and interpretation of shoreline features.
				Examples: Shoreline types can be according to datums (Mean High Water, Mean Low
				Water, etc.), or rocky, sandy, etc. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:FeatureLineType">
				<sequence>
					<element name="VDatum" type="double" minOccurs="0">
						<annotation>
							<documentation> The VDatum property defines the vertical datum for the
								Shoreline feature. </documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<!-- ........................................................................ -->
	<element name="Shoreline" type="am:ShorelineType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> One category of Feature Line is so common and essential for coastal and
				marine applications that we provided a specialized subtype. Shoreline is a subtype
				of Feature Lines in that it demarcates essential boundaries of oceans and estuaries,
				but Shoreline definitions must also be explicitly stated (e.g. Mean Low Water versus
				Mean High Water) and must relate to a vertical datum to be properly represented. The
				specialized Shoreline subtype requires a shoreline type and a VDatum attribute to
				assure consistency in the representation and interpretation of shoreline features.
				Examples: Shoreline types can be according to datums (Mean High Water, Mean Low
				Water, etc.), or rocky, sandy, etc. </documentation>
		</annotation>
	</element>
	<!--End of Shoreline class definition -->

	<!--Defining the ProfileLine class-->
	<complexType name="ProfileLineType">
		<annotation>
			<documentation> ProfileLineType defines a type for the ProfileLine feature class. The
				Profile Line subtype provides a common data type for the representation of
				attributes along a linear feature. Some common examples in marine GIS applications
				would be a bathymetric profile constructed from a bathymetric grid (with change
				measures along that profile), cross sections, seismic reflections, or transport
				lines. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineLineType">
				<sequence>
					<element name="ProfileLineHasSurveyInfo" type="am:SurveyInfo_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates SurveyInfo with a ProfileLine. This property
								implements the SurveyHasSurveyKeys and the ProfileLineHasSurveyKeys
								relationships. It can be omitted, Property
								SurveyInfo/SurveyHasProfileLine can be used instead.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="ProfileLine" type="am:ProfileLineType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> The Profile Line subtype provides a common data type for the
				representation of attributes along a linear feature. Some common examples in marine
				GIS applications would be a bathymetric profile constructed from a bathymetric grid
				(with change measures along that profile), cross sections, seismic reflections, or
				transport lines. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="ProfileLine_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:ProfileLine"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of ProfileLine class definition -->

	<!--Defining the TimeDurationLine feature class-->
	<complexType name="TimeDurationLineType" abstract="true">
		<annotation>
			<documentation> DataLineType is a type for the DataLine feature class. Just as point
				observations in marine applications often need to be explicitly related to the time,
				lines also often need to be represented with starting and stopping time as well as
				starting and stopping location. We developed the Time duration Lines data type to
				provide marine GIS users with a common feature that requires a starting time, an
				ending time, and duration as core attributes. Types of common marine applications
				could be recording the sampling effort of a research vessel along legs of a survey,
				the duration of a trawl, and a segment of an autonomous vehicle track. With the
				required time attributes, each of these types of Time Duration Line features could
				be associated with other marine features based on the time of the observation along
				the line. This allows for a more direct method of associating dynamic environmental
				features (e.g. sea surface temperature - SST - or Beaufort Sea State) with the
				location and the appropriate period of time for the line. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineLineType">
				<sequence>
					<element name="StartDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The beginning time stamp for the feature
							</documentation>
						</annotation>
					</element>
					<element name="EndDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The ending time stamp for the feature </documentation>
						</annotation>
					</element>
					<element name="TimeDurationLineHasVehicle" type="am:Vehicle_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Vehicle with the Time Duration Line.
							</documentation>
						</annotation>
					</element>
					<element name="TimeDurationLineHasCruise" type="am:Cruise_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Cruise with the Time Duration Line.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="TimeDurationLine" type="am:TimeDurationLineType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> Just as point observations in marine applications often need to be
				explicitly related to the time, lines also often need to be represented with
				starting and stopping time as well as starting and stopping location. We developed
				the Time duration Lines data type to provide marine GIS users with a common feature
				that requires a starting time, an ending time, and duration as core attributes.
				Types of common marine applications could be recording the sampling effort of a
				research vessel along legs of a survey, the duration of a trawl, and a segment of an
				autonomous vehicle track. With the required time attributes, each of these types of
				Time Duration Line features could be associated with other marine features based on
				the time of the observation along the line. This allows for a more direct method of
				associating dynamic environmental features (e.g. sea surface temperature - SST - or
				Beaufort Sea State) with the location and the appropriate period of time for the
				line. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="TimeDurationLine_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:TimeDurationLine"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of TimeDurationLine class definition -->

	<!--Defining the Track feature class-->
	<complexType name="TrackType">
		<annotation>
			<documentation> TrackType defines a type for the Track feature class. Track is a linear
				feature class representinf the path and event associated with going on a specific
				tangent from the expedition. A Track can be further defined by the Cruise object
				class. Example: The track of a research vessel during an entire expedition, or the
				track of a vehicle during a run of observations or measurements. A track can be very
				complex depending on the kind of measurements made in multiple surveys, as opposed
				to a transect which is normally somewhat of a straight line and derived from one and
				only one survey. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:TimeDurationLineType">
				<sequence>
					<element name="Name" type="string" minOccurs="0">
						<annotation>
							<documentation> The name of a specific Track </documentation>
						</annotation>
					</element>
					<element name="Method" type="string" minOccurs="0">
						<annotation>
							<documentation> Text describing the method for a specific track
							</documentation>
						</annotation>
					</element>
					<element name="Description" type="string" minOccurs="0">
						<annotation>
							<documentation> Text describing the Track </documentation>
						</annotation>
					</element>
					<element name="LocalDesc" type="string" minOccurs="0">
						<annotation>
							<documentation> Text describing the locale of the Track </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="TrackID" type="long" use="optional">
					<annotation>
						<documentation> An identifier for a Track feature </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Track" type="am:TrackType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Track is a linear feature class representinf the path and event
				associated with going on a specific tangent from the expedition. A Track can be
				further defined by the Cruise object class. Example: The track of a research vessel
				during an entire expedition, or the track of a vehicle during a run of observations
				or measurements. A track can be very complex depending on the kind of measurements
				made in multiple surveys, as opposed to a transect which is normally somewhat of a
				straight line and derived from one and only one survey. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Track_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Track"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Track feature class definition -->


	<!--=====================================================-->
	<!--Defining Marine Areas-->
	<!--=====================================================-->

	<!--Defining the abstract MarineArea class-->
	<complexType name="MarineAreaType" abstract="true">
		<annotation>
			<documentation> MarineAreaType is a type for the MarineArea class. Area features in the
				marine environment are devided into two common types: Feature Areas represented as
				static, time-independant areas, and Time Duration Areas that require changing time
				attriutes for their representation. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineFeatureType"/>
			<!--Warning: The geometry must be of type gml:SurfacePropertyType-->
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MarineArea" type="am:MarineAreaType" substitutionGroup="gml:_Feature"
		abstract="true">
		<annotation>
			<documentation> Area features in the marine environment are devided into two common
				types: Feature Areas represented as static, time-independant areas, and Time
				Duration Areas that require changing time attriutes for their representation.
			</documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MarineArea_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MarineArea"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of the abstract MarineArea class definition-->

	<!--Defining the FeatureArea class-->
	<complexType name="FeatureAreaType">
		<annotation>
			<documentation> FeatureAreaType is a type for the FeatureArea class. Any marine area
				that can be represented by a static polygon can be appropriately represented as a
				Feature Area. Three straightforward examples of Feature Areas are the permanent
				juridictional area of a marine sanctuary, benthic habitat features, or the area
				contained within the exclusive economic zone (EEZ) of a nation. Feature Areas
				require a unique identifier, a vector of x,y coordinates forming the boundary; a
				depth (z) attribute; as well as user-defined measurement (m) attributes.
			</documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineAreaType"/>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="FeatureArea" type="am:FeatureAreaType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Any marine area that can be represented by a static polygon can be
				appropriately represented as a Feature Area. Three straightforward examples of
				Feature Areas are the permanent juridictional area of a marine sanctuary, benthic
				habitat features, or the area contained within the exclusive economic zone (EEZ) of
				a nation. Feature Areas require a unique identifier, a vector of x,y coordinates
				forming the boundary; a depth (z) attribute; as well as user-defined measurement (m)
				attributes. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="FeatureArea_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:FeatureArea"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of FeatureArea class definition -->

	<!--Defining the TimeDurationArea class-->
	<complexType name="TimeDurationAreaType">
		<annotation>
			<documentation> TimeDurationAreaType is a type for the TimeDurationArea feature class.
				Many features of the marine environment or management responses may be ephemeral.
				Shellfish habitat may be demarcated as exceeding pollution thresholds for a portion
				of the year; seasonal area management (SAMs) and dynamic area management (DAMs)
				fisheries closures may be invoked for particular seasons or after specific events;
				and oil and gas leases may persist for specific periods of time. These three
				examples represent a geographic area feature tied to a specific starting and
				stopping time. The team developed the Time Duration Area data type to allow for this
				appropriate representation of marine features that persist for specified periods of
				time. This type of time-dependent area feature allows for users to make queries
				concerning overlaps in space and time. The Time Duration Area feature requires a
				beginning and ending time attribute in addition to the standard variables required
				for general area features. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineAreaType">
				<sequence>
					<element name="StartDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The beginning time stamp for the feature
							</documentation>
						</annotation>
					</element>
					<element name="EndDate" type="date" minOccurs="0">
						<annotation>
							<documentation> The ending time stamp for the feature </documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="TimeDurationArea" type="am:TimeDurationAreaType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> Many features of the marine environment or management responses may be
				ephemeral. Shellfish habitat may be demarcated as exceeding pollution thresholds for
				a portion of the year; seasonal area management (SAMs) and dynamic area management
				(DAMs) fisheries closures may be invoked for particular seasons or after specific
				events; and oil and gas leases may persist for specific periods of time. These three
				examples represent a geographic area feature tied to a specific starting and
				stopping time. The team developed the Time Duration Area data type to allow for this
				appropriate representation of marine features that persist for specified periods of
				time. This type of time-dependent area feature allows for users to make queries
				concerning overlaps in space and time. The Time Duration Area feature requires a
				beginning and ending time attribute in addition to the standard variables required
				for general area features. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="TimeDurationArea_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:TimeDurationArea"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of TimeDurationArea class definition -->



	<!--===================================================================================================================-->
	<!--Defining Mesh Features-->
	<!--===================================================================================================================-->


	<!--Defining the Parameter class-->
	<complexType name="MeshType">
		<annotation>
			<documentation> MeshType is a type for the Mesh object class. A Mesh is a collection of
				points either a line, area, or volume features in nature. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="TotalPoints" type="long" minOccurs="0">
						<annotation>
							<documentation> Total number of points participating in the Mesh
							</documentation>
						</annotation>
					</element>
					<element name="NoOfPointsI" type="long" minOccurs="0">
						<annotation>
							<documentation> Total number of points available in the I direction
								within a Mesh </documentation>
						</annotation>
					</element>
					<element name="NoOfPointsJ" type="long" minOccurs="0">
						<annotation>
							<documentation> Total number of points available in the J direction
								within a Mesh </documentation>
						</annotation>
					</element>
					<element name="NoOfPointsK" type="long" minOccurs="0">
						<annotation>
							<documentation> Total number of points available in the K direction
								within a Mesh </documentation>
						</annotation>
					</element>
					<element name="MeshHasPoint" type="am:MeshPointType" minOccurs="0"
						maxOccurs="unbounded">
						<annotation>
							<documentation> Associates 0 or many Mesh Points. This property
								implements the MeshHasPoints relationship. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="MeshID" type="long" use="optional">
					<annotation>
						<documentation> The unique identifier for a Mesh </documentation>
					</annotation>
				</attribute>
				<attribute name="Dimension" type="am:meshType" default="2">
					<annotation>
						<documentation> A coded value domain defining the subtype to be one of the
							following: 1 = linear, 2 = Area, 3 = Volume </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="Mesh" type="am:MeshType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> A Mesh is a collection of points either a line, area, or volume features
				in nature. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="Mesh_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:Mesh"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of Parameter class definition -->

	<!--Defining the MeshElement feature class-->
	<complexType name="MeshElementType">
		<annotation>
			<documentation> MeshElementType is a type for the MeshElement feature class.
				MeshElements are polygonal features composed of a combination of either three or
				four nodes. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineFeatureType">
				<sequence>
					<element name="Node1" type="am:MeshPoint_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Contains a Mesh Point that represents a corner of the
								MeshElement </documentation>
						</annotation>
					</element>
					<element name="Node2" type="am:MeshPoint_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Contains a Mesh Point that represents a corner of the
								MeshElement </documentation>
						</annotation>
					</element>
					<element name="Node3" type="am:MeshPoint_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Contains a Mesh Point that represents a corner of the
								MeshElement </documentation>
						</annotation>
					</element>
					<element name="Node4" type="am:MeshPoint_PropertyType" minOccurs="0">
						<annotation>
							<documentation> Contains a Mesh Point that represents a corner of the
								MeshElement </documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MeshElement" type="am:MeshElementType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> MeshElements are polygonal features composed of a combination of either
				three or four nodes. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MeshElement_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeshElement"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MeshElement class definition -->

	<!--Defining the MeshPoint feature class-->
	<complexType name="MeshPointType">
		<annotation>
			<documentation> MeshPointType is a type for the MeshPoint feature class. MeshPoint is a
				feature class representing point features from a 1D, 2D, or 3D numerical model as
				either an equality spaced mesh or irregularly spaced mesh, where the values of each
				point will change over time. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:MarineFeatureType">
				<sequence>
					<element name="IPosition" type="long" minOccurs="0">
						<annotation>
							<documentation> A feature's location in the I direction for a given mesh
							</documentation>
						</annotation>
					</element>
					<element name="JPosition" type="long" minOccurs="0">
						<annotation>
							<documentation> A feature's location in the J direction for a given mesh
							</documentation>
						</annotation>
					</element>
					<element name="KPosition" type="long" minOccurs="0">
						<annotation>
							<documentation> A feature's location in the K direction for a given mesh
							</documentation>
						</annotation>
					</element>
					<element name="MeshPointHasVector" type="am:VectorQuantity_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates 0 or many Vector Quantities with the Mesh
								Point. This property implements the MeshPointHasVectors
								relationship. </documentation>
						</annotation>
					</element>
					<element name="MeshPointHasScalar" type="am:ScalarQuantity_PropertyType"
						minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation> Associates 0 or many Scalar Quantities with the Mesh
								Point. This property implements the MeshPointHasScalars
								relationship. </documentation>
						</annotation>
					</element>
				</sequence>
				<attribute name="PointType" type="am:meshPointType" default="1">
					<annotation>
						<documentation> A coded value domain defining the subtype to be one of the
							following: 1 = GridPoint, 2 = NodePoint. </documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="MeshPoint" type="am:MeshPointType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> MeshPoint is a feature class representing point features from a 1D, 2D,
				or 3D numerical model as either an equality spaced mesh or irregularly spaced mesh,
				where the values of each point will change over time. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="MeshPoint_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:MeshPoint"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of MeshPoint class definition -->

	<!--Defining the VectorQuantity class-->
	<complexType name="VectorQuantityType">
		<annotation>
			<documentation> VectorQuantityType is a type for the VectorQuantity object class.
				VectorQuantity is an object class that stores the vector values associated with a
				MeshPoint. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="XComponent" type="double" minOccurs="0">
						<annotation>
							<documentation> The vector X component value </documentation>
						</annotation>
					</element>
					<element name="YComponent" type="double" minOccurs="0">
						<annotation>
							<documentation> The vector Y component value </documentation>
						</annotation>
					</element>
					<element name="ZComponent" type="double" minOccurs="0">
						<annotation>
							<documentation> The vector Z component value </documentation>
						</annotation>
					</element>
					<element name="TimeValue" type="dateTime" minOccurs="0">
						<annotation>
							<documentation> The time stamp assigned to the vector value
							</documentation>
						</annotation>
					</element>
					<element name="VectorQuantityHasParameter" type="am:Parameter_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Parameter with the VectorQuantity. This
								property implements the ParameterHasVectors relationship.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="VectorQuantity" type="am:VectorQuantityType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> VectorQuantity is an object class that stores the vector values
				associated with a MeshPoint. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="VectorQuantity_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:VectorQuantity"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of VectorQuantity class definition -->


	<!--Defining the ScalarQuantity class-->
	<complexType name="ScalarQuantityType">
		<annotation>
			<documentation> ScalarQuantityType is a type for the ScalarQuantity object class.
				ScalarQuantity is an object class that stores the scalar values associated with a
				MeshPoint. </documentation>
		</annotation>
		<complexContent>
			<extension base="am:ObjectType">
				<sequence>
					<element name="DataValue" type="double" minOccurs="0">
						<annotation>
							<documentation> The recorded value </documentation>
						</annotation>
					</element>
					<element name="TimeValue" type="dateTime" minOccurs="0">
						<annotation>
							<documentation> The time stamp assigned to the vector value
							</documentation>
						</annotation>
					</element>
					<element name="ScalarQuantityHasParameter" type="am:Parameter_PropertyType"
						minOccurs="0">
						<annotation>
							<documentation> Associates a Parameter with the ScalarQuantity. This
								property implements the ParameterHasScalars relationship.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ........................................................................ -->
	<element name="ScalarQuantity" type="am:ScalarQuantityType" substitutionGroup="gml:_Feature">
		<annotation>
			<documentation> ScalarQuantity is an object class that stores the scalar values
				associated with a MeshPoint. </documentation>
		</annotation>
	</element>
	<!-- ........................................................................ -->
	<complexType name="ScalarQuantity_PropertyType">
		<complexContent>
			<restriction base="gml:AssociationType">
				<sequence>
					<element ref="am:ScalarQuantity"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!--End of ScalarQuantity class definition -->








	<!--===================================================================================================================-->
	<!--Coded Value Domains-->
	<!--===================================================================================================================-->

	<!--Defining the TSIntervalUnitType-->
	<simpleType name="TSIntervalUnitType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Second </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="3">
				<annotation>
					<documentation> Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="4">
				<annotation>
					<documentation> Day </documentation>
				</annotation>
			</enumeration>
			<enumeration value="5">
				<annotation>
					<documentation> Week </documentation>
				</annotation>
			</enumeration>
			<enumeration value="6">
				<annotation>
					<documentation> Month </documentation>
				</annotation>
			</enumeration>
			<enumeration value="7">
				<annotation>
					<documentation> Year </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of TSIntervalUnitType definition -->

	<!--Defining the parameterType-->
	<simpleType name="parameterType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Other </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Scalar </documentation>
				</annotation>
			</enumeration>
			<enumeration value="3">
				<annotation>
					<documentation> Vector </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of parameterType definition -->

	<!--Defining the meshType-->
	<simpleType name="meshType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Linear </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Area </documentation>
				</annotation>
			</enumeration>
			<enumeration value="3">
				<annotation>
					<documentation> Volume </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of meshType definition -->

	<!--Defining the TSIntervalType-->
	<simpleType name="TSIntervalType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> 1 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> 2 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="3">
				<annotation>
					<documentation> 3 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="4">
				<annotation>
					<documentation> 4 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="5">
				<annotation>
					<documentation> 5 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="6">
				<annotation>
					<documentation> 10 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="7">
				<annotation>
					<documentation> 15 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="8">
				<annotation>
					<documentation> 20 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="9">
				<annotation>
					<documentation> 30 Minute </documentation>
				</annotation>
			</enumeration>
			<enumeration value="10">
				<annotation>
					<documentation> 1 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="11">
				<annotation>
					<documentation> 2 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="12">
				<annotation>
					<documentation> 3 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="13">
				<annotation>
					<documentation> 4 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="14">
				<annotation>
					<documentation> 6 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="15">
				<annotation>
					<documentation> 8 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="16">
				<annotation>
					<documentation> 12 Hour </documentation>
				</annotation>
			</enumeration>
			<enumeration value="17">
				<annotation>
					<documentation> 1 Day </documentation>
				</annotation>
			</enumeration>
			<enumeration value="18">
				<annotation>
					<documentation> 1 Week </documentation>
				</annotation>
			</enumeration>
			<enumeration value="19">
				<annotation>
					<documentation> 1 Month </documentation>
				</annotation>
			</enumeration>
			<enumeration value="20">
				<annotation>
					<documentation> 1 Year </documentation>
				</annotation>
			</enumeration>
			<enumeration value="99">
				<annotation>
					<documentation> Other </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of TSIntervalType definition -->

	<!--Defining the TSOrigins type-->
	<simpleType name="TSOrigins">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Recorded </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Generated </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of the TSOrigins type definition -->

	<!--Defining the AHBoolean-->
	<simpleType name="AHBoolean">
		<restriction base="long">
			<enumeration value="0">
				<annotation>
					<documentation> False </documentation>
				</annotation>
			</enumeration>
			<enumeration value="1">
				<annotation>
					<documentation> True </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of AHBoolean definition -->

	<!--Defining the TSDataType-->
	<simpleType name="TSDataType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Instantaneous </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Cumulative </documentation>
				</annotation>
			</enumeration>
			<enumeration value="3">
				<annotation>
					<documentation> Incremental </documentation>
				</annotation>
			</enumeration>
			<enumeration value="4">
				<annotation>
					<documentation> Average </documentation>
				</annotation>
			</enumeration>
			<enumeration value="5">
				<annotation>
					<documentation> Maximum </documentation>
				</annotation>
			</enumeration>
			<enumeration value="6">
				<annotation>
					<documentation> Minimum </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of TSDataType definition -->

	<!--Defining the meshPointType-->
	<simpleType name="meshPointType">
		<restriction base="long">
			<enumeration value="1">
				<annotation>
					<documentation> Grid Point </documentation>
				</annotation>
			</enumeration>
			<enumeration value="2">
				<annotation>
					<documentation> Node Point </documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<!--End of meshPointType definition -->

	<!--End of Coded Value Domains-->
	<!--===================================================================================================================-->


</schema>

