<?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="0.5">
	<annotation>
		<appinfo>observable.xsd</appinfo>
		<documentation>
GML conformant schema for definining Phenomenon Types.  
A phenomenon may be derived from other phenomena through constraints.  
A composite phenomenon may be derived by simple composition or by applying constraint set(s).  
                      
SJDC  2002-12-24
</documentation>
	</annotation>
	<!-- ====================================================================== -->
	<!--import namespace="http://www.opengis.net/gml" schemaLocation="../gml/3.0.0/base/dictionary.xsd"/-->
	<include schemaLocation="typedValue.xsd"/>
	<import namespace="http://www.opengis.net/gml" schemaLocation="includes.xsd"/>
	<!-- ====================================================================== -->
	<complexType name="PhenomenonPropertyType">
		<sequence minOccurs="0">
			<element ref="om:Phenomenon"/>
		</sequence>
		<attributeGroup ref="gml:AssociationAttributeGroup"/>
	</complexType>
	<!-- ====================================================================== -->
	<element name="axis" type="om:PhenomenonPropertyType">
		<annotation>
			<documentation>Property containing a description of, or reference to, an Phenomenon Type.</documentation>
		</annotation>
	</element>
	<!-- ====================================================================== -->
	<element name="componentPhenomenon" type="om:PhenomenonPropertyType" substitutionGroup="om:axis">
		<annotation>
			<documentation>Property containing a description of, or reference to, an Phenomenon Type.  
      Alternative name for axis. </documentation>
		</annotation>
	</element>
	<!-- ====================================================================== -->
	<element name="basePhenomenon" type="om:PhenomenonPropertyType">
		<annotation>
			<documentation>Property containing a description of, or reference to, an Phenomenon Type.  </documentation>
		</annotation>
	</element>
	<!-- ====================================================================== -->
	<complexType name="PhenomenonReferenceType">
		<complexContent>
			<restriction base="om:PhenomenonPropertyType">
				<sequence/>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<element name="phenomenonRef" type="om:PhenomenonReferenceType" substitutionGroup="om:axis">
		<annotation>
			<documentation>Property carrying a reference to an Phenomenon Type definition. No content.</documentation>
		</annotation>
	</element>
	<!-- ====================================================================== -->
	<element name="Phenomenon" type="gml:DefinitionType" substitutionGroup="gml:Definition"/>
	<!-- ====================================================================== -->
	<element name="ParameterisedPhenomenon" type="om:ParameterisedPhenomenonType" substitutionGroup="om:Phenomenon">
		<annotation>
			<documentation>single component phenomenon - either
      1.  simple definition
      2.  reference to a definition available elsewhere
      3.  parameterised by a single value on one or more auxilliary axes to be applied simultaneously
      </documentation>
		</annotation>
	</element>
	<!-- ====================================================================== -->
	<complexType name="ParameterisedPhenomenonType">
		<complexContent>
			<extension base="gml:DefinitionType">
				<sequence>
					<element ref="om:basePhenomenon"/>
					<element name="constraint" maxOccurs="unbounded">
						<complexType>
							<choice>
								<element ref="om:_TypedScalarValue"/>
								<element ref="om:_TypedScalarValueExtent"/>
							</choice>
						</complexType>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ======================================================================   -->
	<element name="CompositePhenomenon" type="om:CompositePhenomenonType" substitutionGroup="om:Phenomenon">
		<annotation>
			<documentation>phenomenon composed of several components
      3.  composite of discrete non-homogeneous component phenomena
      4.  parameterised by an explicit set of values on each of one or more axes to be applied simultaneously to generate a set of component phenomena
      5.  parameterised by an implicit set of values on each of one or more axes to be applied simultaneously to generate a set of component phenomena
      </documentation>
		</annotation>
	</element>
	<!-- ======================================================================   -->
	<complexType name="CompositePhenomenonType">
		<complexContent>
			<extension base="gml:DefinitionType">
				<choice minOccurs="0">
					<element ref="om:componentPhenomenon" maxOccurs="unbounded"/>
					<sequence>
						<element ref="om:basePhenomenon"/>
						<element name="constraintSet" maxOccurs="unbounded">
							<complexType>
								<choice>
									<element ref="om:TypedValueArray"/>
									<element ref="om:_TypedScalarValueList"/>
									<element ref="om:TypedQuantitySeries"/>
								</choice>
							</complexType>
						</element>
					</sequence>
				</choice>
			</extension>
		</complexContent>
	</complexType>
	<!-- ======================================================================   -->
	<element name="TypedQuantitySeries" type="om:TypedQuantitySeriesType"/>
	<complexType name="TypedQuantitySeriesType">
		<annotation>
			<documentation>A series of equally spaced quantities described using an implicit form.  
      limits - gives the low and high indices of the segment of the series       
      axis - indicates the phenomenon which this series of values describes 
      origin - gives the base position corresponding to the value with index=0
      offset - gives the span increment used to generate the other values
      structure - indicates whether the positions in the series relate to point values or intervals
</documentation>
		</annotation>
		<sequence>
			<!--GALIP!!! This is the original version element name="limits" type="gml:CountExtentType"/-->
			<element name="limits" type="anyURI"/>
			<element name="axis" type="anyURI"/>
			<element name="origin" type="gml:MeasureType"/>
			<element name="offset" type="gml:MeasureType"/>
			<element name="structure" type="om:GridStructureType" default="point" minOccurs="0"/>
		</sequence>
	</complexType>
	<simpleType name="integerPair">
		<restriction base="gml:integerList">
			<length value="2"/>
		</restriction>
	</simpleType>
	<simpleType name="GridStructureType">
		<annotation>
			<documentation>structure indicates how the positions in the grid should be used to construct the members of the grid, with the values: 
    point if the members have zero width, with the grid positions used directly, giving a total count of (high-low+1)
post if the members have a width equal to the offset, and grid positions delimit cells, with a total count of (high-low)
center if the members have a width equal to the offset, and grid cells are centered on the grid positions, with a total count of (high-low+1).  
    </documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="point"/>
			<enumeration value="post"/>
			<enumeration value="center"/>
		</restriction>
	</simpleType>
	<!-- ======================================================================   -->
</schema>

