<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.38 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-17" category="std" consensus="true" submissionType="IETF" xml:lang="en" updates="5222" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="LoST Planned Changes">Validation of Locations Around a Planned Change</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ecrit-lost-planned-changes-17"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2026" month="May" day="13"/>
    <area>ART</area>
    <workgroup>ecrit</workgroup>
    <abstract>
      <?line 26?>

<t>This document defines an extension to the Location to Service Translation (LoST) protocol (RFC5222) that allows  a LoST server to notify a client of planned changes to location data.  This extension is only useful with the validation function of LoST.  It is beneficial for LoST validation clients to be aware of planned changes, since at a known future date, previously valid records may become invalid, and new records may become valid.  This extension adds an element to the &lt;findService&gt; request to allow a LoST client to request validation as of a specified date.  It adds an optional Time-To-Live element to the response, which informs clients of the current expected lifetime of a validation.  It also adds a separate interface to a LoST server that allows a client to poll for planned changes.  Additionally, this document provides a conventional XML schema for LoST, as a backwards compatible alternative to the RelaxNG schema in RFC5222.</t>
    </abstract>
  </front>
  <middle>
    <?line 30?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Validation of civic locations involves dealing with data that may change over time.  A typical example is when a portion of a county or district that was not part of a municipality is "annexed" to a municipality.  Prior to the change, a Presence Information Data Format Location Object (PIDF-LO) <xref target="RFC5139"/> specifying a civic location in the affected area would have a blank A3 element, or would contain some other value; after the change, a PIDF-LO specifying the same location would contain an A3 element set to the name of the municipality that annexed that part of the county/district.  This kind of annexation has an effective date and time (typically 00:00 on the first or last day of a month), known in advance.  Other kinds of changes may also occur, and these will almost always also have an effective date that is known in advance.</t>
      <t>Records in a LoST client such as a Location Information Server (LIS) must change around these kinds of events.  Each affected old record must be discarded, and a new, validated record must be loaded into the client's database.  It is often difficult for a LIS operator to know that records must be changed around such events.  There are other circumstances where locations that were previously valid become invalid, such as a street renaming or renumbering event.  Using <xref target="RFC5222"/> validation, the only way for a LoST client such as a LIS to discover such changes is to periodically revalidate its entire database.  Of course, this does not facilitate timely changes, is not coordinated with the actual change event, and also adds significant load to LoST servers as well as LoST clients such as LISs.  Even when re-validation is used, a server has no mechanism to control, or suggest the time period for revalidation.</t>
      <t>This extension allows a LoST client to obtain from a LoST server sets of locations which may change.  It makes use of "partial location information" which is a set of location elements and values that, when compared against client location records, identify which of the client records may change as a result of the planned change.  A set of such partial locations is termed a "ChangeSet". ChangeSets have an ID, and a date when the change is effective.  IDs are ordered so that changes can be completed in the correct order.  The planned change interface is a REST/JSON interface that allows a client to poll a server using the last ID that it obtained from that server.  The response to a poll is a list of all the newer planned changes the server knows about beyond the ChangeSet whose ID was included in the poll.  The ID of the last ChangeSet in the returned list is used by the client in its next poll.</t>
      <t>When a LoST client such as a LIS receives a new ChangeSet, it may prepare one or more new records so that, at the precise planned event date and time, it may insert the new records into its active database and delete the old records.  As part of preparing the new records in advance of the change, a client may use the "asOf" date component of this extension to perform a LoST validation of the new record as of the effective date.</t>
      <t>The "asOf" date component of this extension  allow a LoST client such as a LIS to be prepared for and smoothly transition to planned changes.  The polling mechanism allows a client to be informed of planned changes, while the "asOf" date allows it to verify the validity of locations before they become active.</t>
      <t>Unplanned changes will occur, and periodic revalidation can still be used to maintain the data in the client's records.  However, LoST servers should be able to influence the rate of such revalidation.  For this purpose, this extension adds an optional "expires" element to the &lt;findServiceResponse&gt; to provide advice from a server to a client as to when revalidation is suggested. In a &lt;findServiceResponse&gt;, a LoST server may include the "expires" element to expressly state when the location should be re-validated. This avoids clients blindly revalidating every address on an arbitrary schedule.</t>
      <t>There are quite a few implementations of LoST.  Experience with these implementations indicates that the RelaxNG schema is very difficult to deal with, both because many commonly used development tools don't support it, and development staff is often unfamiliar with it.  Informal alternative schemas have been circulated, which is undesirable as they may not be in conformance with the RelaxNG schema in <xref target="RFC5222"/>.  This document provides an XML schema that replaces the RelaxNG schema.  It can be used by any implementation interchangeably with the RelaxNG schema.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions used in this document</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>"Server" in this document refers to a LoST server and "Client" is a LoST client.</t>
    </section>
    <section anchor="planned-change-poll-interface">
      <name>Planned Change Poll Interface</name>
      <t>This document defines a new interface to a LoST server.  The interface has three endpoints:</t>
      <ol spacing="normal" type="1"><li>
          <t>Versions, which returns the current version(s) the interface supports.  This allows the interface to evolve over time.</t>
        </li>
        <li>
          <t>PlannedChangePoll, which supports a polling mechanism.  The poll returns a list of changeSetIds which identify ChangeSet objects.</t>
        </li>
        <li>
          <t>GetChangeSet, which accepts a changeSetId and returns the identified ChangeSet object.</t>
        </li>
      </ol>
      <t>A ChangeSet object contains an identifier (changeSetId), a date (changeSetEffective) and an array of partial locations.</t>
      <t>A partial location is an array of location information element namespace/name and value pairs.  A LoST client (such as a LIS) compares the location elements with its records.  For each of the client's records where all of the location elements provided in the partial location have the same values as those in the partial location, that client record may be affected by the planned change.  The client's records may have other location elements, but those are not considered in the comparison.  So, for example, a partial location may have Country, A1, A2, A3 and A4 location elements, which means that any address with those Country, A1, A2, A3 and A4 values may be affected by the planned change, regardless of street name and number.  As another example, a partial location with Country, A1, A2, A3, A4, RD and POD but not HN applies to any address number on the specified street.</t>
      <t>Servers supporting this extension maintain an ordered list of changeSetIds.  A changeSetId is a string, which might not show the ordering.  For example, the ID could be a hashed timestamp, or a hashed sequence number, among other things.  Given a changeSetId returned in a prior poll, a server can identify which ChangeSets it has that come next, in order, after the specified changeSetId.  The effective date of a ChangeSet returned by a server need not be in the future.  Tardy clients might not keep up.  On the other hand, a server is not obligated to keep ChangeSets whose changeSetEffective date has passed by more than some arbitrary time.  A 12 month time period may be appropriate for a server whose service area doesn't have many changes, while a three month time period may be needed in a service area with frequent changes. A tardy client in a fast-changing environment might receive a large number of ChangeSetIds in response to a poll.</t>
      <t>Polls are expected every few minutes.  A new client (or one that has lost its last changeSetID) performs a poll without specifying an ID, and the server responds with all the changeSetsIds that it knows about.  Thereafter, the client retains the last changeSetId from its most recent poll and uses that in the next poll.  If the response to that poll contains no changeSetIds, it means the changeSetId the client has is the latest change the server knows about; the client uses the same changeSetId in subsequent polls until the server returns a new changeSetId.</t>
      <t>The version mechanism returns a list of versions of the web service the server supports.  This document specifies version 1.0. Versions are described as a major version and a minor version, where major and minor versions are integers, and a version description is a string consisting of the major version, a dot, and the minor version.  A backwards-compatible change within a major version <bcp14>MAY</bcp14> increment only the minor version number.  A non-backwards-compatible change <bcp14>MUST</bcp14> increment the major version number.  To achieve backwards compatibility, implementations <bcp14>MUST</bcp14> ignore any object members they do not recognize.  Minor version specifications <bcp14>SHALL</bcp14> only add objects, non-required members of existing objects, and non-mandatory-to-use functions and <bcp14>SHALL NOT</bcp14> delete any objects, members of objects or functions.  This means an implementation of a specific major version and minor version is backwards compatible with all minor versions of the major version.  The versions mechanism returns an array of supported versions, one for each major version supported, with the minor version listed being the highest supported minor version.  When versions are written or used as a string, the major version is first and separated from the minor version with a period.  For example major version 3, minor version 2 is written as "3.2".</t>
      <t>The normative definition of the web interface for these endpoints is contained in <xref target="pollInterface"/></t>
      <t>Discovering the Planned Change Poll interface uses the "lost+plannedChange" application tag with U-NAPTR using the name (application unique string) of the LoST server that provided validation as input along with this new service tag. Similarly to LoST, valid protocol tags for use in combination with "lost+plannedChange" are "http" and "https". The U-NAPTR responds with the base URI of the interface and the client must use the value to replace "localhost" in the yaml in <xref target="pollInterface"/>.</t>
    </section>
    <section anchor="ltasofgt-element">
      <name>&lt;asOf&gt; Element</name>
      <t>This document defines a new element in the &lt;findService&gt; request and &lt;findServiceRespponse&gt; called &lt;asOf&gt;, which contains a date and time in dateTime format with a required timezone.  A server supporting this extension validates the location in the request as of the date and time specified, taking into account planned changes.  This allows a client to verify in advance that it can make changes in its records in accordance with changes at the LoST server.</t>
      <t>A server responds with what it knows (as of the moment of the request) will be in effect on or before the &lt;asOf&gt; date</t>
      <t>The LoST server is not expected to retain a history of changes.  Therefore, an &lt;asOf&gt; date in the past will return the same results as omitting it (meaning current data).  There are no constraints on how far in advance planned changes may occur, and changes to the data may occur at any time.  Therefore, two queries with the same future &lt;asOf&gt; value placed at different times can return different results.  The server responds with its current understanding of planned changes (including any planned or unplanned changes that have already occurred) and makes no guarantees about future queries of the same location.</t>
      <t>When a server responds with a result &lt;asOf&gt; a time other than the time of the query, the &lt;findServiceResponse&gt; <bcp14>MUST</bcp14> include &lt;asOf&gt; containing the time used and each &lt;mapping&gt; included <bcp14>MUST</bcp14> have the 'expires' attribute set to "NO-CACHE".  A server <bcp14>SHOULD NOT</bcp14> include &lt;asOf&gt; in the result if &lt;asOf&gt; was not requested or if it otherwise used the current time to formulate the response.  A client receiving a response containing &lt;asOf&gt; <bcp14>MUST NOT</bcp14> assume that any mappings returned will remain unchanged and be in effect in the future; a client wishing to contact a service is still expected to use LoST contemporaneously with that need.</t>
    </section>
    <section anchor="ltrevalidateaftergt-in-response">
      <name>&lt;revalidateAfter&gt; in Response</name>
      <t>This extension defines a new element &lt;revalidateAfter&gt; to be added to the extension point of the &lt;locationValidation&gt; element appearing in a &lt;findServiceResponse&gt;. The element contains a date and time after which the client may wish to revalidate the location with the server. Alternatively, the element may contain the value "NO-EXPIRATION" which is an assertion that the server is not currently aware of any planned changes that would affect the future validation result, but makes no suggestion as to when the client should revalidate.  A server <bcp14>MAY</bcp14> add this element to a response when validation is requested. A server is not expected to add this element when the client is asking for validation &lt;asOf&gt; a specified time significantly into the future.</t>
      <t>Selecting a revalidation interval is a complex balancing of timeliness, server load, stability of the underlying data, and policy at the LoST server.  Too short, and load on the server may be undesirably large.  Too long, and invalid data may persist in clients for unacceptable lengths of time.  The polling mechanism provides timely notice to synchronize changes, but even with it, it is advisable for clients to periodically revalidate their records.
In areas that have little change in data, such as fully built out, stable communities already part of a municipality, it may be reasonable to set revalidation periods of six months or longer.  In areas that are quickly growing, 20-30 day revalidation may be more appropriate, even though these revalidations might be a majority of the traffic at the LoST server.</t>
    </section>
    <section anchor="schema">
      <name>Replacement XML schema</name>
      <t>======================</t>
      <t>This schema is an alternative to The Relax NG schema in <xref target="RFC5222"/>.  Future extensions to LoST are expected to use this schema as the base for the extensions, rather than the Relax NG schema.  Existing extensions described using the Relax NG schema continue to be valid.</t>
      <sourcecode type="XML"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="urn:ietf:params:xml:ns:lost1"
           targetNamespace="urn:ietf:params:xml:ns:lost1"
           elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" />

  <xs:element name="findService">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="requestLocation"/>
        <xs:group ref="commonRequestPattern"/>
      </xs:sequence>
      <xs:attribute name="validateLocation" type="xs:boolean" 
          default="false" />
      <xs:attribute name="serviceBoundary" default="reference">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="reference"/>
            <xs:enumeration value="value"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="recursive" type="xs:boolean" 
           default="false"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServices">
    <xs:complexType>
      <xs:group ref="commonRequestPattern"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesByLocation">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="requestLocation"/>
        <xs:group ref="commonRequestPattern"/>
      </xs:sequence>
      <xs:attribute name="recursive" type="xs:boolean" 
         default="true" />
    </xs:complexType>
  </xs:element>

  <xs:element name="getServiceBoundary">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="serviceBoundaryKey"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="findServiceResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="mapping" maxOccurs="unbounded"/>
        <xs:element ref="locationValidation" minOccurs="0"/>
        <xs:group ref="commonResponsePattern"/>
        <xs:group ref="locationUsed"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="serviceList"/>
        <xs:group ref="commonResponsePattern"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesByLocationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="serviceList"/>
        <xs:group ref="commonResponsePattern"/>
        <xs:group ref="locationUsed"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="getServiceBoundaryResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="serviceBoundary"/>
        <xs:group ref="commonResponsePattern"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:group name="commonRequestPattern">
    <xs:sequence>
      <xs:group ref="service"/>
      <xs:element ref="path" minOccurs="0"/>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="commonResponsePattern">
    <xs:sequence>
      <xs:element ref="warnings" minOccurs="0"
        maxOccurs="unbounded"/>
      <xs:element ref="path"/>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="requestLocation">
    <xs:sequence>
      <xs:element ref="location" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="location">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="locationInformation">
          <xs:attribute name="id" type="xs:token" 
              use="required"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="locationInformation">
    <xs:group ref="extensionPoint" maxOccurs="unbounded"/>
    <xs:attribute name="profile" type="xs:NMTOKEN"/>
  </xs:complexType>

  <xs:group name="serviceBoundary">
    <xs:sequence>
      <xs:element ref="serviceBoundary" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="serviceBoundary" type="locationInformation"/>

  <xs:element name="serviceBoundaryReference">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="source"/>
      <xs:attributeGroup ref="serviceBoundaryKey"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="serviceBoundaryKey">
    <xs:attribute name="key" type="xs:token" use="required"/>
  </xs:attributeGroup>

  <xs:element name="path">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="via" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="via">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="source"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="locationUsed">
    <xs:sequence>
      <xs:element ref="locationUsed" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="locationUsed">
    <xs:complexType>
      <xs:attribute name="id" type="xs:token" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="expires">
    <xs:attribute name="expires" use="required">
      <xs:simpleType>
        <xs:union memberTypes="xs:dateTime">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="NO-CACHE"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="NO-EXPIRATION"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:simpleType name="qnameList">
    <xs:list itemType="xs:QName"/>
  </xs:simpleType>

  <xs:element name="mapping">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="displayName"
             minOccurs="0" maxOccurs="unbounded"/>
        <xs:group ref="service"/>
        <xs:choice minOccurs="0">
          <xs:group ref="serviceBoundary"/>
          <xs:element ref="serviceBoundaryReference"/>
        </xs:choice>
        <xs:element ref="uri"
             minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="serviceNumber" minOccurs="0"/>
        <xs:group ref="extensionPoint"/>
      </xs:sequence>
      <xs:attributeGroup ref="expires"/>
      <xs:attribute name="lastUpdated" type="xs:dateTime"
            use="required"/>
      <xs:attributeGroup ref="source"/>
      <xs:attribute name="sourceId" type="xs:token"
            use="required"/>
      <xs:attributeGroup ref="message"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="displayName">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="xml:lang" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="uri" type="xs:anyURI"/>

  <xs:element name="serviceNumber">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:pattern value="[0-9*#]+"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="locationValidation">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="valid" minOccurs="0"/>
        <xs:element ref="invalid" minOccurs="0"/>
        <xs:element ref="unchecked" minOccurs="0"/>
        <xs:group ref="extensionPoint"/>
     </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="valid" type="qnameList"/>

  <xs:element name="invalid" type="qnameList"/>

  <xs:element name="unchecked" type="qnameList"/>

  <xs:complexType name="exceptionContainer">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="badRequest"/>
        <xs:element ref="internalError"/>
        <xs:element ref="serviceSubstitution"/>
        <xs:element ref="defaultMappingReturned"/>
        <xs:element ref="forbidden"/>
        <xs:element ref="notFound"/>
        <xs:element ref="loop"/>
        <xs:element ref="serviceNotImplemented"/>
        <xs:element ref="serverTimeout"/>
        <xs:element ref="serverError"/>
        <xs:element ref="SRSInvalid"/>
        <xs:element ref="locationInvalid"/>
        <xs:element ref="locationProfileUnrecognized"/>
      </xs:choice>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
    <xs:attributeGroup ref="source"/>
  </xs:complexType>

  <xs:element name="errors" type="exceptionContainer"/>

  <xs:element name="warnings" type="exceptionContainer"/>

  <xs:complexType name="basicException">
    <xs:annotation>
      <xs:documentation>
        Exception pattern.
      </xs:documentation>
    </xs:annotation>
    <xs:group ref="extensionPoint"/>
    <xs:attributeGroup ref="message"/>
  </xs:complexType>

  <xs:element name="badRequest" type="basicException"/>

  <xs:element name="internalError" type="basicException"/>

  <xs:element name="serviceSubstitution" type="basicException"/>

  <xs:element name="defaultMappingReturned" type="basicException"/>

  <xs:element name="forbidden" type="basicException"/>

  <xs:element name="notFound" type="basicException"/>

  <xs:element name="loop" type="basicException"/>

  <xs:element name="serviceNotImplemented" type="basicException"/>

  <xs:element name="serverTimeout" type="basicException"/>

  <xs:element name="serverError" type="basicException"/>

  <xs:element name="SRSInvalid" type="basicException"/>

  <xs:element name="locationInvalid" type="basicException"/>

  <xs:element name="locationValidationUnavailable"
          type="basicException"/>

  <xs:element name="locationProfileUnrecognized"
          type="basicException"/>
  <xs:element name="redirect">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attribute name="target" type="appUniqueString"
          use="required"/>
      <xs:attributeGroup ref="source"/>
      <xs:attributeGroup ref="message"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="message">
    <xs:attribute name="message" type="xs:token"/>
    <xs:attribute ref="xml:lang"/>
  </xs:attributeGroup>

  <xs:group name="service">
    <xs:sequence>
      <xs:element ref="service" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="service" type="xs:anyURI"/>

  <xs:simpleType name="appUniqueString">
    <xs:restriction base="xs:token">
      <xs:pattern value="([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]+"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="source">
    <xs:attribute name="source" type="appUniqueString"
    use="required"/>
  </xs:attributeGroup>

  <xs:element name="serviceList">
    <xs:simpleType>
      <xs:list itemType="xs:anyURI"/>
    </xs:simpleType>
  </xs:element>

  <xs:group name="notLost">
    <xs:annotation>
      <xs:documentation>
        Any element not in the LoST namespace.
      </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:any namespace="##other" processContents="skip"/>
      <xs:any namespace="##local" processContents="skip"/>
    </xs:choice>
  </xs:group>

  <xs:group name="extensionPoint">
    <xs:annotation>
      <xs:documentation>
        A point where future extensions
        (elements from other namespaces)
        can be added.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:group ref="notLost"
           minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

</xs:schema>

]]></sourcecode>
    </section>
    <section anchor="extSchema">
      <name>Extension XML Schema</name>
      <t>This schema provides the extension to the prior section schema for planned changes:</t>
      <sourcecode type="XML"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="urn:ietf:params:xml:ns:lostPlannedChange1"
    elementFormDefault="qualified">

<!-- extend the extensionPoint of commonRequestPattern of findService
                            and findServiceResponse to include:  -->
      <xs:element name="asOf" type="xs:dateTime" />

<!-- extend the extensionPoint of locationValidation to include: -->
      <xs:element name="revalidateAfter">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="NO-EXPIRATION"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
</xs:schema>
]]></sourcecode>
    </section>
    <section anchor="pollInterface">
      <name>plannedChangePoll Interface Description</name>
      <sourcecode type="JSON"><![CDATA[
openapi: 3.0.1
info:
  title: LoST plannedChange
  version: "1.0"

servers:
  - url: "{baseUri}/LoST/v1"
    variables:
      baseUri:
        default: https://localhost
        description: The base URI that is the output of 
          U-NAPTR resolution

paths:
  /PlannedChangePoll:
    get:
      summary: Get a list of planned changeSetIds
      operationId: getPlannedChangeIds
      responses:
        "200":
          description: Planned Changes
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/PlannedChangeIdList"

  /GetChangeSet:
    get:
      summary: Get a ChangeSet
      operationId: getChangeSet
      parameters:
        - in: query
          name: changeSetId
          schema:
            type: string
          description: ID of a ChangeSet
      responses:
        "200":
          description: return ChangeSet object
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/ChangeSet"

  /Versions:
    servers:
      - url: "{baseUri}/LoST"
        variables:
          baseUri:
            default: https://localhost
            description: The base URI that is the output of 
              U-NAPTR resolution
    get:
      summary: Retrieves all supported versions
      operationId: RetrieveVersions
      responses:
        "200":
          description: Versions supported
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/VersionsArray"

components:
  schemas:
    PlannedChangeIdList:
      type: array
      items:
        type: string

    ChangeSet:
      type: object
      properties:
        changeSetId:
          type: string
          description: ID of the ChangeSet
        changeSetEffective:
          type: string
          format: date-time
          description: date and time change will come into effect in 
            dateTime format with a required timezone
        partialLocationList:
          type: array
          items:
            type: object
            properties:
              namespace:
                type: string
                description: namespace of CAType name from IANA 
                  registry
              caType:
                type: string
                description: CAType name from IANA registry
              value:
                type: string
                description: value for this caType

    VersionsArray:
      type: object
      required:
        - versions
      properties:
        versions:
          type: array
          items:
            type: object
            required:
              - major
              - minor
            properties:
              major:
                type: integer
                format: int32
                description: Version major number
              minor:
                type: integer
                format: int32
                description: Version minor number
]]></sourcecode>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>As an extension to LoST, this document inherits the security issues raised in <xref target="RFC5222"/>.  Clients could poll at a rate which could affect other processing at the LoST server. This is not unlike any other type of denial of service attack at an HTTP server and similar mitigations are necessary.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="application-service-tag">
        <name>Application Service Tag</name>
        <t>This document registers the following U-NAPTR application service
   tag:</t>
        <artwork><![CDATA[
  Application Service Tag:  LoST-PlannedChange

  Defining Publication:  The specification contained within this
     document.
]]></artwork>
      </section>
      <section anchor="lost-xml-schema-registration">
        <name>LoST XML Schema Registration</name>
        <t>IANA is requested to add this document to the list of references for the lost1 entry in the schema subregistry of the IETF XML Registry</t>
      </section>
      <section anchor="planned-change-extension-xml-schema-registration">
        <name>Planned Change Extension XML Schema Registration</name>
        <artwork><![CDATA[
   BEGIN
   <?xml version="2.0"?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
     "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type"
           content="text/html;charset=iso-8859-1"/>
     <title>LoST Planned Change Namespace</title>
   </head>
   <body>
     <h1>Namespace for LoST Planned Changes</h1>
     <h2>urn:ietf:params:xml:ns:lostPlannedChange1</h2>
   <p>See <a href="http://www.rfc-editor.org/rfc/rfc????.txt">
      RFC????</a>.</p>
   </body>
   </html>
   END

]]></artwork>
        <t>The XML Schema is found in <xref target="extSchema"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC5139">
        <front>
          <title>Revised Civic Location Format for Presence Information Data Format Location Object (PIDF-LO)</title>
          <author fullname="M. Thomson" initials="M." surname="Thomson"/>
          <author fullname="J. Winterbottom" initials="J." surname="Winterbottom"/>
          <date month="February" year="2008"/>
          <abstract>
            <t>This document defines an XML format for the representation of civic location. This format is designed for use with Presence Information Data Format Location Object (PIDF-LO) documents and replaces the civic location format in RFC 4119. The format is based on the civic address definition in PIDF-LO, but adds several new elements based on the civic types defined for Dynamic Host Configuration Protocol (DHCP), and adds a hierarchy to address complex road identity schemes. The format also includes support for the xml:lang language tag and restricts the types of elements where appropriate. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5139"/>
        <seriesInfo name="DOI" value="10.17487/RFC5139"/>
      </reference>
      <reference anchor="RFC5222">
        <front>
          <title>LoST: A Location-to-Service Translation Protocol</title>
          <author fullname="T. Hardie" initials="T." surname="Hardie"/>
          <author fullname="A. Newton" initials="A." surname="Newton"/>
          <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
          <date month="August" year="2008"/>
          <abstract>
            <t>This document describes an XML-based protocol for mapping service identifiers and geodetic or civic location information to service contact URIs. In particular, it can be used to determine the location-appropriate Public Safety Answering Point (PSAP) for emergency services. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5222"/>
        <seriesInfo name="DOI" value="10.17487/RFC5222"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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
WJVsfwAA

-->

</rfc>
