Network Working Group                                          L. Daigle
Internet-Draft                                                 A. Newton
Expires: November 25, 2005                                VeriSign, Inc.
                                                            May 24, 2005


                       IRIS Service Lookup System
                        draft-daigle-iris-slsreg

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on November 25, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   This document defines an IRIS "service lookup system" registry
   (slsreg) schema, and IRIS queries/responses to support looking up
   network service records (NSRs) based on a registered tag (or label).
   The NSR will include URIs for set types of network services.







Daigle & Newton         Expires November 25, 2005               [Page 1]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Document Terminology . . . . . . . . . . . . . . . . . . . . .  4
   3.  Service Lookup System (SLS) Registry . . . . . . . . . . . . .  5
     3.1   Data Model . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.2   Interaction Model  . . . . . . . . . . . . . . . . . . . .  5
     3.3   Allowed Service Names  . . . . . . . . . . . . . . . . . .  5
   4.  Schema Description . . . . . . . . . . . . . . . . . . . . . .  6
     4.1   IRIS Result Derivatives  . . . . . . . . . . . . . . . . .  6
       4.1.1   <tagRecord>  . . . . . . . . . . . . . . . . . . . . .  6
       4.1.2   <entityRefResult>  . . . . . . . . . . . . . . . . . .  7
     4.2   IRIS Query Derivatives . . . . . . . . . . . . . . . . . .  7
       4.2.1   <findServicesByTag> query  . . . . . . . . . . . . . .  7
       4.2.2   <findServiceByTag> query . . . . . . . . . . . . . . .  8
       4.2.3   Support for <iris:lookupEntity>  . . . . . . . . . . .  9
   5.  Formal XML Syntax  . . . . . . . . . . . . . . . . . . . . . . 10
   6.  slsreg and IRIS-lw . . . . . . . . . . . . . . . . . . . . . . 16
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 17
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 18
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 19
   A.  Complete Example Request and Response  . . . . . . . . . . . . 20
       Intellectual Property and Copyright Statements . . . . . . . . 22



























Daigle & Newton         Expires November 25, 2005               [Page 2]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


1.  Introduction

   This document defines an IRIS "service lookup system" registry
   (slsreg) using an XML Schema [4] derived from and using the IRIS [5]
   schema.  It also defines IRIS queries and and  responses to support
   looking up network service records (NSRs) based on a registered tag
   (or label).  The NSR will include URIs for set types of network
   services.

   A limited set of descriptive elements is associated with each tag,
   primarily for the purpose of enabling language and locale-based
   matching of the query and stored tag strings.  This schema may be
   extended to provide for more search-like capabilities based on the
   tags and more detailed associated data, as a service separate from
   the slsreg IRIS service.




































Daigle & Newton         Expires November 25, 2005               [Page 3]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


2.  Document Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC2119 [11].














































Daigle & Newton         Expires November 25, 2005               [Page 4]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


3.  Service Lookup System (SLS) Registry

   The IRIS-based SLS registry is designed to provide the very basis for
   allowing service lookup by registered tags.  Other services may be
   built out of the slsreg IRIS service (e.g., including more
   descriptive data, allowing more search-like queries), but they are
   beyond the scope of this document.

3.1  Data Model

   The descriptive data included in the registry definition is
   restricted to the tag and any registered descriptive data that might
   be associated with it, for the purposes of distinguishing similar
   tags.  This includes locale and language information, as well as the
   (business) category.

   While the rest of this document describes various parts of the data
   model used, the IRIS-based XML schema specified in Section 4 is
   definitive for acceptable descriptive information and result record
   formats.

3.2  Interaction Model

   The basic interaction is for the client to provide the tag to be
   looked up, along with any locale, language, or desired service
   constraints.  The slsreg server returns 0, one or more records that
   match the descriptive information.  Note that a true "look up" should
   only ever return 0 or 1 record.  However, in the case of a query with
   multilingual matching, records for tags of related variants may be
   returned.

   The two basic queries in slsreg allow the client to ask for all the
   services associated with a particular tag, or to request only the
   information pertaining to a particular type of service for the tag.

   As in all IRIS registries, individual records can be retrieved
   directly (after an initial lookup) using an entity lookup.

3.3  Allowed Service Names

   The initial set of acceptable service names is

   o  web

   o  email

   o  dns




Daigle & Newton         Expires November 25, 2005               [Page 5]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


4.  Schema Description

   IRIS requires the derivation of both query and result elements by a
   registry schemas.  These descriptions follow.

   References to XML elements with no namespace qualifier are from the
   schema defined in Section 5.  References to elements with the "iris"
   XML namespace qualifier are from the schema defined in IRIS [5].

4.1  IRIS Result Derivatives

4.1.1  <tagRecord>

   The <tagRecord> result type expresses the descriptive and operational
   data associated with a particular tag in a registry.  It must contain

      <tag> -- the unstructured, registered label associated with the
      services in this record.

      <recordID> -- a registry-specific unique identifier for this
      record

      <recordTTL> -- the "time to live" of the <tagRecord>, expressed as
      an integral number of seconds

      <locale> -- a Posix locale descriptor, consisting of a combination
      of the ISO 3166-1 two letter country code and a two letter
      language code.  This is expected to be the general locale of the
      registrant

      <language> -- a two letter language code, reflecting the language
      of the registered tag

      <category> -- business category of the entity described by the tag

      <tagService> groups (zero, one or more) -- URI and necessary
      information for connecting to a network service associated with
      the tag.  This consists of:

         <serviceName> -- the type of service (from a set list of
         services)

         <serviceURI> -- a URI of any type, specific enough to contact
         this service

         <serviceTTL> -- "time to live" for the service part of this
         record, expressed in an integral number of seconds.




Daigle & Newton         Expires November 25, 2005               [Page 6]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


4.1.2  <entityRefResult>

   The <entityRefResult> contains an IRIS entity reference that can be
   used to retrieve the tagRecord result in the server.  The client may
   request that results be returned as a set of <entityRefResult> so
   that a more compact reply is returned (though further dereferencing
   will be needed to get the tag record itself).

4.2  IRIS Query Derivatives

4.2.1  <findServicesByTag> query

   <findServicesByTag> is used to look up all services that are
   associated with a particular tag.  The lookup may be done based on a
   byte-by-byte comparison of the tag string in the query with the
   registered tags or by a language & locale based interpretation of the
   query string against registered tags.

   The <findServicesByTag&gt query returns a result set of <tagRecord>
   or of <entityRefResult> if the client requested entity references
   only.  These are defined in Section 4.1.






























Daigle & Newton         Expires November 25, 2005               [Page 7]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


   Query fragment:

   <findServicesByTag>
     <tag value="Bunyip Information Systems"/>
     <matchPart>
       <matchType value="byte"/>
     </matchPart>
   </findServicesByTag>


   Response fragment:

   <tagRecord>
     <tag value="Bunyip Information Systems"/>
     <recordID value="89765"/>
     <recordTTL value="604800"/>
     <locale value="US-en"/>
     <language value="EN"/>
     <category value="10.4369"/>
     <tagService>
       <serviceName value="email"/>
       <serviceURI value="info@bunyip.com"/>
       <serviceTTL value="86400"/>
     </tagService>
     <tagService>
       <serviceName value="web"/>
       <serviceURI value="http://www.bunyip.com"/>
       <serviceTTL value="86400"/>
     </tagService>
   </tagRecord>



                    Figure 1: Example: findServiceByTag


4.2.2  <findServiceByTag> query

   <findServiceByTag> is identical to <findServicesByTag>, except that
   it allows the client to specify a specific type of service for which
   information is sought.  Only information pertaining to that service
   should be returned.









Daigle & Newton         Expires November 25, 2005               [Page 8]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


   Query fragment

   <findServiceByTag>
     <tag value="Thinking Cat"/>
     <matchPart>
       <matchType value="byte"/>
     </matchPart>
     <serviceName value="web"/>
   </findServiceByTag>


   Response fragment

   <tagRecord<
     <tag value="Bunyip Information Systems"/<
     <recordID value="89765-2"/<
     <recordTTL value="604800"/<
     <locale value="US-en"/<
     <language value="EN"/<
     <category value="10.4369"/<
     <tagService<
       <serviceName value="web"/<
       <serviceURI value="http://www.bunyip.com"/<
       <serviceTTL value="86400"/<
     </tagService<
   </tagRecord<



                    Figure 2: Example: findServiceByTag


4.2.3  Support for <iris:lookupEntity>

   A <iris:lookupEntity> returns a <tagRecord>.
















Daigle & Newton         Expires November 25, 2005               [Page 9]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


5.  Formal XML Syntax

   This registry schema is specified in the XML Schema notation.  The
   formal syntax presented here is a complete schema representation
   suitable for automated validation of an XML instance when combined
   with the formal schema syntax of IRIS.



   <?xml version="1.0"?>
   <schema xmlns="http://www.w3.org/2001/XMLSchema"
     xmlns:slsreg="urn:ietf:params:xml:ns:slsreg1"
     xmlns:iris="urn:ietf:params:xml:ns:iris1"
     targetNamespace="urn:ietf:params:xml:ns:slsreg1"
     elementFormDefault="qualified" >

     <import namespace="urn:ietf:params:xml:ns:iris1" />

     <annotation>
       <documentation>
         "SLS -- service lookup system" registry derived from
          IRIS schema (slsreg)

         Basic structure of the (abstract) record data model:
           tag  (xword, keyword, cuddly name, common name)
           recordID  (unique identifier)
           recordTTL
           locale
           language
           category (typed)
           service  (0 or more)
             serviceName (typed; initial: dns, web, e-mail)
             serviceURI
             serviceTTL  (TTL for this service entry data)

       </documentation>
     </annotation>

     <!-- ========================================= -->
     <!--                                           -->
     <!-- Query Types                               -->
     <!--                                           -->
     <!-- ========================================= -->

     <!--                                           -->
     <!-- Find Services by Tag                      -->
     <!--                                           -->




Daigle & Newton         Expires November 25, 2005              [Page 10]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


     <complexType>
       name="findServicesByTagType"
       <complexContent>
         <extension
           base="iris:queryType">
           <sequence>
             <element
               name="tag"
               type="normalizedString"
             />
             <element
               name="matchPart"
               type="slsreg:byteOrInterpParameter" />
           </sequence>
         </extension>
       </complexContent>
     </complexType>

     <element
       name="findServicesByTag"
       type="slsreg:findServicesByTagType" />


     <!--                                           -->
     <!-- Find Service by Tag and Service Name      -->
     <!--                                           -->

     <complexType>
       name="findServiceByTagType"
       <complexContent>
         <extension
           base="iris:queryType">
           <sequence>
             <element
               name="tag"
               type="normalizedString"
             />
             <element
               name="matchPart"
               type="slsreg:byteOrLanguageMatchParameter" />
             <element
               ref="slsreg:serviceName" />
           </sequence>
         </extension>
       </complexContent>
     </complexType>

     <element



Daigle & Newton         Expires November 25, 2005              [Page 11]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


       name="findServiceByTag"
       type="slsreg:findServiceByTagType" />



     <!--                                           -->
     <!-- Additional Types                          -->
     <!--                                           -->

     <complexType
       name="byteOrLanguageMatchParameter">
       <choice>
         <group
           ref="slsreg:byteMatchGroup" />
         <group
           ref="slsreg:languageMatchGroup" />
       </choice>
     </complexType>

     <group
       name="languageMatchGroup">
       <sequence>
         <element
           name="matchType"
           value="language" />
         <element
           name="language"
           type="normalizedString"/>
         <element
           name="locale"
           type="normalizedString"/>
       </sequence>
     </group>

     <group
       name="byteMatchGroup">
       <sequence>
         <element
           name="matchType"
           value="byte" />
         <element
           minOccurs="0"
           maxOccurs="1"
           name="language"
           type="normalizedString"/>
         <element
           minOccurs="0"
           maxOccurs="1"



Daigle & Newton         Expires November 25, 2005              [Page 12]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


           name="locale"
           type="normalizedString"/>
       </sequence>
     </group>

     <!-- ========================================= -->
     <!--                                           -->
     <!-- Result Types                              -->
     <!--                                           -->
     <!-- ========================================= -->

     <!--                                           -->
     <!-- tagRecord                                 -->
     <!--                                           -->
     <!--
           tag  (xword, keyword, cuddly name, common name)
           recordID  (unique identifier)
           recordTTL
           locale
           language
           category (typed)
           service  (0 or more)
             serviceName (typed; initial: dns, web, e-mail)
             serviceURI
             serviceTTL  (TTL for this service entry data)
                                                    -->

     <complexType
       name="tagRecordType">
       <complexContent>
         <extension
           base="iris:resultType">
           <sequence>
             <element
               name="tag"
               type="token" />
             <element
               name="recordID"
               type="token" />
             <element
               name="recordTTL"
               type="token" />
             <element
               name="locale"
               type="token" />
             <element
               name="language"
               type="language" />



Daigle & Newton         Expires November 25, 2005              [Page 13]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


             <element
               name="category"
               type="token" />
             <element
               name="tagService"
               type="slsreg:networkServiceRecordType"
               minOccurs="0"
               maxOccurs="unbounded" />
               maxOccurs="unbounded" />
           </sequence>
         </extension>
       </complexContent>
     </complexType>


     <complexType
       name="networkServiceRecordType">
       <complexContent>
         <sequence>
           <element
             name="serviceName"
             type="token" />
           <element
             name="serviceURI"
             type="anyURI" />
           <element
             name="serviceTTL"
             type="token" />
         </sequence>
       </complexContent>
     </complexType>

     <element
       name="tagRecord"
       type="slsreg:tagRecordType"
       substitutionGroup="iris:result" />



     <!--             -->
     <!-- Error types -->
     <!--             -->

     <element name="searchTooWide"
       type="iris:codeType"
       substitutionGroup="iris:genericCode" />

     <!--              -->



Daigle & Newton         Expires November 25, 2005              [Page 14]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


     <!-- Global types -->
     <!--              -->



   </schema>



                                 Figure 3









































Daigle & Newton         Expires November 25, 2005              [Page 15]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


6.  slsreg and IRIS-lw

   The slsreg service may be supported using the lightweight UDP IRIS
   service, IRIS-lw ([7]).  In this case, only the <iris:lookupEntity>
   and searches with <entityRefsOnly> set to "true" are supported via
   IRIS-lw.













































Daigle & Newton         Expires November 25, 2005              [Page 16]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


7.  IANA Considerations

   The following URN will need to be registered with IANA according to
   the IANA considerations defined in IRIS [5]:

      urn:ietf:params:xml:ns:slsreg1













































Daigle & Newton         Expires November 25, 2005              [Page 17]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


8.  Security Considerations

   This document lays out no new considerations for security precautions
   beyond that specified in IRIS [5].

9.  References

   [1]   World Wide Web Consortium, "Extensible Markup Language (XML)
         1.0", W3C XML, February 1998,
         <http://www.w3.org/TR/1998/REC-xml-19980210>.

   [2]   World Wide Web Consortium, "Namespaces in XML", W3C XML
         Namespaces, January 1999,
         <http://www.w3.org/TR/1999/REC-xml-names-19990114>.

   [3]   World Wide Web Consortium, "XML Schema Part 2: Datatypes",
         W3C XML Schema, October 2000,
         <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/>.

   [4]   World Wide Web Consortium, "XML Schema Part 1: Structures",
         W3C XML Schema, October 2000,
         <http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/>.

   [5]   Newton, A., "Internet Registry Information Service",
         draft-ietf-crisp-iris-core-01 (work in progress),
         November 2002.

   [6]   Daigle, L. and A. Newton, "Domain-based Application Service
         Location Using SRV RRs and the Dynamic Delegation Discovery
         Service (DDDS)", draft-daigle-napstr-01 (work in progress),
         November 2002.

   [7]   Newton, A. and L. Daigle, "Lightweight Internet Registry
         Information Service", draft-newtion-iris-lightweight-00 (work
         in progress), February 2003.

   [8]   Reynolds, J. and J. Postel, "ASSIGNED NUMBERS", RFC 1700,
         STD 2, October 1994.

   [9]   Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
         Considerations Section in RFCs", RFC 2434, BCP 26,
         October 1998.

   [10]  Newton, A., "Cross Registry Internet Service Protocol (CRISP)
         Requirements", draft-ietf-crisp-requirements-00 (work in
         progress), August 2002.

   [11]  Bradner, S., "Key words for use in RFCs to Indicate Requirement



Daigle & Newton         Expires November 25, 2005              [Page 18]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


         Levels", RFC 2119, BCP 14, March 1997.

   [12]  World Wide Web Consortium, "XML Key Management Specification
         (XKMS)", W3C XKMS, March 2001,
         <http://www.w3.org/TR/2001/NOTE-xkms-20010330/>.


Authors' Addresses

   Leslie L. Daigle
   VeriSign, Inc.
   21355 Ridgetop Circle
   Sterling, VA  20166
   USA

   Phone: +1 703 948 3385
   Email: leslie@verisignlabs.com, leslie@thinkingcat.com
   URI:   http://www.verisignlabs.com/


   Andrew Newton
   VeriSign, Inc.
   21355 Ridgetop Circle
   Sterling, VA  20166
   USA

   Phone: +1 703 948 3382
   Email: anewton@verisignlabs.com
   URI:   http://www.verisignlabs.com/






















Daigle & Newton         Expires November 25, 2005              [Page 19]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


Appendix A.  Complete Example Request and Response

   The following is a complete example of an IRIS request and response
   using this registry schema.

   This XML instance is a request to search for an individual by a
   portion of the individual's ID.

   <?xml version="1.0"?>
   <request xmlns="urn:ietf:params:xml:ns:iris1"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="urn:ietf:params:xml:ns:iris1 iris.xsd" >

     <searchSet>
       <slsreg:findServicesByTag
         xmlns:slsreg="urn:ietf:params:xml:ns:slsreg1"
         xsi:schemaLocation="urn:ietf:params:xml:ns:slsreg1 slsreg.xsd" >
         <tag value="Bunyip Information Systems" >
         <matchPart>
           <matchType value="byte"/>
         </matchPart>
       </findServicesByTag>
     </searchSet>
   </request>


                       Figure 4: slsreg-request.xml
























Daigle & Newton         Expires November 25, 2005              [Page 20]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


   This XML instance is a response from Figure 4.


   <?xml version="1.0"?>
   <response xmlns="urn:ietf:params:xml:ns:iris1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="urn:ietf:params:xml:ns:iris1 iris.xsd" >

     <resultSet>
       <answer>
         <slsreg:tagRecord
           xmlns="urn:ietf:params:xml:ns:slsreg1"
           xmlns:credreg="urn:ietf:params:xml:ns:slsreg1"
           xsi:schemaLocation="urn:ietf:params:xml:ns:slsreg1 slsreg.xsd" >
           <tag value="Bunyip Information Systems"/>
           <recordID value="89765"/>
           <recordTTL value="604800"/>
           <locale value="US-en"/>
           <language value="EN"/>
           <category value="10.4369"/>
           <tagService>
             <serviceName value="email"/>
             <serviceURI value="info@bunyip.com"/>
             <serviceTTL value="86400"/>
           </tagService>
           <tagService>
             <serviceName value="web"/>
             <serviceURI value="http://www.bunyip.com"/>
             <serviceTTL value="86400"/>
           </tagService>
         </tagRecord>
       </answer>
     </resultSet>
   </response>


                       Figure 5: slsreg-response.xml














Daigle & Newton         Expires November 25, 2005              [Page 21]


Internet-Draft          draft-daigle-iris-sls-00                May 2005


Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.




Daigle & Newton         Expires November 25, 2005              [Page 22]