<?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) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:om="http://www.opengis.net/om" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.opengis.net/om" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.3">
	<xs:annotation>
		<xs:documentation> fowler.xsd Typed observations, using Fowler's [1998] Analysis Patterns
			terminology 2003-01-30</xs:documentation>
	</xs:annotation>
	<!-- ====================================================================== -->
	<!-- bring in other schemas -->
	<xs:include schemaLocation="richObservation.xsd"/>
	<xs:import namespace="http://www.opengis.net/gml" schemaLocation="includes.xsd"/>
	<!-- ====================================================================== -->
	<!-- Measurement -->
	<xs:element name="Measurement" type="om:MeasurementType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="MeasurementType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be quantityResult, observable to be
			measurand</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:quantityResult"/>
					<xs:element ref="om:measurand" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="measurand" type="om:PhenomenonPropertyType" substitutionGroup="om:observable">
		<xs:annotation>
			<xs:documentation>Substitute measurand for observable if the result is a quantity and
				the observation is made using a sensor with a single element.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<!-- -->
	<xs:element name="quantityResult" type="gml:QuantityPropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
	<!-- CategoryObservation -->
	<xs:element name="CategoryObservation" type="om:CategoryObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="CategoryObservationType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be categoryResult</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:categoryResult"/>
					<xs:element ref="om:observable" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="categoryResult" type="gml:CategoryPropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
	<!-- CountObservation -->
	<xs:element name="CountObservation" type="om:CountObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="CountObservationType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be countResult</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:countResult"/>
					<xs:element ref="om:observable" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="countResult" type="gml:CountPropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
	<!-- BooleanObservation -->
	<xs:element name="BooleanObservation" type="om:BooleanObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="BooleanObservationType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be booleanResult</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:booleanResult"/>
					<xs:element ref="om:observable" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="booleanResult" type="gml:BooleanPropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
	<!-- GeometryObservation -->
	<xs:element name="GeometryObservation" type="om:GeometryObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="GeometryObservationType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be geometryResult</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:geometryResult"/>
					<xs:element ref="om:observable" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="geometryResult" type="gml:GeometryPropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
	<!-- TemporalObservation -->
	<xs:element name="TemporalObservation" type="om:TemporalObservationType" substitutionGroup="gml:Observation"/>
	<!-- -->
	<xs:complexType name="TemporalObservationType">
		<xs:annotation>
			<xs:documentation> Restrict resultOf to be temporalResult</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="om:RichObservationType">
				<xs:sequence>
					<xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:description" minOccurs="0"/>
					<xs:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="gml:boundedBy" minOccurs="0"/>
					<xs:element ref="gml:location" minOccurs="0"/>
					<xs:element ref="gml:timeStamp"/>
					<xs:element ref="om:using" minOccurs="0"/>
					<xs:element ref="gml:target" minOccurs="0"/>
					<xs:element ref="om:temporalResult"/>
					<xs:element ref="om:observable" minOccurs="0"/>
					<xs:element ref="om:quality" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="om:relatedFeature" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- -->
	<xs:element name="temporalResult" type="gml:TimePrimitivePropertyType" substitutionGroup="gml:resultOf"/>
	<!-- ====================================================================== -->
</xs:schema>
