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