<?xml version="1.0" encoding="UTF-8"?>
<!--W3C XML Schema generated by XMLSpy v2014 (x64) (http://www.altova.com)-->
<!--
major/ minor versie:	1.0
datum productie:		17-09-2019
Gemaakt door			NM en Mathijs Hoeijmakers
doelgroep					PostNL; IOT  	
   -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:postnl/ogs/beaconlocation/1" targetNamespace="urn:postnl/ogs/beaconlocation/1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.0">
	<xsd:element name="BeaconLocation" type="PhysicalSystemType">
		<xsd:annotation>
			<xsd:documentation>BeaconLocation is een toegepast CDM gebaseerd op SensorML PhysicalSystem en bedoeld voor het bepalen van de locatie van beacons. </xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="AbstractPhysicalProcessType" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="AbstractProcessType">
				<xsd:sequence>
					<xsd:element name="localReferenceFrame" minOccurs="0" maxOccurs="unbounded">
						<xsd:annotation>
							<xsd:documentation>A spatial reference frame of the physical component itself; this reference frame is absolute and defines the relationship of the reference frame to the physical body of the component; position of the component relates this reference frame to some external reference frame. Note that units are specified in the position so they are not specified as part of the SpatialFrame.</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element ref="SpatialFrame"/>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="position" type="PositionUnionPropertyType" minOccurs="0" maxOccurs="unbounded">
						<xsd:annotation>
							<xsd:documentation>Provides positional information relating the component's spatial reference frame to an external spatial reference frame. Positional information can be given by location, by full body state, by a time-tagged trajectory, or by a measuring or computational process.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="timePosition" type="TimePropertyType" minOccurs="0" maxOccurs="unbounded">
						<xsd:annotation>
							<xsd:documentation>Provides Time positions typically reference a local time frame to an external time frame. For example, a timer-start-time might be given relative to an "absolute" GPS time.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="SpatialFrame" type="SpatialFrameType">
		<xsd:annotation>
			<xsd:documentation>A general spatial Cartesian Reference Frame where the axes and origin will be defined textually relative to a physical component.</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="SpatialFrameType">
		<xsd:sequence>
			<xsd:element name="origin" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>A textual description of the origin of the reference frame relative to the physical device (e.g. "the origin is at the point of attachment of the sensor to the platform").</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="axis" minOccurs="1" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Axis with name attribute and a textual description of the relationship of the axis to the physical device; the order of the axes listed determines their relationship according to the right-handed rule (e.g. axis 1 cross axis 2 = axis 3).</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute name="name" type="xsd:NCName" use="required"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="PositionUnion">
		<xsd:annotation>
			<xsd:documentation>A choice of elements for defining spatial state (e.g. location, orientation, linear/angular velocity and linear/angular acceleration.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element ref="Point">
				<xsd:annotation>
					<xsd:documentation>Provides static location only using a fea3:Point element.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="PositionUnionPropertyType">
		<xsd:sequence minOccurs="0">
			<xsd:group ref="PositionUnion"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="DescribedObjectType" abstract="true">
		<xsd:sequence>
			<xsd:element name="identification" type="IdentifierListPropertyType" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Identifiers useful for discovery of the process (e.g. short name, mission id, wing id, serial number, etc.)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="classification" type="ClassifierListPropertyType" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Classifiers useful for discovery of the process (e.g. process type, sensor type, intended application, etc.)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="AbstractProcessType" abstract="true">
		<xsd:complexContent>
			<xsd:extension base="DescribedObjectType">
				<xsd:sequence>
					<xsd:element name="outputs" minOccurs="0" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation>The list of data components (and their properties and semantics) that the process will accept as output; In the standard linear equation y=mx+b; x is the input, m and b are the parameters, and y is the output.</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:sequence>
								<xsd:element ref="OutputList"/>
							</xsd:sequence>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
				<xsd:attribute name="id" type="xsd:ID" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="OutputList" type="OutputListType"/>
	<xsd:complexType name="OutputListType">
		<xsd:sequence>
			<xsd:element ref="Time" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="IdentifierList" type="IdentifierListType"/>
	<xsd:complexType name="IdentifierListType">
		<xsd:sequence>
			<xsd:element name="identifier" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element ref="Term"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="IdentifierListPropertyType">
		<xsd:sequence minOccurs="0">
			<xsd:element ref="IdentifierList"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="Term" type="TermType"/>
	<xsd:complexType name="TermType">
		<xsd:sequence>
			<xsd:element name="label" type="xsd:string"/>
			<xsd:element name="value" type="xsd:string"/>
		</xsd:sequence>
		<xsd:attribute name="definition" type="xsd:anyURI" use="optional"/>
	</xsd:complexType>
	<xsd:element name="ClassifierList" type="ClassifierListType"/>
	<xsd:complexType name="ClassifierListType">
		<xsd:sequence>
			<xsd:element name="classifier" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element ref="Term"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ClassifierListPropertyType">
		<xsd:sequence minOccurs="0">
			<xsd:element ref="ClassifierList"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PhysicalSystemType">
		<xsd:complexContent>
			<xsd:extension base="AbstractPhysicalProcessType"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="coordinates" type="CoordinatesType">
		<xsd:annotation>
			<xsd:appinfo>deprecated</xsd:appinfo>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="PointType">
		<xsd:sequence>
			<xsd:element ref="coordinates"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="Point" type="PointType">
		<xsd:annotation>
			<xsd:documentation>A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType.</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="CoordinatesType">
		<xsd:annotation>
			<xsd:documentation>This type is deprecated for tuples with ordinate values that are numbers.
CoordinatesType is a text string, intended to be used to record an array of tuples or coordinates. 
While it is not possible to enforce the internal structure of the string through schema validation, some optional attributes have been provided in previous versions of GML to support a description of the internal structure. These attributes are deprecated. The attributes were intended to be used as follows:
Decimal	symbol used for a decimal point (default="." a stop or period)
cs        	symbol used to separate components within a tuple or coordinate string (default="," a comma)
ts        	symbol used to separate tuples or coordinate strings (default=" " a space)
Since it is based on the XML Schema string type, CoordinatesType may be used in the construction of tables of tuples or arrays of tuples, including ones that contain mixed text and numeric values.</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="decimal" type="xsd:string" default="."/>
				<xsd:attribute name="cs" type="xsd:string" default=","/>
				<xsd:attribute name="ts" type="xsd:string" default="&#x20;"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:element name="Time" type="TimeType">
		<xsd:annotation>
			<xsd:documentation>Scalar component used to represent a time quantity either as ISO 8601 (e.g. 2004-04-18T12:03:04.6Z) or as a duration relative to a time of reference</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:complexType name="TimeType">
		<xsd:sequence>
			<xsd:element name="uom" type="UnitReference">
				<xsd:annotation>
					<xsd:documentation>Temporal unit of measure used to express the value of this data component</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="value" type="TimePosition" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Value is optional, to enable structure to act as a schema for values provided using other encodings</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="TimePropertyType">
		<xsd:sequence minOccurs="0">
			<xsd:element ref="Time"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="UnitReference">
		<xsd:attribute name="code" type="UomSymbol" use="optional"/>
	</xsd:complexType>
	<xsd:simpleType name="UomSymbol">
		<xsd:annotation>
			<xsd:documentation>This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: ":" (colon), " " (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as "kg", "m/s", etc. 
It is also required that the symbol be an identifier for a unit of measure as specified in the "Unified Code of Units of Measure" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[^: \n\r\t]+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="TimePosition">
		<xsd:union memberTypes="xsd:double TimeIso8601"/>
	</xsd:simpleType>
	<xsd:simpleType name="TimeIso8601">
		<xsd:union memberTypes="xsd:date xsd:time xsd:dateTime TimeIndeterminateValue"/>
	</xsd:simpleType>
	<xsd:simpleType name="TimeIndeterminateValue">
		<xsd:annotation>
			<xsd:documentation>"now" indicates that the specified value shall be replaced with the current temporal position whenever the value is accessed.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="now"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
