<?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.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-11" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.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-11"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2024" month="November" day="19"/>
    <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.  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. The U-NAPTR responds with tyhe base URI of the interface and the client must substitue the result for the the string 'https://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="revalidateafter-in-response">
      <name>"revalidateAfter" 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"/>
      <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="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: https://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 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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
0V8kj7dGd/4PUIkHkouDAAA=

-->

</rfc>
