<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 sp2 U (http://www.altova.com) by Galip.Aydin (C.G.L) -->
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Aydin Galip (cgl) -->
<schema xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:om="http://www.opengis.net/om" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.opengis.net/om" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.25">
	<annotation>
		<documentation>
SWEobservation.xsd

A GML conformant schema for rich Observations and Measurements
                               
SJDC  2003-01-30
</documentation>
	</annotation>
	<!-- ====================================================================== -->
	<!-- bring in other schemas -->
	<!--import namespace="http://www.opengis.net/gml" schemaLocation="observationAndValue.xsd"/-->
	<include schemaLocation="observedValue.xsd"/>
	<import namespace="http://www.opengis.net/gml" schemaLocation="includes.xsd"/>
	<!-- ====================================================================== -->
	<!-- Observation -->
	<element name="RichObservation" type="om:RichObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<complexType name="RichObservationBaseType">
		<annotation>
			<documentation>   base gml:Observation 
            restricts 
            using - must contain or point to a Procedure or Sensor
</documentation>
		</annotation>
		<complexContent>
			<restriction base="gml:ObservationType">
				<sequence>
					<element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="gml:description" minOccurs="0"/>
					<element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="gml:boundedBy" minOccurs="0"/>
					<element ref="gml:location" minOccurs="0"/>
					<element ref="gml:timeStamp"/>
					<element ref="om:using" minOccurs="0"/>
					<element ref="gml:target" minOccurs="0"/>
					<element ref="gml:resultOf"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<complexType name="RichObservationType">
		<annotation>
			<documentation>   
            add 
            observable - identifes the phenomenon being sampled
            quality - some basic quality indications on the result
            relatedFeature - is a pointer to any other arbitrary feature
</documentation>
		</annotation>
		<complexContent>
			<extension base="om:RichObservationBaseType">
				<sequence>
					<element ref="om:observable" minOccurs="0"/>
					<element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ====================================================================== -->
	<!-- Observation Collections -->
	<element name="ObservationCollection" type="om:ObservationCollectionType" substitutionGroup="gml:FeatureCollection"/>
	<!-- -->
	<complexType name="ObservationCollectionBaseType">
		<annotation>
			<documentation>restrict member types</documentation>
		</annotation>
		<complexContent>
			<restriction base="gml:FeatureCollectionType">
				<sequence>
					<element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="gml:description" minOccurs="0"/>
					<element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="gml:boundedBy"/>
					<element ref="gml:location" minOccurs="0">
						<annotation>
							<documentation>use the location property on a collection if all the members have the same location</documentation>
						</annotation>
					</element>
					<element ref="om:observationMember" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="om:observationMembers" minOccurs="0"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- -->
	<complexType name="ObservationCollectionType">
		<annotation>
			<documentation>add timeStamp, target and relatedFeature</documentation>
		</annotation>
		<complexContent>
			<extension base="om:ObservationCollectionBaseType">
				<sequence>
					<element ref="gml:timeStamp" minOccurs="0">
						<annotation>
							<documentation>use the timeStamp property on a collection if all the member observations have the same timeStamp</documentation>
						</annotation>
					</element>
					<element ref="gml:target" minOccurs="0">
						<annotation>
							<documentation>use single target property on a collection if all the member observations have the same target</documentation>
						</annotation>
					</element>
					<element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ====================================================================== -->
	<element name="ObservationArray" type="om:ObservationArrayType" substitutionGroup="om:ObservationCollection"/>
	<!-- -->
	<complexType name="ObservationArrayType">
		<annotation>
			<documentation>
      As observationCollection, except has homogeneous member observations 
      Thus the array may carry the observable and using .  
      </documentation>
		</annotation>
		<complexContent>
			<extension base="om:ObservationCollectionType">
				<sequence>
					<element ref="om:using" minOccurs="0">
						<annotation>
							<documentation>use the using property on an array if all the member observations use the same procedure</documentation>
						</annotation>
					</element>
					<element ref="om:observable" minOccurs="0">
						<annotation>
							<documentation>use the observable property on an array to indicate the phenomenon of interest</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ====================================================================== -->
	<element name="observationProperty" substitutionGroup="gml:featureProperty">
		<complexType>
			<complexContent>
				<extension base="om:ObservationPropertyType">
					<sequence minOccurs="0">
						<element ref="om:ObservationCollection" minOccurs="0"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
	<!--
	<complexType name="ObservationPropertyType">
		<complexContent>
			<restriction base="gml:FeaturePropertyType">
				<choice minOccurs="0">
					<element ref="gml:Observation"/>
					<element ref="om:ObservationCollection"/>
				</choice>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
 -->
	<complexType name="ObservationPropertyType">
		<complexContent>
			<restriction base="gml:FeaturePropertyType">
				<sequence>
					<element ref="gml:Observation" minOccurs="0"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- components of observation Collections -->
	<element name="observationMember" substitutionGroup="gml:featureMember">
		<complexType>
			<complexContent>
				<extension base="om:ObservationPropertyType">
					<sequence minOccurs="0">
						<element ref="om:ObservationCollection" minOccurs="0"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
	<!-- ====================================================================== -->
	<element name="observationMembers" substitutionGroup="gml:featureMembers">
		<complexType>
			<complexContent>
				<extension base="om:ObservationArrayPropertyType">
					<sequence minOccurs="0">
						<element ref="om:ObservationCollection" minOccurs="0"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
	<!-- -->
	<complexType name="ObservationArrayPropertyType">
		<complexContent>
			<restriction base="gml:FeatureArrayPropertyType">
				<sequence>
					<element ref="gml:Observation" minOccurs="0"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>

	<!-- ====================================================================== -->
	<!-- Related Features -->
	<element name="relatedFeature" type="gml:FeaturePropertyType"/>
	<!-- -->
	<element name="relatedObservation" type="om:ObservationPropertyType" substitutionGroup="om:relatedFeature"/>
	<!-- ===================================================================== -->
	<complexType name="TargetObjectType">
		<annotation>
			<documentation>Concrete feature type.</documentation>
		</annotation>
		<complexContent>
			<extension base="gml:AbstractFeatureType"/>
		</complexContent>
	</complexType>
	<element name="Station" type="om:TargetObjectType" substitutionGroup="gml:_Feature"/>
	<element name="Region" type="om:TargetObjectType" substitutionGroup="gml:_Feature"/>
	<element name="Specimen" type="om:TargetObjectType" substitutionGroup="gml:_Feature"/>
	<!-- ===================================================================== -->
	<complexType name="ProcedureType">
		<annotation>
			<documentation>Concrete feature type.</documentation>
		</annotation>
		<complexContent>
			<extension base="gml:AbstractFeatureType"/>
		</complexContent>
	</complexType>
	<element name="Procedure" type="om:ProcedureType" substitutionGroup="gml:_Feature"/>
	<!-- ====================================================================== -->
	<element name="using" type="om:ProcedurePropertyType" substitutionGroup="gml:using">
		<annotation>
			<documentation>This element contains or points to a description of a sensor, instrument or procedure used for the observation</documentation>
		</annotation>
	</element>
	<complexType name="ProcedurePropertyType">
		<complexContent>
			<restriction base="gml:FeaturePropertyType">
				<sequence>
					<element ref="om:Procedure" minOccurs="0"/>
				</sequence>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =================================================================== -->
</schema>

