<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.ordnancesurvey.co.uk/xml/namespaces/osgb" xmlns:osgb="http://www.ordnancesurvey.co.uk/xml/namespaces/osgb" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">
	<annotation>
		<appinfo>OSDNFFeatures.xsd v1.1 2002/03</appinfo>
		<documentation xml:lang="en">Ordnance Survey, (c) Crown Copyright. All Rights Reserved March 2002.</documentation>
		<documentation xml:lang="en">See http://www.ordnancesurvey.co.uk for guidelines and related information</documentation>
		<documentation xml:lang="en">This schema defines the topographic features.</documentation>
	</annotation>
	<!-- include constructs from the OS schemas which import the GML Feature and Geometry schemas -->
	<include schemaLocation="OSComplexTypes.xsd"/>
	<!-- ================================================================
	Global element Declarations 
	================================================================ -->
	<!-- feature members-->
	<element name="addressPointMember" type="osgb:addressPointMemberType" substitutionGroup="osgb:_featureMember"/>
	<element name="boundaryMember" type="osgb:boundaryMemberType" substitutionGroup="osgb:_featureMember"/>
	<element name="cartographicMember" type="osgb:cartographicMemberType" substitutionGroup="osgb:_featureMember"/>
	<element name="topographicMember" type="osgb:topographicMemberType" substitutionGroup="osgb:_featureMember"/>
	<!-- Abstract features -->
	<element name="_AddressPointFeature" type="osgb:AbstractFeatureType" abstract="true" substitutionGroup="gml:_Feature"/>
	<element name="_BoundaryFeature" type="osgb:AbstractFeatureType" abstract="true" substitutionGroup="gml:_Feature"/>
	<element name="_CartographicFeature" type="osgb:AbstractFeatureType" abstract="true" substitutionGroup="gml:_Feature"/>
	<element name="_TopographicFeature" type="osgb:AbstractFeatureType" abstract="true" substitutionGroup="gml:_Feature"/>
	<!-- features -->
	<element name="AddressPoint" type="osgb:AddressPointType" substitutionGroup="osgb:_AddressPointFeature"/>
	<element name="BoundaryLine" type="osgb:BoundaryLineType" substitutionGroup="osgb:_BoundaryFeature"/>
	<element name="CartographicText" type="osgb:CartographicTextType" substitutionGroup="osgb:_CartographicFeature"/>
	<element name="CartographicSymbol" type="osgb:CartographicSymbolType" substitutionGroup="osgb:_CartographicFeature"/>
	<element name="TopographicPoint" type="osgb:TopographicPointType" substitutionGroup="osgb:_TopographicFeature"/>
	<element name="TopographicLine" type="osgb:TopographicLineType" substitutionGroup="osgb:_TopographicFeature"/>
	<element name="TopographicArea" type="osgb:TopographicAreaType" substitutionGroup="osgb:_TopographicFeature"/>
	<!-- ==============================================================
	Type Declarations
	============================================================== -->
	<!-- member types -->
	<complexType name="addressPointMemberType">
		<complexContent>
			<restriction base="gml:FeatureAssociationType">
				<sequence minOccurs="0" maxOccurs="1">
					<element ref="osgb:_AddressPointFeature" minOccurs="1" maxOccurs="1"/>
				</sequence>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<complexType name="boundaryMemberType">
		<complexContent>
			<restriction base="gml:FeatureAssociationType">
				<sequence minOccurs="0" maxOccurs="1">
					<element ref="osgb:_BoundaryFeature" minOccurs="1" maxOccurs="1"/>
				</sequence>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<complexType name="cartographicMemberType">
		<complexContent>
			<restriction base="gml:FeatureAssociationType">
				<sequence minOccurs="0" maxOccurs="1">
					<element ref="osgb:_CartographicFeature" minOccurs="1" maxOccurs="1"/>
				</sequence>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<complexType name="topographicMemberType">
		<complexContent>
			<restriction base="gml:FeatureAssociationType">
				<sequence minOccurs="0" maxOccurs="1">
					<element ref="osgb:_TopographicFeature" minOccurs="1" maxOccurs="1"/>
				</sequence>
				<attributeGroup ref="gml:AssociationAttributeGroup"/>
			</restriction>
		</complexContent>
	</complexType>
	<!-- abstract feature -->
	<complexType name="AbstractFeatureType">
		<annotation>
			<documentation xml:lang="en">
				This defines the properties common to all Ordnance Survey topographic features.
			</documentation>
		</annotation>
		<complexContent>
			<extension base="gml:AbstractFeatureType">
				<sequence>
					<element name="featureCode" type="unsignedInt" minOccurs="0" maxOccurs="1"/>
					<element name="version" type="unsignedInt" minOccurs="1" maxOccurs="1"/>
					<element name="versionDate" type="date" minOccurs="1" maxOccurs="1"/>
					<element name="theme" type="osgb:themeType" minOccurs="1" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- features -->
	<complexType name="AddressPointType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="addressStatus" type="osgb:addressStatusType" minOccurs="1" maxOccurs="1"/>
					<element name="multipleOccupancyCount" type="osgb:multipleOccupancyCountType" minOccurs="0" maxOccurs="1"/>
					<element name="OSAPR" type="string" minOccurs="1" maxOccurs="1"/>
					<element name="point" type="gml:PointPropertyType" minOccurs="1" maxOccurs="1"/>
					<element name="postalAddress" type="osgb:postalAddressType" minOccurs="1" maxOccurs="1"/>
					<element name="postalAddressDate" type="date" minOccurs="1" maxOccurs="1"/>
					<element name="referenceToTopographicArea" type="gml:FeatureAssociationType" minOccurs="0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="BoundaryLineType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="accuracyOfPosition" type="osgb:accuracyOfPositionType" minOccurs="1" maxOccurs="1"/>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="make" type="osgb:makeType" minOccurs="0" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="polyline" type="osgb:LineStringPropertyType" minOccurs="1" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CartographicSymbolType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="0" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="orientation" type="osgb:orientationType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="point" type="gml:PointPropertyType" minOccurs="1" maxOccurs="1"/>
					<element name="referenceToFeature" type="gml:FeatureAssociationType" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CartographicTextType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="anchorPoint" type="gml:PointPropertyType" minOccurs="1" maxOccurs="1"/>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="0" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="make" type="osgb:makeType" minOccurs="0" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="textRendering" type="osgb:textRenderingType" minOccurs="1" maxOccurs="1"/>
					<element name="textString" type="string" minOccurs="1" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TopographicAreaType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="calculatedAreaValue" type="double" minOccurs="1" maxOccurs="1"/>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="make" type="osgb:makeType" minOccurs="0" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="polygon" type="osgb:PolygonPropertyType" minOccurs="1" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TopographicLineType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="accuracyOfPosition" type="osgb:accuracyOfPositionType" minOccurs="1" maxOccurs="1"/>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="heightAboveDatum" type="osgb:heightAboveDatumType" minOccurs="0" maxOccurs="1"/>
					<element name="heightAboveGroundLevel" type="osgb:heightAboveGroundLevelType" minOccurs="0" maxOccurs="1"/>
					<element name="make" type="osgb:makeType" minOccurs="0" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="polyline" type="osgb:LineStringPropertyType" minOccurs="1" maxOccurs="1"/>
					<element name="referenceToFeature" type="gml:FeatureAssociationType" minOccurs="0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TopographicPointType">
		<complexContent>
			<extension base="osgb:AbstractFeatureType">
				<sequence>
					<element name="accuracyOfPosition" type="osgb:accuracyOfPositionType" minOccurs="1" maxOccurs="1"/>
					<element name="changeHistory" type="osgb:changeHistoryType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveGroup" type="osgb:descriptiveGroupType" minOccurs="1" maxOccurs="unbounded"/>
					<element name="descriptiveTerm" type="string" minOccurs="0" maxOccurs="unbounded"/>
					<element name="heightAboveDatum" type="osgb:heightAboveDatumType" minOccurs="0" maxOccurs="1"/>
					<element name="heightAboveGroundLevel" type="osgb:heightAboveGroundLevelType" minOccurs="0" maxOccurs="1"/>
					<element name="make" type="osgb:makeType" minOccurs="0" maxOccurs="1"/>
					<element name="physicalLevel" type="osgb:physicalLevelType" minOccurs="1" maxOccurs="1"/>
					<element name="physicalPresence" type="osgb:physicalPresenceType" minOccurs="0" maxOccurs="1"/>
					<element name="point" type="gml:PointPropertyType" minOccurs="1" maxOccurs="1"/>
					<element name="referenceToFeature" type="gml:FeatureAssociationType" minOccurs="0" maxOccurs="1"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
</schema>
