<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:fdo="http://fdo.osgeo.org/schemas" xmlns="http://fdo.osgeo.org/schemas" targetNamespace="http://fdo.osgeo.org/schemas" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- The attributes allow FDO-specific information, with no natural home in GML, to be specified in a GML Schema --> <!-- Attributes describing the Geometry for a Feature Class. In GML Schema the Geometry is in the location element. In FDO it is in a Geometric Property --> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="Gml/feature.xsd"/> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="Gml/topology.xsd"/> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="Gml/coverage.xsd"/> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="Gml/coordinateReferenceSystems.xsd"/> <xs:attribute name="geometryName" type="xs:string"> <xs:annotation> <xs:documentation>Name of the geometry property for the Feature Class for the containing complexType</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="geometricTypes" type="xs:string"> <xs:annotation> <xs:documentation>Valid geometric types for the above geometry property</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="geometryTypes" type="xs:string"> <xs:annotation> <xs:documentation>Valid geometry types for the above geometry property</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="geometricReadOnly" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>Whether the above geometry is read-only</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="geometryInherited" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>True when the geometry property is inherited from a base class.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="hasMeasure" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>Whether the above geometry has a measurement dimension</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="hasElevation" type="xs:boolean" default="true"> <xs:annotation> <xs:documentation>Whether the above geometry property has elevation</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="crsName" type="xs:string"> <xs:annotation> <xs:documentation>Coordinate Reference System name. Must be a CRS corresponding to an FDO Spatial Context.</xs:documentation> <xs:documentation>Indicates the associated spatial context for a geometric property.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="scale" type="xs:int"> <xs:annotation> <xs:documentation>Used for carrying around negative scales for decimal properties</xs:documentation> </xs:annotation> </xs:attribute> <!-- Readonly attribute for Data and Geometric properties --> <xs:attribute name="readOnly" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>Whether the property for the containing xs:element is read-only</xs:documentation> </xs:annotation> </xs:attribute> <!-- Object Property attributes --> <xs:attribute name="identityProperty" type="xs:Name"> <xs:annotation> <xs:documentation>The identityProperty for the Object Property for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="order" type="OrderType"> <xs:annotation> <xs:documentation>The ordering of the Ordered Collection Object Property for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <!-- Raster Property attributes --> <xs:attribute name="defaultImageXSize" type="fdo:int32"> <xs:annotation> <xs:documentation>Default image width (in pixels) for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="defaultImageYSize" type="fdo:int32"> <xs:annotation> <xs:documentation>Default image height(in pixels) for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="defaultTileXSize" type="fdo:int32"> <xs:annotation> <xs:documentation>Default image width (in ground units) for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="defaultTileYSize" type="fdo:int32"> <xs:annotation> <xs:documentation>Default image height (in ground units) for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <!-- Association Property Attributes --> <xs:attribute name="deleteRule" type="DeleteRuleType"> <xs:annotation> <xs:documentation>The cascading delete rule for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="lockCasade" type="fdo:NonNegIntType"> <xs:annotation> <xs:documentation>The cascading lock rule for the containing xs:element</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="reverseName" type="fdo:NameType"> <xs:annotation> <xs:documentation>The name of this association as seen by the associated class</xs:documentation> </xs:annotation> </xs:attribute> <!-- Name adjustment attribute --> <xs:attribute name="nameAdjust" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>When ture, the containing element name is decoded when the element is deserialized from GML to FDO, even if name adjustment has been turned off.</xs:documentation> </xs:annotation> </xs:attribute> <!-- Substitution group for all FDO document roots --> <xs:element name="AbstractDataStore" type="AbstractDataStoreType" abstract="true"/> <!-- Various elements that allow FDO-specific information to be stored in a GML Schema --> <!-- Schema Attribute Dictionary --> <xs:element name="attribute"> <xs:annotation> <xs:documentation>A Schema Attribute Dictionary entry</xs:documentation> </xs:annotation> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <!-- Raster--> <xs:element name="RasterValue" type="xs:base64Binary" substitutionGroup="gml:_Value"> <xs:annotation> <xs:documentation>FDO-specific Mine encoded raster for compactness.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="rangeSet" type="fdo:RangeSetType"/> <xs:complexType name="RangeSetType"> <xs:annotation> <xs:documentation>The FDO Range Set type represents the raster as a mime encoded blob.</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="gml:RangeSetType"> <xs:choice> <xs:element name="ValueArray" > <xs:complexType> <xs:complexContent> <xs:restriction base="gml:ValueArrayType"> <xs:choice> <xs:element name="valueComponent"> <xs:complexType> <xs:complexContent> <xs:restriction base="gml:ValueArrayPropertyType"> <xs:choice> <xs:element ref="fdo:RasterValue" minOccurs="1" maxOccurs="1"/> </xs:choice> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> </xs:choice> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> </xs:choice> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="RasterPropertyType"> <xs:annotation> <xs:documentation>Base type for Raster Properties</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="gml:RectifiedGridCoverageType"> <xs:sequence> <xs:element ref="gml:rectifiedGridDomain"/> <xs:element ref="fdo:rangeSet"/> <xs:element ref="gml:coverageFunction" maxOccurs="0"/> </xs:sequence> <xs:attribute name="dimension" type="xs:positiveInteger" use="required"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:element name="DefaultDataModel" type="RasterDataModelType" abstract="true"> <xs:annotation> <xs:documentation>Raster property data model attributes. Must be inside an xs:element[type='RasterPropertyType']/xs:annotation/xs:appInfo.</xs:documentation> </xs:annotation> </xs:element> <!-- Topologies --> <xs:element name="NetworkLayer" type="NetworkLayerType" abstract="true" substitutionGroup="gml:TopoComplex"> <xs:annotation> <xs:documentation>Substitution group for all FDO Network Layer classes.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NetworkPrimitiveMember" abstract="true"> <xs:annotation> <xs:documentation>Element that restricts network primitives to being edges</xs:documentation> </xs:annotation> </xs:element> <!-- Various base types specific to FDO --> <!-- Non-Feature class --> <xs:complexType name="AbstractDataStoreType" abstract="true"/> <xs:complexType name="ClassType" abstract="true"> <xs:annotation> <xs:documentation>Base type for non-Feature Classes</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="gml:AbstractFeatureType"/> </xs:complexContent> </xs:complexType> <!-- Rasters --> <xs:complexType name="RasterCoverageType" abstract="true"> <xs:annotation> <xs:documentation>Base type for Raster Features</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="gml:AbstractCoverageType"/> </xs:complexContent> </xs:complexType> <xs:complexType name="RasterDataModelType" abstract="true"> <xs:annotation> <xs:documentation>Describes the data model for a raster property</xs:documentation> </xs:annotation> <xs:attribute name="bitsPerPixel"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="k1"/> <xs:enumeration value="k8"/> <xs:enumeration value="k16"/> <xs:enumeration value="k32"/> <xs:enumeration value="k64"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="dataModelType"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="kDataModel"/> <xs:enumeration value="kRgbModel"/> <xs:enumeration value="kPalettedRgbModel"/> <xs:enumeration value="kGrayModel"/> <xs:enumeration value="kBitonalModel"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="organization"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="pixel"> <xs:annotation> <xs:documentation>Band Interleave by pixel</xs:documentation> </xs:annotation> </xs:enumeration> <xs:enumeration value="row"> <xs:annotation> <xs:documentation>Band Interleave by row</xs:documentation> </xs:annotation> </xs:enumeration> <xs:enumeration value="sequential"> <xs:annotation> <xs:documentation>Band sequential</xs:documentation> </xs:annotation> </xs:enumeration> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="tileSizeX" type="fdo:NonNegIntType"/> <xs:attribute name="tileSizeY" type="fdo:NonNegIntType"/> </xs:complexType> <!-- Topologies --> <xs:complexType name="TopoComplexType" abstract="true"> <xs:annotation> <xs:documentation>Base type for FDO Topological Networks</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="gml:TopoComplexType"/> </xs:complexContent> </xs:complexType> <xs:complexType name="NetworkLayerType" abstract="true"> <xs:annotation> <xs:documentation>Base type for FDO Topological Network Layers</xs:documentation> </xs:annotation> <xs:complexContent> <xs:restriction base="gml:TopoComplexType"> <xs:sequence> <xs:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="0"/> <xs:element ref="gml:description" minOccurs="0" maxOccurs="0"/> <xs:element ref="gml:name" minOccurs="0" maxOccurs="0"/> <xs:element ref="gml:maximalComplex"/> <xs:element ref="gml:superComplex" minOccurs="0" maxOccurs="0"/> <xs:element ref="gml:subComplex" minOccurs="0" maxOccurs="0"/> <xs:element name="Primitive" type="fdo:NetworkPrimitiveMemberType" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="gml:topoPrimitiveMembers" minOccurs="0" maxOccurs="0"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="EdgeType" abstract="true"> <xs:annotation> <xs:documentation>Base type for FDO Network Edge primitives</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="gml:EdgeType"> <xs:sequence> <xs:element ref="gml:featureProperty" minOccurs="0"> <xs:annotation> <xs:documentation>Associated feature for this edge</xs:documentation> </xs:annotation> </xs:element> <xs:element ref="gml:topoPrimitiveMember" minOccurs="0"> <xs:annotation> <xs:documentation>Parent edge primitive</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="NodeType" abstract="true"> <xs:annotation> <xs:documentation>Base type for FDO Network Node primitives</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="gml:NodeType"> <xs:sequence> <xs:element ref="gml:featureProperty" minOccurs="0"> <xs:annotation> <xs:documentation>Associated feature for this node</xs:documentation> </xs:annotation> </xs:element> <xs:element ref="gml:topoPrimitiveMember" minOccurs="0"> <xs:annotation> <xs:documentation>Parent node primitive</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="NetworkPrimitiveMemberType" abstract="false"> <xs:complexContent> <xs:restriction base="gml:topoPrimitiveMemberType"> <xs:sequence> <xs:element ref="NetworkPrimitiveMember"/> </xs:sequence> <xs:attributeGroup ref="gml:AssociationAttributeGroup"/> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- CRS defined by Well Known Text--> <xs:complexType name="WKTCRSType"> <xs:complexContent> <xs:extension base="gml:AbstractCoordinateReferenceSystemType"> <xs:sequence> <xs:element name="WKT" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Various Simple Types --> <!-- Raster --> <!-- Association Property --> <!-- FDO Base types --> <xs:simpleType name="OrderType"> <xs:restriction base="xs:string"> <xs:enumeration value="Ascending"/> <xs:enumeration value="Descending"/> </xs:restriction> </xs:simpleType> <xs:complexType name="NameCollectionType"> <xs:annotation> <xs:documentation>Type that defines it's content as a collection of names.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Name" type="NameType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:simpleType name="NameType"> <xs:annotation> <xs:documentation>Type that defines restrictions for name elements within the schema.</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"/> </xs:simpleType> <xs:simpleType name="ProviderType"> <xs:annotation> <xs:documentation>Fdo Provider Type. Must be of the form company.provider.version</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="DeleteRuleType"> <xs:annotation> <xs:documentation>specifies the action to take when a delete operation is executed on the class instance at the other end of the relation</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:enumeration value="Cascade"/> <xs:enumeration value="Prevent"/> <xs:enumeration value="Break"/> </xs:restriction> </xs:simpleType> <!-- Base types for various FDO Data types --> <xs:simpleType name="byte"> <xs:restriction base="xs:int"> <xs:minInclusive value="-128"/> <xs:maxInclusive value="127"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="int16"> <xs:restriction base="xs:int"> <xs:minInclusive value="-32768"/> <xs:maxInclusive value="32767"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="int32"> <xs:restriction base="xs:int"> <xs:minInclusive value="-2147483648"/> <xs:maxInclusive value="2147483647"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="int64"> <xs:restriction base="xs:int"> <xs:minInclusive value="-2147483648"/> <xs:maxInclusive value="2147483647"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="uniqueiD"> <xs:restriction base="xs:int"/> </xs:simpleType> <xs:simpleType name="clob"> <xs:restriction base="xs:string"/> </xs:simpleType> <!-- special non-negative integer type --> <xs:simpleType name="NonNegIntType"> <xs:annotation> <xs:documentation>Type that defines an integer >= 0</xs:documentation> </xs:annotation> <xs:restriction base="xs:int"> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> </xs:schema>