<?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.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-10" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <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-10"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2024" month="October" day="14"/>
    <area>ART</area>
    <workgroup>ecrit</workgroup>
    <abstract>
      <?line 25?>

<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 29?>

<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 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.  A new client that does not know any IDs, or a client that lost the last changeSetId that it had, uses the PlannedChangePoll endpoint, omitting the changeSetId in the poll query. In the response, the server returns all the ChangeSets it knows about.  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>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.</t>
      <t>The normative definition of the web interface for these endpoints is contained 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 called 'asOf', 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 'asOf' date</t>
      <t>The LoST server is not expected to retain a history of changes.  Therefore, an 'asOf' 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 'asOf' 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 representations about future queries of the same location.</t>
    </section>
    <section anchor="validuntil-in-response">
      <name>"validUntil" in Response</name>
      <t>This extension adds an 'validUntil' attribute to the &lt;locationValidation&gt; element.  The 'validUntil' attribute
contains a date and time after which the client may wish to revalidate the location
with the server.  A server <bcp14>MAY</bcp14> add this attribute to a response when validation is requested.  This attribute takes the form of the 'expires' attribute pattern of <xref target="RFC5222"/>, which allows
the values "NO-CACHE" or "NO-EXPIRATION" to be returned instead of a dateTime value.  However, for the 'validUntil' attribute specified here, "NO-CACHE" has no
meaning and <bcp14>MUST NOT</bcp14> be returned; "NO-EXPIRATION" means the server does
not have a suggested revalidation period.</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>
      <t>When a change is planned, typically the 'validUntil' value of the affected records is lowered approaching and after the change, so that clients with affected records revalide soon after the change is implemented. For example, one technique is to start lowering the 'validUntil' value of the affected records at the length of the previous 'validUntil' value in advance of the planned change. For example, if the old 'validUntil' value of the affected records is three months, then at least three months before the planned change, the 'validUntil' value of the affected records might be lowered to 20 days, and then 15-20 days before the planned change the value might be lowered again, to 10 days or so.   It is not advisable to set the expiration precisely at the planned change time if a large number of records will be changed, since that would cause a large spike in traffic at the change time.  Rather, the validUntil time should have a random additional time added to it to spread out the load.</t>
    </section>
    <section anchor="schema">
      <name>Replacement XML schema</name>
      <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:element name="findService">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="requestLocation"/>
        <xs:group ref="commonRequestPattern"/>
      </xs:sequence>
      <xs:attribute name="validateLocation" type="xs:boolean"/>
      <xs:attribute name="serviceBoundary">
        <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"/>
    </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"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="getServiceBoundary">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="anyElement"
      <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:attributeGroup ref="anyElement"/>
    </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:attributeGroup ref="anyElement"
    </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:attributeGroup ref="anyElement"
    <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="anyElement"
      <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="anyElement"
      <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">
      <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:attributeGroup ref="anyElement"
     </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:attributeGroup ref="anyElement"
    </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="anyElement"
    <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="anyElement">
    <xs:annotation>
      <xs:documentation>
        A wildcard pattern for including any element
        from any other namespace.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:any processContents="skip"
          minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:attributeGroup name="anyElement">
    <xs:annotation>
      <xs:documentation>
        A wildcard pattern for including any element
        from any other namespace.
      </xs:documentation>
    </xs:annotation>
    <xs:anyAttribute processContents="skip"/>
  </xs:attributeGroup>

  <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"
    xmlns="urn:ietf:params:xml:ns:lostPlannedChange1"
    targetNamespace="urn:ietf:params:xml:ns:lostPlannedChange1"
    elementFormDefault="qualified">
     <!-- Import base Lost -->
<!-- extend the extensionPoint of commonRequestPattern of findService
                                    to include:  -->
      <xs:element ref="asOf" type="xs:dateTime" minOccurs="0" maxOccurs="1"/>
      <xs:attributeGroup name="expires">
        <xs:attribute name="expires">
         <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:attribute>
     </xs:attributeGroup>

<!-- extend the extensionPoint of locationValidation to include: -->
      <xs:element ref="validUntil" type="xs:expires" minOccurs="0" />

</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: http://localhost/LoST/v1
        paths:
          /PlannedChangePoll:
            get:
              summary: Get a list of planned changeSetIds
              operationId: getPlannedChangeIds
              responses:
                '200':
                  description: Planned Changes
                  content:
                    application/json:
                      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/json:
                      schema:
                        $ref: '#/components/schemas/ChangeSet'
          /Versions:
            servers:
              - url: https://api.example.com/rum
                description: Override base path for Versions query
            get:
              summary: Retrieves all supported versions
              operationId: RetrieveVersions
              responses:
                '200':
                  description: Versions supported
                  content:
                    application/json:
                      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: datetime
                  description: date and time change will come into
                    effect in dateTime format with a required 
                    timezone
                partialLocationList:
                  type: array
                  items:
                    type: object
                    properties:
                      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="replacement-xml-schema-registration">
        <name>Replacement XML Schema Registration</name>
        <artwork><![CDATA[
   URI:  urn:ietf:params:xml:schema:lost3
   Registrant Contact:  IETF ECRIT Working Group, Brian Rosen
      (br@brianrosen.net).
   XML:
      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"&gt;
      <html xmlns="http://www.w3.org/1999/xhtml"&gt;
      <head&gt;
      <meta http-equiv="content-type"
          content="text/html;charset=iso-8859-1"/&gt;
      <title&gt;LoST Namespace</title&gt;
      </head&gt;
      <body&gt;
      <h1&gt;Namespace for LoST</h1&gt;
      <h2&gt;urn:ietf:params:xml:ns:lost3</h2&gt;
      <p&gt;See <a href="http://www.rfc-editor.org/rfc/rfc????.txt"&gt;
      RFC????</a&gt;.</p&gt;
      </body&gt;
      </html&gt;
      END
]]></artwork>
        <t>The XML Schema is found in <xref target="schema"/>.</t>
      </section>
      <section anchor="planned-change-extension-xml-schema-registration">
        <name>Planned Change Extension XML Schema Registration</name>
        <artwork><![CDATA[
   URI:  urn:ietf:params:xml:schema:lostPlannedChange1
   Registrant Contact:  IETF ECRIT Working Group, Brian Rosen
      (br@brianrosen.net).
   XML:

   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 </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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
Lt1U3/pfVhCBHvmIAAA=

-->

</rfc>
