<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by MIKE HORHAMMER (ORACLE CORPORATION) -->
<!-- 2009-07-27 11:17 -->
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Style3d" type="Style3dType">
		<xs:annotation>
			<xs:documentation>Declares a 3D style, with color, texture, and model style</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Theme3d" type="Theme3dType">
		<xs:annotation>
			<xs:documentation>Declares a theme, with default style(s) and a reference to the theme with the next (lower) LOD level</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Scene3d" type="Scene3dType">
		<xs:annotation>
			<xs:documentation>Declares a scene, with multiple themes</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ViewFrame3d" type="ViewFrame3dType">
		<xs:annotation>
			<xs:documentation>Declares a view frame, specifying a scene and a view point</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Animation3d" type="Animation3dType"/>
	<xs:complexType name="Animation3dType">
		<xs:sequence>
			<xs:element name="SceneName" type="xs:string"/>
			<xs:element ref="ViewPoint3d" maxOccurs="unbounded"/>
			<xs:element ref="DefaultStyle" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="closedLoop" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:element name="LightSource3d"/>
	<xs:element name="Vis3DConfig" type="Vis3DConfigType"/>
	<xs:complexType name="Style3dType">
		<xs:annotation>
			<xs:documentation>Version 08-07-15</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Color" type="SharedValueType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Stored in DB as VARCHAR2 or SDO_ORDINATE_ARRAY</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Texture" type="TextureType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This describes a texture for a geometry. For now, it only represents a single texture, as opposed to multiple textures being superimposed. Also, alpha maps and bump maps are not yet mentioned. They will be added, subsequently. Another aspect is that this schema currently only maps a single texture image per geometry. To map a separate facade to each wall of a building, the facades simply get aggregated into a single bitmap file. The texture coordinates link facades to walls.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ModelStyle" type="FeatureReferenceType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Model object is applied to an oriented point. The model object has SRID null (euclidean). It is applied to the oriented point, such that the euclidean origin coincides with the point, its z-axis coincides with the orientation vector of the point, and scaling is performed, such that the orientation vector represents one unit in the model object euclidean CRS.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Normals" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="GenerateNormals" type="xs:string" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TextureType">
		<xs:annotation>
			<xs:documentation>Version 08-07-15</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="TextureBLOB" type="SharedValueType">
				<xs:annotation>
					<xs:documentation>Stored in DB as BLOB</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TextureCoordinates" type="SharedValueType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Stored in DB as SDO_ORDINATE_ARRAY. Label Strings are not required, in this xsd, since we assume a texture coordinate array for the entire geometry. The database can supply tools to update texture coordinate arrays, using label strings.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Theme3dType">
		<xs:sequence>
			<xs:element name="LOD">
				<xs:annotation>
					<xs:documentation>This declares Level Of Detail information, as well as a reference to the next less detailed LOD theme within a chain.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ThemeLOD" type="xs:double"/>
						<xs:element name="Generalization" type="FeatureReferenceType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>There may be a chain of themes with an increasingly detailed representation of the same concept. In a more detailed theme, there is at least one feature for each feature in the less detailed theme. A simple city block in theme 1 may split into several low-detail buildings in theme 2 (separate features). Each of these may map to a single high-detail representation in theme 3. The link is provided by a foreign key from the more detailed theme to the less detailed one. The least detailed theme has no such foreign key.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element ref="DefaultStyle"/>
			<xs:element name="Tiling" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="TileIdColumn" type="xs:string"/>
						<xs:element name="TileWidth" type="xs:double"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="hidden_info" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This refers to optional attribute columns</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="field" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:attribute name="column" type="xs:string" use="required"/>
								<xs:attribute name="name" type="xs:string" use="required"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="ExternalRepresentations" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This describes optional external representations, such as CityGML</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="GML" type="SharedValueType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This refers to an optional GML column / foreign key</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="CityGML" type="SharedValueType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This refers to an optional CityGML column / foreign key</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="KML" type="SharedValueType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This refers to an optional KML column / foreign key</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="X3D" type="SharedValueType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This refers to an optional X3D column / foreign key</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="BIM" type="SharedValueType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This refers to an optional BIM column / foreign key</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="srid" type="xs:integer" use="optional"/>
	</xs:complexType>
	<xs:complexType name="SharedValueType">
		<xs:sequence>
			<xs:element ref="ForeignKey" minOccurs="0"/>
			<xs:element name="ValueColumn" type="xs:string">
				<xs:annotation>
					<xs:documentation>Name of value column in target table</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ForeignKey" type="xs:string">
		<xs:annotation>
			<xs:documentation>Foreign key for joining consumer table with target table</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="Vector3dType">
		<xs:attribute name="x" type="xs:double" use="required"/>
		<xs:attribute name="y" type="xs:double" use="required"/>
		<xs:attribute name="z" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="ViewPoint3dType">
		<xs:sequence>
			<xs:element name="Eye" type="Vector3dType">
				<xs:annotation>
					<xs:documentation>The location of the eye</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Center" type="Vector3dType">
				<xs:annotation>
					<xs:documentation>The point where the eye is looking</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Up" type="Vector3dType">
				<xs:annotation>
					<xs:documentation>The up vector specifying the frustum's up direction</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Frustum3d" type="Frustum3dType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The frustum establishes a view model with the eye at the apex of a symmetric view frustum</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="srid" type="xs:integer" use="optional"/>
		<xs:attribute name="fadeIn" type="xs:integer" use="optional" default="1">
			<xs:annotation>
				<xs:documentation>Fade in in ms</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="pause" type="xs:integer" use="optional" default="1">
			<xs:annotation>
				<xs:documentation>Pause in ms</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="fadeOut" type="xs:integer" use="optional" default="1">
			<xs:annotation>
				<xs:documentation>Fade out in ms</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="ViewPoint3d" type="ViewPoint3dType">
		<xs:annotation>
			<xs:documentation>Declares a view point</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="ViewFrame3dType">
		<xs:sequence>
			<xs:element name="SceneName" type="xs:string"/>
			<xs:element ref="ViewPoint3d"/>
			<xs:element ref="DefaultStyle" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Frustum3dType">
		<xs:annotation>
			<xs:documentation>The frustum establishes a view model with the eye at the apex of a symmetric view frustum</xs:documentation>
		</xs:annotation>
		<xs:attribute name="left" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The vertical line on the left edge of the near clipping plane mapped to the left edge of the graphics window</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="right" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The vertical line on the right edge of the near clipping plane mapped to the right edge of the graphics window</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="bottom" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The horizontal line on the bottom edge of the near clipping plane mapped to the bottom edge of the graphics window</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="top" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The horizontal line on the top edge of the near</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="near" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The distance to the frustum's near clipping plane. This value must be positive, (the value -near is the location of the near clip plane).</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="far" type="xs:double" use="required">
			<xs:annotation>
				<xs:documentation>The distance to the frustum's far clipping plane. This value must be positive, and must be greater than near.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="DefaultStyle" type="Style3dType">
		<xs:annotation>
			<xs:documentation>This refers to style descriptions, such as color, texture, model style, etc.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="Scene3dType">
		<xs:sequence>
			<xs:element name="Theme" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>A scene may have several themes. There may be a chain of increasingly detailed themes, representing the same concept. Only the most detailed admissable theme has to be referenced, here. Any less-detailed themes will automatically be rendered, as appropriate. Any more detailed themes are inadmissable for rendering in this scene.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="display" type="xs:boolean" use="required"/>
							<xs:attribute name="pickable" type="xs:boolean" use="required"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="ExternalTheme" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:choice>
						<xs:element name="MapViewerTiles">
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:string">
										<xs:attribute name="url" type="xs:anyURI" use="required"/>
										<xs:attribute name="datasource" type="xs:string" use="required"/>
										<xs:attribute name="tile_layer_name" type="xs:string" use="required"/>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="DigitalGlobeTiles"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element ref="DefaultStyle" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="srid" type="xs:integer" use="optional"/>
	</xs:complexType>
	<xs:complexType name="FeatureReferenceType">
		<xs:sequence>
			<xs:element ref="ForeignKey"/>
			<xs:element name="TargetTheme" type="xs:string"/>
			<xs:element name="ActivationDistance">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:double">
							<xs:attribute name="uom_id" type="xs:int" use="required"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Vis3DConfigType">
		<xs:sequence>
			<xs:element name="DefaultTexture" type="xs:string"/>
			<xs:element name="Logos" type="LogosType"/>
			<xs:element name="Icons" type="IconsType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="IconsType">
		<xs:sequence>
			<xs:element name="TurnIcon" type="xs:string"/>
			<xs:element name="RotateIcon" type="xs:string"/>
			<xs:element name="ZoomIcon" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="LogosType">
		<xs:sequence>
			<xs:element name="Logo" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>