<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by louys (observatoire astronomique) -->
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by bonnarel (CDS) -->
<!--W3C Schema for Observation Caracterization
     0.0 First draft by M.Louys and F Bonnarel 2004 July and August 
     0.1 Horribly messed up by J. McDowell     2004 Sep 
     Version 0.2 2004 Sep 22: fixed Bounds mistake  
     Version 0.3 2005 Mar 31: F.Bonnarel changes to be consistent with
              draft sent the same day, and new Mireille Louys' UML diagrams
     Version 0.31 2005 APRIL 15 F bonnarel: corrected bugs about attributes  in Frame    
     Version 0.4    2005 may  F.Bonnarel based on BThomas STC and Qty
      Version 0.5   2005 sep F.bonnarel based on A Rots STC
      Version 0.9   2005 oct F.Bonnarel based on A Rots STC and consistent with char Working draft
      Version 0.91   2005 oct F.Bonnarel 0.9 + subgroup discussion consistency 
modifications
      Version 0.92   2005 nov F.Bonnarel 0.9 + document compatible
      Version 0.93   2006 may F.Bonnarel  Compatibility with new draft
                              new Bounds, Resolution and Fill factor definition
      Version 0.94 2006 Aug 18 F.Bonnarel changes for STC 1.3
      Version 0.95 2006 Sep 13  F.Bonnarel Bux fixes for compatibility with STC 1.3 fully validated version (XML spy)
      Version 0.96 2006 Sep 30 F.Bonnarel + M.Louys: cleaning, documenting update of MinMaxOccurs with respect to
       the discussion on  mandatory status of elements MUST/SHOULD MAY 
      creation of Specific axis as restrictions. StaError and SysError.
      Version 0.97 2006  Oct 05 F.B slight modifications for first document
      validation
      Version 1.0 2006 Oct 16   Working draft compatible version
      	2006 Nov. 06: with annotation and documentation fileds included ML
    Version 1.10 2007 Mar 26 FB Harmonisation with  Spectrum DM
    01 April 2007: moved annotation in types definitions of SpatialAxis, etc...   ML
     Version 1.11 May 22 2007 FB reusing stc subst group for value, size, error resolution, pixsize ....
      -->
<xsd:schema targetNamespace="http://www.ivoa.net/xml/Characterisation/Characterisation-v1.11.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:stc="http://www.ivoa.net/xml/STC/stc-v1.30.xsd" xmlns:cha="http://www.ivoa.net/xml/Characterisation/Characterisation-v1.11.xsd" elementFormDefault="qualified">
	<xsd:import namespace="http://www.ivoa.net/xml/STC/stc-v1.30.xsd" schemaLocation="http://vo.ari.uni-heidelberg.de/docs/schemata/stc.xsd"/>
	<xsd:element name="characterizationAxis" type="cha:CharacterisationAxisType" substitutionGroup="cha:characterisationAxis">
		<xsd:annotation>
			<xsd:documentation>
                                describes an axis and its properties 
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="characterisation" type="cha:CharacterisationType"/>
	<!-- http://hea-www.harvard.edu/~arots/nvometa/v1.30/stc-v1.30.xsd"/ -->
	<!-- Characterization is the root element -->
	<xsd:element name="characterization" type="cha:CharacterisationType" substitutionGroup="cha:characterisation"/>
	<xsd:complexType name="CharacterisationType">
		<xsd:choice>
			<xsd:element name="characterisationAxis" type="cha:CharacterisationAxisType" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:complexType>
	<!-- Characterization, for one axis -->
	<xsd:element name="characterisationAxis" type="cha:CharacterisationAxisType">
		<xsd:annotation>
			<xsd:documentation>
                               describes an axis and its properties
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<!-- For Americans -->
	<xsd:element name="coverage" type="cha:CoverageType"/>
	<xsd:element name="resolution" type="cha:ResolutionType">
		<xsd:annotation>
			<xsd:documentation>
                              minimum size of an interpretable signal along this axis 
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="location" type="cha:LocationType"/>
	<xsd:element name="bounds" type="cha:BoundsType"/>
	<xsd:element name="support" type="cha:SupportType"/>
	<xsd:element name="sensitivity" type="cha:SensitivityType"/>
	<xsd:element name="resolutionRefVal" type="cha:ResolutionRefValType"/>
	<xsd:element name="samplingPrecisionRefVal" type="cha:SamplingPrecisionRefValType"/>
	<xsd:complexType name="anyURIType">
		<xsd:complexContent>
			<xsd:restriction base="xsd:anyType"/>
		</xsd:complexContent>
	</xsd:complexType>
	<!-- COVERAGE can contain Location, Bounds, Support, Sensitivity -->
	<!-- coordsystem and  unit can be redefined at any level if necessary otherwise the valid coordsys and
	unit are defined on the AxisFrame -->
	<xsd:complexType name="CoverageType">
		<xsd:annotation>
			<xsd:documentation>
                                How the observation is spanned along this axis
                        </xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>redefinition of unit for coverage</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>redefinition of coordsystem</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="location" type="cha:LocationType">
				<xsd:annotation>
					<xsd:documentation>Typical value on one axis</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="bounds" type="cha:BoundsType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>the limits of the observation on this axis</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="support" type="cha:SupportType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>describes the area where measurements are effectively present and interpretable </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="sensitivity" type="cha:SensitivityType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>encodes the variability of response along the  axis </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ResolutionType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="resolutionRefVal" type="cha:ResolutionRefValType"/>
			<xsd:element name="resolutionBounds" type="cha:ResolutionBoundsType" minOccurs="0"/>
			<xsd:element name="resolutionSupport" type="cha:ResolutionSupportType" minOccurs="0"/>
			<xsd:element name="resolutionVariability" type="cha:ResolutionVariabilityType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SamplingPrecisionType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="samplingPrecisionRefVal" type="cha:SamplingPrecisionRefValType"/>
			<xsd:element name="samplingPrecisionBounds" type="cha:SamplingPrecisionBoundsType" minOccurs="0"/>
			<xsd:element name="samplingPrecisionSupport" type="cha:SamplingPrecisionSupportType" minOccurs="0"/>
			<xsd:element name="samplingPrecisionVariability" type="cha:SamplingPrecisionVariabilityType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CharacterisationAxisType">
		<xsd:sequence>
			<xsd:element name="axisName" type="xsd:anyType">
				<xsd:annotation>
					<xsd:documentation>
	                   A name representing the physical nature of the axis like Spatial, Spectral, Time, Velocity or any other free name for an axis
                    </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ucd" type="xsd:anyType">
				<xsd:annotation>
					<xsd:documentation>
                                                 The physical meaning of the axis, 
                                                 Type:  standard semantic tag defined in the UCD list.
			            </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="unit" type="xsd:anyType">
				<xsd:annotation>
					<xsd:documentation>
			                   default unit for the axis: 
                                  Type: controlled unit vocabulary following the VOTable units definitions 
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType">
				<xsd:annotation>
					<xsd:documentation>
					    Reference coordinate system for the axis: 		
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ObsyLoc" type="stc:observatoryLocationType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						Observatory location
						Type: a  STC:observatoryLocationType or an xlink
			</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="accuracy" type="cha:AccuracyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Global accuracy description of the axis
			</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="independentAxis" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
			                    Indicates wether the axis is independent or not from the other axes. The Observable axis
			                    has a false independentAxis "value" 
			                    Type : boolean
			</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="calibrationStatus" type="xsd:anyType">
				<xsd:annotation>
					<xsd:documentation>
			                        defines if and how the axis is calibrated: 
                                       Possible String values: CALIBRATED, UNCALIBRATED, RELATIVE, NORMALIZED 			
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element ref="cha:numBins">
				<xsd:annotation>
					<xsd:documentation>
						Number of bins for this axis. 
						Type : array of 1 2 or 3 integers
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="undersamplingStatus" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
					       A flag to mention wether the data are undersampled.
					       Type: boolean
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="regularsamplingStatus" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
				               A flag to mention wether the data are regularly sampled.
				               Type : boolean
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coverage" type="cha:CoverageType"/>
			<xsd:element name="resolution" type="cha:ResolutionType" minOccurs="0"/>
			<xsd:element name="samplingPrecision" type="cha:SamplingPrecisionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SpatialAxisType">
		<xsd:annotation>
			<xsd:documentation>
                                     Restriction of CharacterisationAxis  for Spatial Axis 
                           </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="cha:CharacterisationAxisType">
				<xsd:sequence>
					<xsd:element name="axisName" type="xsd:anyType" fixed="spatial"/>
					<xsd:element name="ucd" type="xsd:anyType" fixed="pos"/>
					<xsd:element name="unit" type="xsd:anyType"/>
					<xsd:element name="coordsystem" type="stc:astroCoordSystemType"/>
					<xsd:element name="ObsyLoc" type="stc:observatoryLocationType" minOccurs="0"/>
					<xsd:element name="accuracy" type="cha:AccuracyType" minOccurs="0"/>
					<xsd:element name="independentAxis" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="calibrationStatus" type="xsd:anyType"/>
					<xsd:element ref="cha:numBins"/>
					<xsd:element name="undersamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="regularsamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="coverage" type="cha:CoverageType"/>
					<xsd:element name="resolution" type="cha:ResolutionType" minOccurs="0"/>
					<xsd:element name="samplingPrecision" type="cha:SamplingPrecisionType" minOccurs="0"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="spatialAxis" type="cha:SpatialAxisType"/>
	<xsd:complexType name="SpectralAxisType">
		<xsd:annotation>
			<xsd:documentation>
                                     Restriction of characteristionAxis  for Spectral Axis 
                           </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="cha:CharacterisationAxisType">
				<xsd:sequence>
					<xsd:element name="axisName" type="xsd:anyType" fixed="spectral"/>
					<xsd:element name="ucd" type="xsd:anyType" fixed="em"/>
					<xsd:element name="unit" type="xsd:anyType"/>
					<xsd:element name="coordsystem" type="stc:astroCoordSystemType"/>
					<xsd:element name="ObsyLoc" type="stc:observatoryLocationType" minOccurs="0"/>
					<xsd:element name="accuracy" type="cha:AccuracyType" minOccurs="0"/>
					<xsd:element name="independentAxis" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="calibrationStatus" type="xsd:anyType"/>
					<xsd:element ref="cha:numBins"/>
					<xsd:element name="undersamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="regularsamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="coverage" type="cha:CoverageType"/>
					<xsd:element name="resolution" type="cha:ResolutionType" minOccurs="0"/>
					<xsd:element name="samplingPrecision" type="cha:SamplingPrecisionType" minOccurs="0"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="spectralAxis" type="cha:SpectralAxisType"/>
	<xsd:complexType name="TimeAxisType">
		<xsd:annotation>
			<xsd:documentation>
                                     Restriction of CharacterisationAxis  for time 
                           </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="cha:CharacterisationAxisType">
				<xsd:sequence>
					<xsd:element name="axisName" type="xsd:anyType" fixed="temporal"/>
					<xsd:element name="ucd" type="xsd:anyType" fixed="time"/>
					<xsd:element name="unit" type="xsd:anyType"/>
					<xsd:element name="coordsystem" type="stc:astroCoordSystemType"/>
					<xsd:element name="ObsyLoc" type="stc:observatoryLocationType" minOccurs="0"/>
					<xsd:element name="accuracy" type="cha:AccuracyType" minOccurs="0"/>
					<xsd:element name="independentAxis" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="calibrationStatus" type="xsd:anyType"/>
					<xsd:element ref="cha:numBins"/>
					<xsd:element name="undersamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="regularsamplingStatus" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="coverage" type="cha:CoverageType"/>
					<xsd:element name="resolution" type="cha:ResolutionType" minOccurs="0"/>
					<xsd:element name="samplingPrecision" type="cha:SamplingPrecisionType" minOccurs="0"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="timeAxis" type="cha:TimeAxisType"/>
	<xsd:element name="numBins" type="xsd:anyType" abstract="true"/>
	<xsd:element name="numBins1" type="xsd:int" substitutionGroup="cha:numBins"/>
	<xsd:element name="numBins2" substitutionGroup="cha:numBins">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="I1" type="xsd:int"/>
				<xsd:element name="I2" type="xsd:int"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="numBins3" substitutionGroup="cha:numBins">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="I1" type="xsd:int"/>
				<xsd:element name="I2" type="xsd:int"/>
				<xsd:element name="I3" type="xsd:int"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="AccuracyType">
		<xsd:sequence>
			<xsd:element name="quality" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A combination of flags attesting the data quality.
					Type: String
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="statError" type="cha:StatErrorType" minOccurs="0"/>
			<xsd:element name="sysError" type="cha:SysErrorType" minOccurs="0"/>
			<xsd:element name="CustError" type="cha:ErrorType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ErrorType">
		<xsd:sequence>
			<xsd:annotation>
				<xsd:documentation>
		                     Some Error on the axis
		               </xsd:documentation>
			</xsd:annotation>
			<xsd:element name="flavor" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
                           The type of error described : statistical , systematic, global, etc.
                           Type: string                            
                             </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ErrorRefVal" type="cha:ErrorRefValType"/>
			<xsd:element name="ErrorBounds" type="cha:ErrorBoundsType" minOccurs="0"/>
			<xsd:element name="ErrorVariability" type="cha:ErrorVariabilityType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="StatErrorType">
		<xsd:annotation>
			<xsd:documentation>Statistical Error on the axis
	</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="cha:ErrorType">
				<xsd:sequence>
					<xsd:element name="flavor" type="xsd:string" fixed="statistical">
						<xsd:annotation>
							<xsd:documentation>The type of error described : here statistical 
                              Type : string , value="statistical"  "
                            </xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ErrorRefVal" type="cha:ErrorRefValType">
						<xsd:annotation>
							<xsd:documentation>Typical statistical Error on the axis</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ErrorBounds" type="cha:ErrorBoundsType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Range of the error for mapping along this axis </xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ErrorVariability" type="cha:ErrorVariabilityType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>
                              A detailed description of the local error values
                            </xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="SysErrorType">
		<xsd:annotation>
			<xsd:documentation>
                            Systematic Error on the axis
	                </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="cha:ErrorType">
				<xsd:sequence>
					<xsd:element name="flavor" type="xsd:string" fixed="systematic">
						<xsd:annotation>
							<xsd:documentation> The type of error described : here, systematic
                                                                Type: string , value: systematic
                                                        </xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ErrorRefVal" type="cha:ErrorRefValType"/>
					<xsd:element name="ErrorBounds" type="cha:ErrorBoundsType" minOccurs="0"/>
					<xsd:element name="ErrorVariability" type="cha:ErrorVariabilityType" minOccurs="0"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ErrorRefValType">
		<xsd:sequence>
			<xsd:annotation>
				<xsd:documentation>
				Typical statistical error on  the axis.
				Types:  depend on the dimensionality
				1D Error based on stc:double1Type
				2D Errors based on stc:size2Type, double2Type or double1Type (error 2 radius)
				3D Errors based on stc:size3Type, double3TYpe or double1Type (error 3 radius)
		          </xsd:documentation>
			</xsd:annotation>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="stc:CError"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="ErrorRefValue" type="xsd:anyType" abstract="true" substitutionGroup="stc:CError"/>
	<!--	<xsd:element name="Error" type="stc:double1Type" substitutionGroup="cha:ErrorRefValue" nillable="true"/>
	<xsd:element name="CError2" type="xsd:anyType" abstract="true" substitutionGroup="cha:ErrorRefValue" nillable="true"/>
	<xsd:element name="Error2" type="stc:size2Type" substitutionGroup="cha:CError2" nillable="true"/>
	<xsd:element name="Error2Matrix" type="stc:double4Type" substitutionGroup="cha:CError2" nillable="true"/>
	<xsd:element name="Error2Radius" type="stc:double1Type" substitutionGroup="cha:CError2" nillable="true"/>
	<xsd:element name="CError3" type="xsd:anyType" abstract="true" substitutionGroup="cha:ErrorRefValue" nillable="true"/>
	<xsd:element name="Error3" type="stc:size3Type" substitutionGroup="cha:CError3" nillable="true"/>
	<xsd:element name="Error3Matrix" type="stc:double9Type" substitutionGroup="cha:CError3" nillable="true"/>
	<xsd:element name="Error3Radius" type="stc:double1Type" substitutionGroup="cha:CError3" nillable="true"/> -->
	<xsd:complexType name="ErrorBoundsType">
		<xsd:annotation>
			<xsd:documentation> Hi and Low values of statistical errors on this axis.
			Type: stc:coordScalarInterval, 2DVecInterval or 3DVecInterval
	                </xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element ref="cha:ErrorLimits"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>  A description of the error extreme values .	
							   Type: any URI type 
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="ErrorLimits" type="stc:coordIntervalType" abstract="true"/>
	<xsd:element name="ErrorLimits1" type="stc:coordScalarIntervalType" substitutionGroup="cha:ErrorLimits"/>
	<xsd:element name="ErrorLimits2" type="stc:coord2VecIntervalType" substitutionGroup="cha:ErrorLimits"/>
	<xsd:element name="ErrorLimits3" type="stc:coord3VecIntervalType" substitutionGroup="cha:ErrorLimits"/>
	<xsd:complexType name="ErrorVariabilityType">
		<xsd:annotation>
			<xsd:documentation>A detailed description of the local error values. Could be conveyed with
			the data as in IVOA Spectrum data model
			Type: any URI type pointing to such a map
	</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="ErrorMap" type="cha:anyURIType">
				<xsd:annotation>
					<xsd:documentation>A map showing the variability of the error
                                                    Type: any URI type
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>documentation on the Error variation
                                              	Type: any URI type
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LocationType">
		<xsd:annotation>
			<xsd:documentation>The typical coordinate value
	                       Type:  stc:astroCoordsType
	                </xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Redefinition of unit</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Redefinition of coordsystem</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coord" type="stc:astroCoordsType" maxOccurs="unbounded"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The typical coordinate value
					Type: stc:astroCoordsType
				</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<!--for some regimes like radio, and some axis of the data (spatial, ...) 
bounds may also be expressed in Fourier frequencies We probably need a 
FrequencyBounds in addition to Bounds-->
	<!-- For each coordinate, the Bounds has one min and one max. The CharCooodAreaType
     lets you define boxes or open/closed intervals, unit,  it's a pseudo restriction on
    AstroCoordArea
      
 -->
	<xsd:complexType name="BoundsType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>for bounds unit redefinition</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>for bounds coosys redefinition</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Extent" type="stc:double1Type" minOccurs="0"/>
			<xsd:element name="limits" type="cha:CharCoordAreaType">
				<xsd:annotation>
					<xsd:documentation>
                                           The actual values defining the bounds.
                                           2 possible types : a cha:CharBox which is a customised  STC:Coordinate with mandatory value and size 
                                                               or an STC:Interval
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						A document to mention how the bounds are defined.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<!-- We extend (instead of aggregate) coordArea to add simple AreaType. 
     Really, Support is just an AstroCoordArea,  
     -->
	<xsd:complexType name="SupportType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="Extent" type="stc:double1Type" minOccurs="0"/>
			<xsd:element name="Area" type="stc:astroCoordAreaType">
				<xsd:annotation>
					<xsd:documentation>
			 			Defines the effective covered region	
			 		</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="AreaType" type="xsd:anyType">
				<xsd:annotation>
					<xsd:documentation>
						Gives the name of the region shape
						Type:  predefined string in {Circle, Polygon, Box, ...}
		 			</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> Some text about the Support region definition
                                                	Type: any URI type
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<!-- URI will be external references (URL) -->
	<xsd:complexType name="SensitivityType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="variationMap" type="cha:anyURIType">
				<xsd:annotation>
					<xsd:documentation>encodes the variability of the response along the axis 
                         </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="documentation" type="cha:anyURIType">
				<xsd:annotation>
					<xsd:documentation> documents the purpose, type and encoding of sensitivity information
                                             Type: URL 
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CharCoordAreaType">
		<xsd:complexContent>
			<xsd:extension base="stc:stcBaseType">
				<xsd:choice>
					<xsd:element name="CharBox" type="cha:CharCoordinateType"/>
					<xsd:element ref="cha:Interval"/>
				</xsd:choice>
				<xsd:attribute name="coord_system_id" type="xsd:IDREF" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="CharCoordinateType" abstract="true">
		<xsd:annotation>
			<xsd:documentation> A coordinate type to define n-D bounding boxes. 
			To be overridden by any of the following possible substitution elements.
               </xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Name" type="xsd:string"/>
			<xsd:sequence>
				<xsd:element ref="stc:CoordValue"/>
				<xsd:element ref="stc:CSize"/>
			</xsd:sequence>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="value" type="xsd:anyType" abstract="true" substitutionGroup="stc:CoordValue"/>
	<xsd:element name="size" type="xsd:anyType" abstract="true" substitutionGroup="stc:CSize"/>
	<!--	<xsd:element name="Value" type="stc:double1Type" substitutionGroup="cha:value" nillable="true"/>
	
	<xsd:element name="Size" type="stc:double1Type" substitutionGroup="cha:size" nillable="true"/>
	<xsd:element name="value2" type="xsd:anyType" abstract="true" substitutionGroup="cha:value"/>
	<xsd:element name="Value2" type="stc:double2Type" substitutionGroup="cha:value2" nillable="true"/>
	<xsd:element name="Curve2" type="stc:curve2Type" substitutionGroup="cha:value2" nillable="true"/>
	<xsd:element name="size2" type="xsd:anyType" abstract="true" substitutionGroup="cha:size"/>
	<xsd:element name="Size2" type="stc:size2Type" substitutionGroup="cha:size2" nillable="true"/>
	<xsd:element name="Size2Matrix" type="stc:double4Type" substitutionGroup="cha:size2" nillable="true"/>
	<xsd:element name="Size2Radius" type="stc:double1Type" substitutionGroup="cha:size2" nillable="true"/>
	<xsd:element name="value3" type="xsd:anyType" abstract="true" substitutionGroup="cha:value"/>
	<xsd:element name="Value3" type="stc:double3Type" substitutionGroup="cha:value3" nillable="true"/>
	<xsd:element name="Curve3" type="stc:curve3Type" substitutionGroup="cha:value3" nillable="true"/>
	<xsd:element name="size3" type="xsd:anyType" abstract="true" substitutionGroup="cha:size"/>
	<xsd:element name="Size3" type="stc:size3Type" substitutionGroup="cha:size3" nillable="true"/>
	<xsd:element name="Size3Matrix" type="stc:double9Type" substitutionGroup="cha:size3" nillable="true"/>
	<xsd:element name="Size3Radius" type="stc:double1Type" substitutionGroup="cha:size3" nillable="true"/> -->
	<xsd:element name="Interval" type="stc:coordIntervalType" abstract="true">
		<xsd:annotation>
			<xsd:documentation>
                               Here is  1-, 2-, or 3-D coordinate interval substitution group head element.
                               Such an element needs to contain a minimum or maximum scalar or vector value,
                               or both. It needs to refer to a coordinate system. Boundaries may or may not
                               be inclusive; and it can have a fill factor
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="CoordScalarInterval" type="stc:coordScalarIntervalType" substitutionGroup="cha:Interval" nillable="true">
		<xsd:annotation>
			<xsd:documentation>
                             A scalar coordinate interval 
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="Coord2VecInterval" type="stc:coord2VecIntervalType" substitutionGroup="cha:Interval" nillable="true">
		<xsd:annotation>
			<xsd:documentation>
                             A 2-D coordinate interval ("box")
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="Coord3VecInterval" type="stc:coord3VecIntervalType" substitutionGroup="cha:Interval" nillable="true">
		<xsd:annotation>
			<xsd:documentation>
                             A 3-D coordinate triplet interval ("cube") 
                        </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="ResolutionRefValType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="stc:CResolution"/>
			<xsd:element name="ResPow" type="stc:double1Type" minOccurs="0"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> Defines and explains how this reference value for resolution has been estimated
				            Type: URL
                                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="ReferenceValue" type="xsd:anyType" abstract="true" substitutionGroup="stc:CResolution">
		<xsd:annotation>
			<xsd:documentation>
                          Typical resolution value along the axis
	                  1D resolution of type stc:double1Type
                  	  2D resolution of type stc:size2Type, double4Type or double1Type (resolution radius)
                       	  3D resolution of type stc:size3Type, double9TYpe or double1Type (resolution 3 radius)
	                </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<!--
<element name="Resolution" type="stc:double1Type" substitutionGroup="cha:ReferenceValue" nillable="true"/>
	<xsd:element name="CResolution2" type="xsd:anyType" abstract="true" substitutionGroup="cha:ReferenceValue" nillable="true"/>
	<xsd:element name="Resolution2" type="stc:size2Type" substitutionGroup="cha:CResolution2" nillable="true"/>
	<xsd:element name="Resolution2Matrix" type="stc:double4Type" substitutionGroup="cha:CResolution2" nillable="true"/>
	<xsd:element name="Resolution2Radius" type="stc:double1Type" substitutionGroup="cha:CResolution2" nillable="true"/>
	<xsd:element name="CResolution3" type="xsd:anyType" abstract="true" substitutionGroup="cha:ReferenceValue" nillable="true"/>
	<xsd:element name="Resolution3" type="stc:size3Type" substitutionGroup="cha:CResolution3" nillable="true"/>
	<xsd:element name="Resolution3Matrix" type="stc:double9Type" substitutionGroup="cha:CResolution3" nillable="true"/>
	<xsd:element name="Resolution3Radius" type="stc:double1Type" substitutionGroup="cha:CResolution3" nillable="true"/>
-->
	<xsd:complexType name="SamplingPrecisionRefValTyp">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element ref="stc:CPixSize"/>
					<xsd:element ref="stc:CPixSize" minOccurs="0"/>
				</xsd:sequence>
				<xsd:element name="FillFactor" type="xsd:double" minOccurs="0"/>
			</xsd:choice>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Explains how the fill factor is estimated . Type: URI
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SamplingPrecisionRefValType">
		<xsd:complexContent>
			<xsd:restriction base="cha:SamplingPrecisionRefValTyp">
				<xsd:sequence>
					<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
					<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
					<xsd:choice>
						<xsd:sequence>
							<xsd:element ref="cha:samplingPeriod"/>
							<xsd:element ref="cha:sampleExtent" minOccurs="0"/>
						</xsd:sequence>
						<xsd:element name="FillFactor" type="xsd:double" minOccurs="0"/>
					</xsd:choice>
					<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Explains how the fill factor is estimated . Type: URI
					</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="samplingPeriod" type="xsd:anyType" substitutionGroup="stc:CPixSize" nillable="true">
		<xsd:annotation>
			<xsd:documentation>
                                Typical sampling Period value of the axis
                                Type : depends on the dimensionality
				1D samplingPeriod based on  stc:double1Type
				2D samplingPeriod based on  stc:size2Type, double4Type or double1Type ( sampling period radius)
				3D samplingPeriod based on  stc:size3Type or double9TYpe or double1Type (sampling period 3 radius)
                  	</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="sampleExtent" type="xsd:anyType" substitutionGroup="stc:CPixSize">
		<xsd:annotation>
			<xsd:documentation>
                                Typical sample Extent value of the axis
                                "Types : depend on the dimensionality"
	                        1D sampleExtent based on stc:double1Type
	                        2D sampleExtent based on stc:size2Type, double4Type or double1Type (sampling extent radius)
	                        3D sampleExtent based on stc:size3Type, double9TYpe or double1Type (sampling extent 3 radius)
	                </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<!--<xsd:element name="PixSize" type="stc:double1Type" substitutionGroup="cha:samplingPeriod" nillable="true"/>
	<xsd:element name="CPixSize2" type="xsd:anyType" abstract="true" substitutionGroup="cha:samplingPeriod" nillable="true"/>
	<xsd:element name="PixSize2" type="stc:size2Type" substitutionGroup="cha:CPixSize2" nillable="true"/>
	<xsd:element name="PixSize2Matrix" type="stc:double4Type" substitutionGroup="cha:CPixSize2" nillable="true"/>
	<xsd:element name="CPixSize3" type="xsd:anyType" abstract="true" substitutionGroup="cha:samplingPeriod" nillable="true"/>
	<xsd:element name="PixSize3" type="stc:size3Type" substitutionGroup="cha:CPixSize3" nillable="true"/>
	<xsd:element name="PixSize3Matrix" type="stc:double9Type" substitutionGroup="cha:CPixSize3" nillable="true"/>
-->
	<xsd:complexType name="ResolutionBoundsType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="cha:resolutionLimits"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> Defines and explains how this resolution has been estimated
                         </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="resolutionLimits" type="stc:coordIntervalType" abstract="true">
		<xsd:annotation>
			<xsd:documentation>  Hi and Low values of  resolution on this axis.
                               			Type: stc:coordScalarInterval, or 2Vec or 3Vec
	                </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="resolutionLimits1" type="stc:coordScalarIntervalType" substitutionGroup="cha:resolutionLimits"/>
	<xsd:element name="resolutionLimits2" type="stc:coord2VecIntervalType" substitutionGroup="cha:resolutionLimits"/>
	<xsd:element name="resolutionLimits3" type="stc:coord3VecIntervalType" substitutionGroup="cha:resolutionLimits"/>
	<xsd:complexType name="SamplingPrecisionBoundsType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="cha:samplingPeriodLimits"/>
			<xsd:element ref="cha:samplingExtentLimits" minOccurs="0"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="samplingPeriodLimits" type="stc:coordIntervalType">
		<xsd:annotation>
			<xsd:documentation> Hi and Low values of  samplingPeriod on this axis.
	                        			   Type: stc:coordScalarInterval or 2Vec or 3Vec
	                </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="samplingPeriodLimits1" type="stc:coordScalarIntervalType" substitutionGroup="cha:samplingPeriodLimits"/>
	<xsd:element name="samplingPeriodLimits2" type="stc:coord2VecIntervalType" substitutionGroup="cha:samplingPeriodLimits"/>
	<xsd:element name="samplingPeriodLimits3" type="stc:coord3VecIntervalType" substitutionGroup="cha:samplingPeriodLimits"/>
	<xsd:element name="samplingExtentLimits" type="stc:coordIntervalType" abstract="true"/>
	<xsd:element name="samplingExtentLimits1" type="stc:coordIntervalType" substitutionGroup="cha:samplingExtentLimits"/>
	<xsd:element name="samplingExtentLimits2" type="stc:coord2VecIntervalType" substitutionGroup="cha:samplingExtentLimits"/>
	<xsd:element name="samplingExtentLimits3" type="stc:coord3VecIntervalType" substitutionGroup="cha:samplingExtentLimits"/>
	<xsd:complexType name="ResolutionSupportType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="cha:resolutionLimits" maxOccurs="unbounded"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> Defines and explains how this resolution has been estimated
                                                     Type: URL           
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SamplingPrecisionSupportType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element ref="cha:samplingPeriodLimits" maxOccurs="unbounded"/>
			<xsd:element ref="cha:samplingExtentLimits" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> A place to hook some explanations about "how" the Sampling was done and assessed.  
                                        		Type: URI
				</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ResolutionVariabilityType">
		<xsd:annotation>
			<xsd:documentation> This map describes the variability of the resolution along the axis, the varying shape of the point spread
	                     fonction, or both. Can be attached to the data
	                     Type: URI
	</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="resolutionMap" type="cha:anyURIType"/>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation> defines and explains how this resolution has been estimated
                                               	Type: URL
                                        </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SamplingPrecisionVariabilityType">
		<xsd:sequence>
			<xsd:element name="unit" type="xsd:anyType" minOccurs="0"/>
			<xsd:element name="coordsystem" type="stc:astroCoordSystemType" minOccurs="0"/>
			<xsd:element name="samplingPrecisionMap" type="cha:anyURIType">
				<xsd:annotation>
					<xsd:documentation>This map describes  the variability of the sampling along the axis, or the varying shape of the sampling 
			                        fonction, or both. Can be attached to the data implemented as anyURI type
			                </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="documentation" type="cha:anyURIType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
