<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by frank (GeoForschungsZentrum Potsdam) -->
<!-- SGD boreholeML schema, version 2.0 (last update 30.8.2007)
     set up with XMLSpy v2007 sp1 (http://www.altova.com) by A. May (con terra) 6.2.2007,
     further developed with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Bayerisches Geologisches Landesamt -->
      <!--final editing by Frank Lochter and Rainer Haener 10.01.2008 for "Staatliche Geologische Dienste Deutschlands -->
<xsd:schema targetNamespace="http://www.infogeo.de/borehole" xmlns:iso19115="http://www.isotc211.org/iso19115/" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.infogeo.de/borehole" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:import namespace="http://www.opengis.net/gml" schemaLocation="./gml3.1.1/base/gml.xsd"/>
	<!--
	<xsd:import namespace="http://www.isotc211.org/iso19115/" schemaLocation="http://www.infogeo.de/xml/sgd-Profil.xsd"/>
-->
	<xsd:import namespace="http://www.isotc211.org/iso19115/" schemaLocation="iso19115/sgd-Profil.xsd"/>
	<!--<xsd:include schemaLocation="sgd-keylists.xsd"/>  http://www.infogeo.de/xml/...xsd -->
	<xsd:include schemaLocation="geology/lastHorizonTypeList.xsd"/>
	<xsd:include schemaLocation="geology/stratigraphyChronoTypeList.xsd"/>
	<xsd:include schemaLocation="geology/geoGenesisTypeList.xsd"/>
	<xsd:include schemaLocation="geology/genesisTypeList.xsd"/>
	<xsd:include schemaLocation="geology/intervaltypeTypeList.xsd"/>
	<xsd:include schemaLocation="geology/rocknameTypeList.xsd"/>
	<xsd:include schemaLocation="geology/smallKeyTypeLists.xsd"/>
	<xsd:include schemaLocation="geology/drillingKeyList.xsd"/>
	<xsd:element name="BoreholeModel" type="BoreholeModelType" substitutionGroup="gml:_FeatureCollection">
		<xsd:annotation>
			<xsd:documentation>Container for multiple boreholes - root element</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="BoreholeModelType">
		<xsd:complexContent>
			<xsd:restriction base="gml:AbstractFeatureCollectionType">
				<xsd:sequence>
					<xsd:element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="gml:description" minOccurs="0"/>
					<xsd:element ref="gml:name" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="gml:boundedBy"/>
					<xsd:element ref="gml:location" minOccurs="0"/>
					<xsd:element name="boreholeMember" type="BoreholeMemberType"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="boreholeMember" type="BoreholeMemberType" substitutionGroup="gml:featureMember"/>
	<xsd:complexType name="BoreholeMemberType">
		<xsd:complexContent>
			<xsd:restriction base="gml:FeaturePropertyType">
				<xsd:sequence>
					<xsd:element ref="_BoreholeFeature"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="_BoreholeFeature" type="gml:AbstractFeatureType" abstract="true" substitutionGroup="gml:_Feature"/>
	<xsd:element name="Borehole" type="BoreholeType" substitutionGroup="_BoreholeFeature">
		<xsd:annotation>
			<xsd:documentation>The main GML feature of this schema</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="BoreholeType">
		<xsd:complexContent>
			<xsd:extension base="BoreholeFeatureType">
				<xsd:sequence>
					<xsd:element name="locationProperty" type="gml:PointPropertyType"/>
					<xsd:element name="id">
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:maxLength value="40"/>
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:element>
					<xsd:element name="languageProperty" type="iso19115:LanguageType"/>
					<xsd:element name="shortName">
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:maxLength value="15"/>
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:element>
					<xsd:element name="fullName" type="xsd:string"/>
					<xsd:element name="unitOfMeasure" type="iso19115:_UnitOfMeasureType"/>
					<xsd:element name="databaseCode" type="databaseCodeType"/>
					<xsd:element name="databaseName" type="databaseNameType"/>
					<xsd:element name="totalLength" type="xsd:float"/>
					<xsd:element name="exportDate" type="xsd:date"/>
					<xsd:element name="drillMethodCode" type="drillMethodCodeType" minOccurs="0"/>
					<xsd:element name="drillMethodName" type="drillMethodNameType" minOccurs="0"/>
					<xsd:element name="drillingYear" type="xsd:integer" minOccurs="0"/>
					<xsd:element name="lastHorizonCode" type="lastHorizonCodeType" minOccurs="0"/>
					<xsd:element name="lastHorizonName" type="lastHorizonNameType" minOccurs="0"/>
					<xsd:element name="purposeCode" type="purposeCodeType" minOccurs="0"/>
					<xsd:element name="purposeName" type="purposeNameType" minOccurs="0"/>
					<xsd:element name="owner" type="xsd:string" minOccurs="0"/>
					<xsd:element name="project" type="xsd:string" minOccurs="0"/>
					<xsd:element name="layerDataCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="layerDataName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="installationCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="installationName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="groundWaterLevelDataCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="groundWaterLevelDataName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="boreholeMeasurementCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="boreholeMeasurementName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="archiveDataCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="archiveDataName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="scansCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="scansName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="samplesCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="samplesName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="labDataCode" type="availabilityCodeType" minOccurs="0"/>
					<xsd:element name="labDataName" type="availabilityNameType" minOccurs="0"/>
					<xsd:element name="filled" type="xsd:boolean"/>
					<xsd:element name="originProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="Origin">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="xcoord" type="xsd:double"/>
											<xsd:element name="ycoord" type="xsd:double"/>
											<xsd:element name="locationMethodCode" type="locationMethodCodeType" minOccurs="0"/>
											<xsd:element name="locationMethodName" type="locationMethodNameType" minOccurs="0"/>
											<xsd:element name="level" type="xsd:double" minOccurs="0"/>
											<xsd:element name="levelMethodCode" type="levelMethodCodeType" minOccurs="0"/>
											<xsd:element name="levelMethodName" type="levelMethodNameType" minOccurs="0"/>
											<xsd:element name="coordSystemProperty" minOccurs="0">
												<xsd:complexType>
													<xsd:sequence>
														<xsd:element name="CoordSystem">
															<xsd:complexType>
																<xsd:sequence>
																	<xsd:element name="epsgSystemCode" type="epsgSystemCodeType"/>
																	<xsd:element name="epsgSystemName" type="epsgSystemNameType"/>
																</xsd:sequence>
															</xsd:complexType>
														</xsd:element>
													</xsd:sequence>
												</xsd:complexType>
											</xsd:element>
											<xsd:element name="levelReferenceSystemProperty" minOccurs="0">
												<xsd:complexType>
													<xsd:sequence>
														<xsd:element name="LevelReferenceSystem">
															<xsd:complexType>
																<xsd:sequence>
																	<xsd:element name="levelReferenceSystemCode" type="levelReferenceSystemCodeType"/>
																	<xsd:element name="levelReferenceSystemName" type="levelReferenceSystemNameType"/>
																</xsd:sequence>
															</xsd:complexType>
														</xsd:element>
													</xsd:sequence>
												</xsd:complexType>
											</xsd:element>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="codingStandardProperty">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="CodingStandard">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="codingStandardCode" type="codingStandardCodeType"/>
											<xsd:element name="codingStandardName" type="codingStandardNameType"/>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="organisationProperty">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="Organisation" type="OrganisationType"/>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="intervalSeriesProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="IntervalSeries">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="version" type="xsd:string" minOccurs="0"/>
											<xsd:element name="description">
												<xsd:simpleType>
													<xsd:restriction base="xsd:string">
														<xsd:maxLength value="80" fixed="false"/>
													</xsd:restriction>
												</xsd:simpleType>
											</xsd:element>
											<xsd:element name="intervalProperty" maxOccurs="unbounded">
												<xsd:complexType>
													<xsd:sequence>
														<xsd:element name="Interval" type="IntervalType"/>
													</xsd:sequence>
												</xsd:complexType>
											</xsd:element>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="boreholeFillingProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="BoreholeFilling">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="from" type="xsd:double"/>
											<xsd:element name="to" type="xsd:double"/>
											<xsd:element name="boreholeFillMaterialCode" type="fillMaterialCodeType"/>
											<xsd:element name="boreholeFillMaterialName" type="fillMaterialNameType"/>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="drillingProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="Drilling">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="from" type="xsd:double"/>
											<xsd:element name="to" type="xsd:double"/>
											<xsd:element name="drillingMethodCode" type="drillingMethodCodeType"/>
											<xsd:element name="drillingMethodName" type="drillingMethodNameType"/>
											<xsd:element name="drillingToolCode" type="drillingToolCodeType"/>
											<xsd:element name="drillingToolName" type="drillingToolNameType"/>
											<xsd:element name="drillholeDiameter" type="xsd:double"/>
											<xsd:element name="flushingTypeCode" type="flushingTypeCodeType"/>
											<xsd:element name="flushingTypeName" type="flushingTypeNameType"/>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="groundwaterProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="Groundwater">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="entryLevel" type="xsd:double"/>
											<xsd:element name="entryLevelDate" type="xsd:date"/>
											<xsd:element name="maxLevel" type="xsd:double"/>
											<xsd:element name="maxLevelDate" type="xsd:date"/>
											<xsd:element name="endLevel" type="xsd:double"/>
											<xsd:element name="endLevelDate" type="xsd:date"/>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="installationProperty" minOccurs="0">
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element name="Installation">
									<xsd:complexType>
										<xsd:sequence>
											<xsd:element name="installationDate" type="xsd:date"/>
											<xsd:element name="casingProperty" maxOccurs="unbounded">
												<xsd:complexType>
													<xsd:sequence>
														<xsd:element name="Casing">
															<xsd:complexType>
																<xsd:sequence>
																	<xsd:element name="casingTypeCode" type="casingTypeCodeType"/>
																	<xsd:element name="casingTypeName" type="casingTypeNameType"/>
																	<xsd:element name="casingElementProperty" maxOccurs="unbounded">
																		<xsd:complexType>
																			<xsd:sequence>
																				<xsd:element name="CasingElement">
																					<xsd:complexType>
																						<xsd:sequence>
																							<xsd:element name="from" type="xsd:double"/>
																							<xsd:element name="to" type="xsd:double"/>
																							<xsd:element name="casingSegmentTypeCode" type="casingSegmentTypeCodeType"/>
																							<xsd:element name="casingSegmentTypeName" type="casingSegmentTypeNameType"/>
																							<xsd:element name="casingSegmentDiameter" type="xsd:double" minOccurs="0"/>
																							<xsd:element name="casingSegmentMaterialCode" type="casingSegmentMaterialCodeType" minOccurs="0"/>
																							<xsd:element name="casingSegmentMaterialName" type="casingSegmentMaterialNameType" minOccurs="0"/>
																							<xsd:element name="casingSegmentWallThickness" type="xsd:double" minOccurs="0"/>
																						</xsd:sequence>
																					</xsd:complexType>
																				</xsd:element>
																			</xsd:sequence>
																		</xsd:complexType>
																	</xsd:element>
																	<xsd:element name="casingFillProperty" minOccurs="0" maxOccurs="unbounded">
																		<xsd:complexType>
																			<xsd:sequence>
																				<xsd:element name="CasingFill">
																					<xsd:complexType>
																						<xsd:sequence>
																							<xsd:element name="from" type="xsd:double"/>
																							<xsd:element name="to" type="xsd:double"/>
																							<xsd:element name="casingFillMaterialCode" type="fillMaterialCodeType"/>
																							<xsd:element name="casingFillMaterialName" type="fillMaterialNameType"/>
																						</xsd:sequence>
																					</xsd:complexType>
																				</xsd:element>
																			</xsd:sequence>
																		</xsd:complexType>
																	</xsd:element>
																</xsd:sequence>
															</xsd:complexType>
														</xsd:element>
													</xsd:sequence>
												</xsd:complexType>
											</xsd:element>
											<xsd:element name="spaceFillingProperty" minOccurs="0" maxOccurs="unbounded">
												<xsd:complexType>
													<xsd:sequence>
														<xsd:element name="SpaceFilling">
															<xsd:complexType>
																<xsd:sequence>
																	<xsd:element name="from" type="xsd:double"/>
																	<xsd:element name="to" type="xsd:double"/>
																	<xsd:element name="spaceFillMaterialCode" type="fillMaterialCodeType"/>
																	<xsd:element name="spaceFillMaterialName" type="fillMaterialNameType"/>
																</xsd:sequence>
															</xsd:complexType>
														</xsd:element>
													</xsd:sequence>
												</xsd:complexType>
											</xsd:element>
										</xsd:sequence>
									</xsd:complexType>
								</xsd:element>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="BoreholeFeatureType">
		<xsd:complexContent>
			<xsd:restriction base="gml:AbstractFeatureType">
				<xsd:sequence>
					<xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="gml:description" minOccurs="0"/>
							<xsd:element ref="gml:name" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>Multiple names may be provided.  These will often be distinguished by being assigned by different authorities, as indicated by the value of the codeSpace attribute.  In an instance document there will usually only be one name per authority.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
					</xsd:sequence>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="OrganisationType">
		<xsd:sequence>
			<xsd:element name="organisationName"/>
			<xsd:element name="contactPerson" minOccurs="0"/>
			<xsd:element name="contactInfoProperty">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ContactInfo">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="addressProperty">
										<xsd:complexType>
											<xsd:sequence>
												<xsd:element name="Address">
													<xsd:complexType>
														<xsd:sequence>
															<xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
															<xsd:element name="city" type="xsd:string" minOccurs="0"/>
															<xsd:element name="street" type="xsd:string" minOccurs="0"/>
															<xsd:element name="number" type="xsd:string" minOccurs="0"/>
															<xsd:element name="provinceCode" type="provinceCodeType" minOccurs="0"/>
															<xsd:element name="provinceName" type="provinceNameType" minOccurs="0"/>
															<xsd:element name="country" type="xsd:string"/>
														</xsd:sequence>
													</xsd:complexType>
												</xsd:element>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="phoneProperty" minOccurs="0">
										<xsd:complexType>
											<xsd:sequence>
												<xsd:element name="Phone">
													<xsd:complexType>
														<xsd:sequence>
															<xsd:element name="typeProperty" type="iso19115:CI_TelephoneType"/>
															<xsd:element name="number" type="xsd:string"/>
														</xsd:sequence>
													</xsd:complexType>
												</xsd:element>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="electronicMailAddress" type="xsd:string" minOccurs="0"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="IntervalType">
		<xsd:sequence>
			<xsd:element name="depthTop" type="xsd:double"/>
			<xsd:element name="depthBase" type="xsd:double"/>
			<xsd:element name="intervalSectionProperty" type="gml:LineStringPropertyType" minOccurs="0"/>
			<xsd:element name="rockCode" type="xsd:string" minOccurs="0"/>
			<xsd:element name="rockNameText" type="xsd:string" minOccurs="0"/>
			<xsd:element name="intervalTypeCode" type="intervaltypeCodeType" minOccurs="0"/>
			<xsd:element name="intervalTypeName" type="intervaltypeNameType" minOccurs="0"/>
			<xsd:element name="genesisCode" type="genesisCodeType" minOccurs="0"/>
			<xsd:element name="genesisName" type="genesisNameType" minOccurs="0"/>
			<xsd:element name="geogenesisCode" type="geoGenesisCodeType" minOccurs="0"/>
			<xsd:element name="geogenesisName" type="geoGenesisNameType" minOccurs="0"/>
			<xsd:element name="carbonateCode" type="carbonateCodeType" minOccurs="0"/>
			<xsd:element name="carbonateName" type="carbonateNameType" minOccurs="0"/>
			<xsd:element name="waterContentCode" type="waterContentCodeType" minOccurs="0"/>
			<xsd:element name="waterContentName" type="waterContentNameType" minOccurs="0"/>
			<xsd:element name="consistencyCode" type="consistencyCodeType" minOccurs="0"/>
			<xsd:element name="consistencyName" type="consistencyNameType" minOccurs="0"/>
			<xsd:element name="compactnessCode" type="compactnessCodeType" minOccurs="0"/>
			<xsd:element name="compactnessName" type="compactnessNameType" minOccurs="0"/>
			<xsd:element name="lithologyProperty" maxOccurs="3">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Lithology">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="rockNameCode" type="rocknameCodeType"/>
									<xsd:element name="rockNameName" type="rocknameNameType"/>
									<xsd:element name="percentage" type="xsd:double" minOccurs="0"/>
									<xsd:element name="rockColorCode" type="rockColorCodeType" minOccurs="0"/>
									<xsd:element name="rockColorName" type="rockColorNameType" minOccurs="0"/>
									<xsd:element name="rockColorMixtureCode" type="rockColorMixtureCodeType" minOccurs="0"/>
									<xsd:element name="rockColorMixtureName" type="rockColorMixtureNameType" minOccurs="0"/>
									<xsd:element name="aquifier" type="xsd:boolean" minOccurs="0"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="stratigraphyProperty" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Stratigraphy">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="stratigraphyChronoCode" type="stratigraphyChronoCodeType" minOccurs="0"/>
									<xsd:element name="stratigraphyChronoName" type="stratigraphyChronoNameType" minOccurs="0"/>
									<xsd:element name="stratigraphyLitho" type="xsd:string" minOccurs="0"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- genesis code/type problem -->
			<!-- geogenesis code/type korrigiert -->
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>

