Geopriv Location Object Markup Language
Date: June 2003. From: http://www.ietf.org/internet-drafts/draft-cuellar-geopriv-lo-ml-00.txt
Internet Draft J. Cuellar Document: draft-cuellar-geopriv-lo-ml-00.txt Siemens AG
C. Guenther Siemens AG
Expires in six months June 2003
Geopriv Location Object Markup Language < draft-cuellar-geopriv-lo-ml-00.txt>
Status of this Memo
This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract
This draft presents a foundational version of a markup language suitable for representing the Geopriv Location Object (LO). This language is defined by means of an XML schema.
Cuellar, Guenther 1
Geopriv Location Object Markup Language June 2003
Table of Contents
1. Introduction...................................................2 2. Geopriv LO Markup Language.....................................3 2.1. Overview..................................................3 2.2. Schema Element Start Tag..................................4 2.3. LO Element................................................4 2.4. Target Element............................................5 2.5. Device Element............................................6 2.6. RM Element................................................7 2.7. LR Element................................................9 2.8. LR Credential Element.....................................9 2.9. LR Proof of Possession of Credential Element..............9 2.10. Rule Element.............................................9 2.11. Location Element.........................................9 2.12. Time to Live Element.....................................9 3. XML Schema Listing.............................................9 4. XML LO Instance...............................................19 5. Note on Validation............................................21 6. References....................................................22 7. Author's Addresses............................................22 8. Full Copyright Statement......................................22
1. Introduction
This draft aims at providing a foundation for a markup language that is suitable for representing all data fields of the Geopriv Location Object (LO) as required in [2]. We present and illustrate an XML schema defining such a markup language. Up to now, we have concentrated on the question of how to represent the required data by means of an XML language, only touching the security and privacy issues concerning the LO.
Even at this early stage of developing a suitable Geopriv LO data format, it has become very clear that the Geopriv Working Group has to arrive at more explicit descriptions of the content of required data fields in order to allow for precise definitions of appropriate LO data formats. To give just one example, the Geopriv Working Group should explicitly determine which types of Location Recipient (LR) Credentials are to be supported. Therefore, we shall also utilize this draft to compile a list of general open issues that must be solved by the Geopriv Working Group in order to be able to complete its work successfully. These general open issues are entirely independent of a particular LO data format (such as XML in case of this draft), but their solution is simply a prerequisite to any sensible definition of such a data format. Additionally, we shall collect open issues that are related to the definition of an XML LO.
Cuellar, Guenther 2
Geopriv Location Object Markup Language June 2003
Based on the solutions of the general and XML related open issues, future versions of this draft will make the LO markup language introduced in this draft more precise in terms of representing identity, privacy policy and location information. We will investigate how security and privacy requirements on the LO can be satisfied by means of, for instance, the XML Signature and XML Encryption languages, the XML Access Control Markup Language (XACML) and the XML Key Management Specification (XKMS). In addition, we will make proposals how this XML LO can be bound to different Using Protocols.
2. Geopriv LO Markup Language
2.1. Overview
The XML schema listed completely in chapter 3 specifies an XML language that allows for the following top-level XML elements:
- LO: comprises all of the subsequent elements, the only mandatory of which is the Target element while all other elements are optional. - Target: contains an identifier for the Target which can be of non- anonymous, anonymous or of undetermined type. - Device: contains an identifier for the Device which can be a phone number, an IP address, or of anonymous or undetermined type. - RM: contains an identifier for the Rule Maker (RM) which can be of non-anonymous, anonymous or of undetermined type. - LR: contains an identifier of the Location Recipient (LR) which can be of non-anonymous, anonymous or of undetermined type; can also provide the information whether this identifier is a single or multi cast identifier. - LR Credential: contains a credential of the Location Recipient (LR). - LR Proof of Possession of Credential: contains the data that allows for verifying that the Location Recipient (LR) is in fact in possession of a certain credential. - Rule: contains an URI of an Applicable Rule, a Limited Rule or both. - Location: contains one or more Location Information child elements each of which can be composed of one or more Location Representation child elements and a Sighting Time element. Motion and Direction Vector as well as Precision and Confidence elements are also included here. - Time to Live: contains the point of time until when Location Information can be considered current.
Cuellar, Guenther 3
Geopriv Location Object Markup Language June 2003
Subsequent paragraphs illustrate the corresponding LO markup language in greater detail.
2.2. Schema Element Start Tag
As usual, the schema element start tag defines basic properties of the corresponding XML language (the line numbers are, of course, not part of the XML schema, but merely for easier referencing):
1: <xs:schema 2: targetNamespace="urn:ietf:geopriv:lo:0.0.4" 3: xmlns:gplo="urn:ietf:geopriv:lo:0.0.4" 4: xmlns:xs="http://www.w3.org/2001/XMLSchema" 5: elementFormDefault="qualified" 6: attributeFormDefault="unqualified" 7: version="0.0.4">
In line 4, the W3C schema language namespace "http://www.w3.org/2001/ XMLSchema" is linked to the prefix "xs". In line 3, the prefix "gplo", which stands for "Geopriv LO", is associated to the namespace "urn:ietf:geopriv:lo:0.0.4". This URI also defines the target namespace of this schema (line 2). The value of the attribute "version" indicates a (fictive) version number of this schema and the corresponding XML language.
2.3. LO Element
The LO element is the element of highest level within the LO markup language. It is defined as follows:
8: <xs:element name="LocationObject" type="gplo:LocationObjectType"/>
9: <xs:complexType name="LocationObjectType"> 10: <xs:all> 11: <xs:element ref="gplo:Target"/> 12: <xs:element ref="gplo:Device" minOccurs="0"/> 13: <xs:element ref="gplo:RuleMaker" minOccurs="0"/> 14: <xs:element ref="gplo:LocationRecipient" minOccurs="0"/> 15: <xs:element ref="gplo:LocationRecipientCredential" minOccurs="0"/> 16: <xs:element ref="gplo:LocationRecipientPoPofCredential" minOccurs="0"/> 17: <xs:element ref="gplo:Rule" minOccurs="0"/> 18: <xs:element ref="gplo:Location" minOccurs="0"/> 19: <xs:element ref="gplo:TimeToLive" minOccurs="0"/> 20: </xs:all> 21: </xs:complexType>
Thus, each valid LocationObject element can be composed of the child elements "Target" (line 11), ..., and "TimeToLive" (line 19). The
Cuellar, Guenther 4
Geopriv Location Object Markup Language June 2003
Target element is the only child element of the LocationObject element that is mandatory. Each other child element is optional and can occur at most once; the order of occurrence is arbitrary (xs:all, line 10).
Open Issue 1 (general): Which of the required LO data fields listed in [2] shall be mandatory to the LO?
2.4. Target Element
In line 11, the definition of the Target element is referenced to the one given below. In essence, the Target element has a child element TargetIdentity and a grandchild element TargetIdentifier whose content is of type "xs:string", and which can be equipped with the optional attributes "IdentifierType" and "NameSpace". Permitted values of the IdentifierType attribute are "NonAnonymous", "Anonymous" and "Any". The latter attribute value might indicate an undetermined or unknown or concealed type of Target identifier.
22: <xs:element name="Target" type="gplo:TargetType"/>
23: <xs:complexType name="TargetType"> 24: <xs:sequence> 25: <xs:element name="TargetIdentity"> 26: <xs:complexType> 27: <xs:choice> 28: <xs:element name="TargetIdentifier" type="gplo:TargetIdentifierType"/> 29: <xs:any namespace="##other" processContents="lax"/> 30: </xs:choice> 31: </xs:complexType> 32: </xs:element> 33: </xs:sequence> 34: </xs:complexType>
35: <xs:complexType name="TargetIdentifierType"> 36: <xs:simpleContent> 37: <xs:extension base="xs:string"> 38: <xs:attributeGroup ref="gplo:TargetIdentifierAttribute"/> 39: </xs:extension> 40: </xs:simpleContent> 41: </xs:complexType>
42: <xs:attributeGroup name="TargetIdentifierAttribute"> 43: <xs:attribute name="IdentifierType" use="optional"> 44: <xs:simpleType> 45: <xs:restriction base="xs:string"> 46: <xs:enumeration value="NonAnonmymous"/> 47: <xs:enumeration value="Anonymous"/> 48: <xs:enumeration value="Any"/> 49: </xs:restriction>
Cuellar, Guenther 5
Geopriv Location Object Markup Language June 2003
50: </xs:simpleType> 51: </xs:attribute> 52: <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> 53: <xs:anyAttribute processContents="lax"/> 54: </xs:attributeGroup>
A simple instance of the Target element definition could look like as follows:
<Target> <TargetIdentity> <TargetIdentifier IdentifierType="Anonymous"> ginefohcsT sennaH </TargetIdentifier> </TargetIdentity> </Target>
Line 52 declares the attribute NameSpace which is optional to the TargetIdentifier element, and whose value must be an URI. In conjunction with an IdentifierType attribute value "Anonymous", this attribute could be used to point to a set of Identifiers from which the anonymous Target identifier, i.e., the content of the TargetIdentifier element, had been taken.
Open Issue 2 (XML): Pointing to a set of identifiers by means of an URI - is this an appropriate mechanism for handling anonymous identifiers?
Line 29 in combination with line 27 allows the TargetIdentifier element to be substituted by any other element defined within a namespace different from the namespace of this schema. The purpose of this mechanism is to support other identity providing data formats such as specified by the Liberty Alliance Project, for example.
Open Issue 3 (general): Which identity providing data formats shall be supported by the Geopriv LO?
2.5. Device Element
The definition of the Device element is quite similar to the definition of the Target element - of course with the exception that the IdentifierType attribute of the DeviceIdentifier element can have the values "PhoneNumber", "IPAddress", "Anonymous" and "Any":
55: <xs:element name="Device" type="gplo:DeviceType"/>
56: <xs:complexType name="DeviceType"> 57: <xs:sequence> 58: <xs:element name="DeviceIdentity">
Cuellar, Guenther 6
Geopriv Location Object Markup Language June 2003
59: <xs:complexType> 60: <xs:choice> 61: <xs:element name="DeviceIdentifier" type="gplo:DeviceIdentifierType"/> 62: <xs:any namespace="##other" processContents="lax"/> 63: </xs:choice> 64: </xs:complexType> 65: </xs:element> 66: </xs:sequence> 67: </xs:complexType>
68: <xs:complexType name="DeviceIdentifierType"> 69: <xs:simpleContent> 70: <xs:extension base="xs:string"> 71: <xs:attributeGroup ref="gplo:DeviceIdentifierAttribute"/> 72: </xs:extension> 73: </xs:simpleContent> 74: </xs:complexType>
75: <xs:attributeGroup name="DeviceIdentifierAttribute"> 76: <xs:attribute name="IdentifierType" use="optional"> 77: <xs:simpleType> 78: <xs:restriction base="xs:string"> 79: <xs:enumeration value="PhoneNumber"/> 80: <xs:enumeration value="IPAddress"/> 81: <xs:enumeration value="Anonymous"/> 82: <xs:enumeration value="Any"/> 83: </xs:restriction> 84: </xs:simpleType> 85: </xs:attribute> 86: <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> 87: <xs:anyAttribute processContents="lax"/> 88: </xs:attributeGroup>
An example of a Device element complying with this syntax is:
<Device> <DeviceIdentity> <DeviceIdentifier IdentifierType="PhoneNumber"> 017167239870 </DeviceIdentifier> </DeviceIdentity> </Device>
Open Issue 4 (general): Which types of Devices and Device identifiers shall be supported by the LO?
2.6. RM Element
Cuellar, Guenther 7
Geopriv Location Object Markup Language June 2003
Up to now, the RM element is defined in a way that allows for representing a non-anonymous, anonymous or undetermined RM identifier, similar to the Target element. This, of course, will not be sufficient in a final version of this markup language: additional features will have to be specified in order to be able to satisfy the privacy requirements on the LO.
89: <xs:element name="RuleMaker" type="gplo:RuleMakerType"/>
90: <xs:complexType name="RuleMakerType"> 91: <xs:sequence> 92: <xs:element name="RuleMakerIdentity"> 93: <xs:complexType> 94: <xs:choice> 95: <xs:element name="RuleMakerIdentifier" type="gplo:RuleMakerIdentifierType"/> 96: <xs:any namespace="##other" processContents="lax"/> 97: </xs:choice> 98: </xs:complexType> 99: </xs:element> 100: </xs:sequence> 101: </xs:complexType>
102: <xs:complexType name="RuleMakerIdentifierType"> 103: <xs:simpleContent> 104: <xs:extension base="xs:string"> 105: <xs:attributeGroup ref="gplo:RuleMakerIdentifierAttribute"/> 106: </xs:extension> 107: </xs:simpleContent> 108: </xs:complexType>
109: <xs:attributeGroup name="RuleMakerIdentifierAttribute"> 110: <xs:attribute name="IdentifierType" use="optional"> 111: <xs:simpleType> 112: <xs:restriction base="xs:string"> 113: <xs:enumeration value="NonAnonymous"/> 114: <xs:enumeration value="Anonymous"/> 115: <xs:enumeration value="Any"/> 116: </xs:restriction> 117: </xs:simpleType> 118: </xs:attribute> 119: <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> 120: <xs:anyAttribute processContents="lax"/> 121: </xs:attributeGroup>
An example of a RuleMaker element could be:
<RuleMaker> <RuleMakerIdentity> <RuleMakerIdentifier IdentifierType="NonAnonymous">
Cuellar, Guenther 8
Geopriv Location Object Markup Language June 2003
Siemens AG </RuleMakerIdentifier> </RuleMakerIdentity> </RuleMaker>
2.7. LR Element
2.8. LR Credential Element
2.9. LR Proof of Possession of Credential Element
2.10. Rule Element
2.11. Location Element
2.12. Time to Live Element
3. XML Schema Listing
This section contains a complete listing of the XML schema that has been illustrated in previous sections. The next section provides a simple XML LO instance document that is valid with respect to this schema.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="urn:ietf:geopriv:lo:0.0.4" xmlns:gplo="urn:ietf:geopriv:lo:0.0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.0.4">
<!-- Start: LO -->
<xs:element name="LocationObject" type="gplo:LocationObjectType"/>
<xs:complexType name="LocationObjectType"> <xs:all> <xs:element ref="gplo:Target"/> <xs:element ref="gplo:Device" minOccurs="0"/> <xs:element ref="gplo:RuleMaker" minOccurs="0"/> <xs:element ref="gplo:LocationRecipient" minOccurs="0"/> <xs:element ref="gplo:LocationRecipientCredential" minOccurs="0"/> <xs:element ref="gplo:LocationRecipientPoPofCredential" minOccurs="0"/> <xs:element ref="gplo:Rule" minOccurs="0"/> <xs:element ref="gplo:Location" minOccurs="0"/>
Cuellar, Guenther 9
Geopriv Location Object Markup Language June 2003
<xs:element ref="gplo:TimeToLive" minOccurs="0"/> </xs:all> </xs:complexType>
<!-- End: LO -->
<!-- Start: Target -->
<xs:element name="Target" type="gplo:TargetType"/>
<xs:complexType name="TargetType"> <xs:sequence> <xs:element name="TargetIdentity"> <xs:complexType> <xs:choice> <xs:element name="TargetIdentifier" type="gplo:TargetIdentifierType"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
<xs:complexType name="TargetIdentifierType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="gplo:TargetIdentifierAttribute"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:attributeGroup name="TargetIdentifierAttribute"> <xs:attribute name="IdentifierType" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="NonAnonmymous"/> <xs:enumeration value="Anonymous"/> <xs:enumeration value="Any"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> <xs:anyAttribute processContents="lax"/> </xs:attributeGroup>
<!-- End: Target -->
<!-- Start: Device -->
<xs:element name="Device" type="gplo:DeviceType"/>
Cuellar, Guenther 10
Geopriv Location Object Markup Language June 2003
<xs:complexType name="DeviceType"> <xs:sequence> <xs:element name="DeviceIdentity"> <xs:complexType> <xs:choice> <xs:element name="DeviceIdentifier" type="gplo:DeviceIdentifierType"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
<xs:complexType name="DeviceIdentifierType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="gplo:DeviceIdentifierAttribute"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:attributeGroup name="DeviceIdentifierAttribute"> <xs:attribute name="IdentifierType" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="PhoneNumber"/> <xs:enumeration value="IPAddress"/> <xs:enumeration value="Anonymous"/> <xs:enumeration value="Any"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> <xs:anyAttribute processContents="lax"/> </xs:attributeGroup>
<!-- End: Device -->
<!-- Start: RM -->
<xs:element name="RuleMaker" type="gplo:RuleMakerType"/>
<xs:complexType name="RuleMakerType"> <xs:sequence> <xs:element name="RuleMakerIdentity"> <xs:complexType> <xs:choice> <xs:element name="RuleMakerIdentifier" type="gplo:RuleMakerIdentifierType"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice>
Cuellar, Guenther 11
Geopriv Location Object Markup Language June 2003
</xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
<xs:complexType name="RuleMakerIdentifierType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="gplo:RuleMakerIdentifierAttribute"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:attributeGroup name="RuleMakerIdentifierAttribute"> <xs:attribute name="IdentifierType" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="NonAnonymous"/> <xs:enumeration value="Anonymous"/> <xs:enumeration value="Any"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> <xs:anyAttribute processContents="lax"/> </xs:attributeGroup>
<!-- End: RM -->
<!-- Start: LR -->
<xs:element name="LocationRecipient" type="gplo:LocationRecipientType"/>
<xs:complexType name="LocationRecipientType"> <xs:sequence> <xs:element name="LocationRecipientIdentity"> <xs:complexType> <xs:choice> <xs:element name="LocationRecipientIdentifier" type="gplo:LocationRecipientIdentifierType"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
<xs:complexType name="LocationRecipientIdentifierType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup
Cuellar, Guenther 12
Geopriv Location Object Markup Language June 2003
ref="gplo:LocationRecipientIdentifierAttribute"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:attributeGroup name="LocationRecipientIdentifierAttribute"> <xs:attribute name="IdentifierType" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="NonAnonymous"/> <xs:enumeration value="Anonymous"/> <xs:enumeration value="Any"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="CastType" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="SingleCast"/> <xs:enumeration value="MultiCast"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="NameSpace" type="xs:anyURI" use="optional"/> <xs:anyAttribute processContents="lax"/> </xs:attributeGroup>
<!-- End: LR -->
<!-- Start: LR Credential -->
<xs:element name="LocationRecipientCredential" type="gplo:LocationRecipientCredentialType"/>
<xs:complexType name="LocationRecipientCredentialType"> <xs:choice> <xs:element name="PKIXCertificate" type="xs:string"/> <xs:element name="IDandPublicKey" type="xs:string"/> <xs:element name="HashandURIofPKIXCertificate" type="xs:string"/> <xs:element name="PKIXKeyIdentifier" type="xs:string"/> <xs:element name="IDandSharedSecret" type="xs:string"/> </xs:choice> </xs:complexType>
<!-- End: LR Credential -->
<!-- Start: LR Proof of Possession of Credential -->
<xs:element name="LocationRecipientPoPofCredential"> <xs:complexType> <xs:choice>
Cuellar, Guenther 13
Geopriv Location Object Markup Language June 2003
<xs:element name="ChallengeResponse" type="xs:string"/> </xs:choice> </xs:complexType> </xs:element>
<!-- End: LR Proof of Possession of Credential -->
<!-- Start: Rule -->
<xs:element name="Rule" type="gplo:RuleType"/>
<xs:complexType name="RuleType"> <xs:choice> <xs:element name="ApplicableRule" type="gplo:ApplicableRuleType"/> <xs:element name="LimitedRule" type="gplo:LimitedRuleType"/> <xs:element name="ApplicableAndLimitedRule"> <xs:complexType> <xs:all> <xs:element name="ApplicableRule" type="gplo:ApplicableRuleType" minOccurs="1"/> <xs:element name="LimitedRule" type="gplo:LimitedRuleType" minOccurs="1"/> </xs:all> </xs:complexType> </xs:element> </xs:choice> </xs:complexType>
<xs:complexType name="ApplicableRuleType"> <xs:choice> <xs:element name="ApplicableRuleURI" type="xs:anyURI"/> </xs:choice> </xs:complexType>
<xs:complexType name="LimitedRuleType"> <xs:choice> <xs:element name="LimitedRuleLanguage1" type="xs:string"/> </xs:choice> </xs:complexType>
<!-- End: Rule -->
<!-- Start: Location -->
<xs:element name="Location" type="gplo:LocationType"/>
<xs:complexType name="LocationType"> <xs:sequence> <xs:element name="LocationInformation"
Cuellar, Guenther 14
Geopriv Location Object Markup Language June 2003
type="gplo:LocationInformationType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="LocationInformationType"> <xs:sequence> <xs:element name="LocationRepresentation" type="gplo:LocationRepresentationType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="SightingTime" type="xs:dateTime" minOccurs="0"/> <xs:element name="MotionVector" type="xs:string" minOccurs="0"/> <xs:element name="DirectionVector" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType>
<xs:complexType name="LocationRepresentationType"> <xs:sequence> <xs:choice> <xs:element name="LatLonAlt" type="gplo:LatLonAltType"/> <xs:element name="Civil" type="gplo:CivilType"/> <xs:element name="TimeZone" type="gplo:TimeZoneType"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> <xs:element name="Confidence" type="gplo:ConfidenceType" minOccurs="0"/> </xs:sequence> </xs:complexType>
<xs:simpleType name="ConfidenceType"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0.0"/> <xs:maxInclusive value="100.0"/> </xs:restriction> </xs:simpleType>
<!-- Start: Location: Latitude, Longitude, Altitude -->
<xs:complexType name="LatLonAltType"> <xs:sequence> <xs:element name="Latitude" type="gplo:LatitudeType" minOccurs="1"/> <xs:element name="Longitude" type="gplo:LongitudeType" minOccurs="1"/> <xs:element name="Altitude" type="gplo:AltitudeType" minOccurs="0"/> <xs:element name="Precision"
Cuellar, Guenther 15
Geopriv Location Object Markup Language June 2003
type="gplo:LatLonAltPrecisionType" minOccurs="0"/> </xs:sequence> </xs:complexType>
<xs:complexType name="LatitudeType"> <xs:choice> <xs:element name="DegIntMinIntSecInt" type="gplo:LatDegIntMinIntSecIntType"/> <xs:element name="DegMinSecDec" type="gplo:LatDegMinSecDecType"/> <xs:element name="DegIntMinSecDec" type="gplo:LatDegIntMinSecDecType"/> </xs:choice> </xs:complexType>
<xs:complexType name="LongitudeType"> <xs:choice> <xs:element name="DegIntMinIntSecInt" type="gplo:LonDegIntMinIntSecIntType"/> <xs:element name="DegMinSecDec" type="gplo:LonDegMinSecDecType"/> <xs:element name="DegIntMinSecDec" type="gplo:LonDegIntMinSecDecType"/> </xs:choice> </xs:complexType>
<xs:complexType name="AltitudeType"> <xs:choice> <xs:element name="Decimal" type="xs:decimal"/> </xs:choice> </xs:complexType>
<xs:complexType name="LatLonAltPrecisionType"> <xs:simpleContent> <xs:extension base="gplo:PositiveDecimal"> <xs:attribute name="Area" type="gplo:Areas" use="required"/> <xs:attribute name="Unit" type="gplo:Units" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:complexType name="LatDegIntMinIntSecIntType"> <xs:sequence> <xs:element name="Degree" type="gplo:LatDegIntType"/> <xs:element name="Minute" type="gplo:MinSecIntType"/> <xs:element name="Second" type="gplo:MinSecIntType"/> </xs:sequence> </xs:complexType>
<xs:complexType name="LonDegIntMinIntSecIntType"> <xs:sequence>
Cuellar, Guenther 16
Geopriv Location Object Markup Language June 2003
<xs:element name="Degree" type="gplo:LonDegIntType"/> <xs:element name="Minute" type="gplo:MinSecIntType"/> <xs:element name="Second" type="gplo:MinSecIntType"/> </xs:sequence> </xs:complexType>
<xs:simpleType name="LatDegMinSecDecType"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="-90.0"/> <xs:maxInclusive value="90.0"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="LonDegMinSecDecType"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="-180.0"/> <xs:maxInclusive value="180.0"/> </xs:restriction> </xs:simpleType>
<xs:complexType name="LatDegIntMinSecDecType"> <xs:sequence> <xs:element name="Degree" type="gplo:LatDegIntType"/> <xs:element name="MinuteSecond" type="gplo:MinSecDecType"/> </xs:sequence> </xs:complexType>
<xs:complexType name="LonDegIntMinSecDecType"> <xs:sequence> <xs:element name="Degree" type="gplo:LonDegIntType"/> <xs:element name="MinuteSecond" type="gplo:MinSecDecType"/> </xs:sequence> </xs:complexType>
<xs:simpleType name="LatDegIntType"> <xs:restriction base="xs:byte"> <xs:minInclusive value="-90"/> <xs:maxInclusive value="90"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="LonDegIntType"> <xs:restriction base="xs:short"> <xs:minInclusive value="-180"/> <xs:maxInclusive value="180"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="MinSecIntType"> <xs:restriction base="xs:unsignedByte"> <xs:maxInclusive value="59"/> </xs:restriction>
Cuellar, Guenther 17
Geopriv Location Object Markup Language June 2003
</xs:simpleType>
<xs:simpleType name="MinSecDecType"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0.0"/> <xs:maxExclusive value="60.0"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="Areas"> <xs:restriction base="xs:string"> <xs:enumeration value="Circle"/> <xs:enumeration value="Sphere"/> <xs:enumeration value="Rectangle"/> <xs:enumeration value="Cuboid"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="Units"> <xs:restriction base="xs:string"> <xs:enumeration value="Meter"/> <xs:enumeration value="Kilometer"/> <xs:enumeration value="Foot"/> <xs:enumeration value="Yard"/> <xs:enumeration value="Mile"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="PositiveDecimal"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0.0"/> </xs:restriction> </xs:simpleType>
<!-- End: Location: Latitude, Longitude, Altitude -->
<!-- Start: Location: Civil -->
<xs:complexType name="CivilType"> <xs:sequence> <xs:element name="Domain" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Type" type="xs:string"/> <xs:anyAttribute processContents="lax"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
Cuellar, Guenther 18
Geopriv Location Object Markup Language June 2003
<!-- End: Location: Civil -->
<!-- Start: Location: Time Zone -->
<xs:simpleType name="TimeZoneType"> <xs:restriction base="xs:string"> <xs:pattern value="Z|[+\-]?(0[0-9]|1[0-4]):[0-5][0-9]"/> </xs:restriction> </xs:simpleType>
<!-- End: Location: Time Zone -->
<!-- End: Location -->
<!-- Start: Time to Live -->
<xs:element name="TimeToLive" type="xs:dateTime"/>
<!-- End: Time to Live -->
</xs:schema>
4. XML LO Instance
To give a preliminary impression of how an XML LO complying with the schema listed in section 3 could look like, this section provides such an XML instance document. It can be validated against this schema (see section 5).
<?xml version="1.0" encoding="UTF-8"?> <LocationObject xmlns="urn:ietf:geopriv:lo:0.0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:geopriv:lo:0.0.4 gploml004.xsd">
<Target> <TargetIdentity> <TargetIdentifier IdentifierType="Anonymous"> ginefohcsT sennaH </TargetIdentifier> </TargetIdentity> </Target>
<Device> <DeviceIdentity> <DeviceIdentifier IdentifierType="PhoneNumber"> 017167239870 </DeviceIdentifier> </DeviceIdentity>
Cuellar, Guenther 19
Geopriv Location Object Markup Language June 2003
</Device>
<RuleMaker> <RuleMakerIdentity> <RuleMakerIdentifier IdentifierType="NonAnonymous"> Siemens AG </RuleMakerIdentifier> </RuleMakerIdentity> </RuleMaker>
<LocationRecipient> <LocationRecipientIdentity> <LocationRecipientIdentifier IdentifierType="NonAnonymous" CastType="MultiCast"> CT IC 3 Mobile Security Team </LocationRecipientIdentifier> </LocationRecipientIdentity> </LocationRecipient>
<LocationRecipientCredential> <PKIXCertificate>...</PKIXCertificate> </LocationRecipientCredential>
<LocationRecipientPoPofCredential> <ChallengeResponse> Challenge-Response executed successfully </ChallengeResponse> </LocationRecipientPoPofCredential>
<Rule> <LimitedRule> <LimitedRuleLanguage1> Dirk Kroeselberg has no permission to see my location. (Limited Rule Language needs to be defined.) </LimitedRuleLanguage1> </LimitedRule> </Rule>
<Location> <LocationInformation> <LocationRepresentation> <LatLonAlt> <Latitude> <DegIntMinIntSecInt> <Degree>-48</Degree> <Minute>8</Minute> <Second>23</Second> </DegIntMinIntSecInt> </Latitude> <Longitude> <DegIntMinSecDec>
Cuellar, Guenther 20
Geopriv Location Object Markup Language June 2003
<Degree>11</Degree> <MinuteSecond>34.4667</MinuteSecond> </DegIntMinSecDec> </Longitude> <Altitude> <Decimal>521.27</Decimal> </Altitude> <Precision Area="Sphere" Unit="Meter">58.3</Precision> </LatLonAlt> <Confidence>95.0</Confidence> </LocationRepresentation> <LocationRepresentation> <Civil> <Domain Type="County">Germany</Domain> <Domain Type="State">Bavaria</Domain> <Domain Type="City">Munich</Domain> <Domain Type="Street">Leopoldstrasse</Domain> <Domain Type="Number">6</Domain> </Civil> </LocationRepresentation> <LocationRepresentation> <TimeZone>+01:00</TimeZone> </LocationRepresentation> <SightingTime>2003-07-14T20:12:34+01:00</SightingTime> <MotionVector>...</MotionVector> <DirectionVector>...</DirectionVector> </LocationInformation> </Location>
<TimeToLive>2003-07-14T20:17:34+01:00</TimeToLive>
</LocationObject>
5. Note on Validation
We have validated the XML LO listed in section 4 and other instance documents against the schema listed in section 3 using the XML Schema Validator (XSV) and the Apache XML projectĘs Xerces2-J parser. XSV and Xerces2-J are available at
http://www.ltg.ed.ac.uk/~ht/xsv-status.html
and
http://xml.apache.org/xerces2-j/index.html,
respectively. If you store the schema as "gploml004.xsd" and the XML LO as "gploml004.xml" (say) in the same directory, then the commands
xsv gploml004.xml gploml004.xsd
Cuellar, Guenther 21
Geopriv Location Object Markup Language June 2003
and
java dom.Writer -v -s gploml004.xml,
respectively, should not produce any error messages.
6. References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[2] Cuellar, J., Morris, J.B., Mulligan D., Peterson, J., Polk, J., "Geopriv requirements", Internet Draft, draft-ietf-geopriv- reqs-03.txt, March 2003.
7. Author's Addresses
Jorge R Cuellar Siemens AG Corporate Technology CT IC 3 81730 Munich Email: jorge.cuellar@siemens.com Germany
Christian Guenther Siemens AG Corporate Technology CT IC 3 81730 Munich Email: christian.guenther@siemens.com Germany
8. Full Copyright Statement
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
Cuellar, Guenther 22
Geopriv Location Object Markup Language June 2003
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Cuellar, Guenther 23