Network Working Group Michael Mealling Request for Comments: DRAFT Network Solutions, Inc. March 13, 1998 A MIME Directory Profile for RWhois 1.5 Schema 1. Status of this Memo This document is an Internet-Draft. 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.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). 2. Abstract This document defines two MIME directory profiles [1] for holding a RWhois 1.5 [2] schema. It is intended for communication with the Internet schema listing service [3]. One profile defines an attribute and the other defines a class. 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 RFC 2119 [4]. 3. Overview RWhois 1.5 has the concepts of attributes and classes. A schema in the sense used by Internet schema listing service is analogous to an RWhois class. A class definition in RWhois is simply the listing of attributes that are well understood for that class. There is a desire in many directory services to encourage attribute definition re-use. Therefore, this schema description service will separate the attribute descriptions from the class descriptions. The MIME-DIR specification describes how relationships between objects included in a multipart/related MIME type can be specified. This is used by the class profile to include by reference all of the attribute definitions included within one multipart/related MIME object. Mealling [Page 1] draft-ietf-schema-rwhois-00.txt March 1998 Due to the requirements of the schema listing service, there must be one 'top' profile, which is called 'schema-rwhois-0'. Since the 'top' of the RWhois schema definition is the class, the class definition's profile name will be 'schema-rwhois-0'. The attribute definition will use the profile name 'rwhois-attribute-0'. 4. Multipart/related header values The schema listing service's infrastructure depends on an easily parsed and easily navigated structure of filenames in a directory. In some cases the definition of a schema is contained in one MIME-DIR profile. This makes for a simple correlation to one file and also makes it easy to find that file's profile and schema name. In the case of RWhois' class and attribute objects this is not so simple as the actual schema name would be in the multipart/related's start object. Luckily the multipart/related standard gives us the "Start-Info" parameter. For the purposes of the schema-listing application's use of RWhois schema this parameter is used to denote the profile of the start object. All other attributes have standard values. This leaves us with the following specification: 'boundary' has its standard RFC2046 specified value 'start' is the CID of the 'schema-rwhois-0' or class object 'type' MUST be 'text/directory' 'start-info' MUST be 'schema-rwhois-0' Mealling [Page 2] draft-ietf-schema-rwhois-00.txt March 1998 An example: To: ietf-schema-review@TBD Subject: schema unit listing request MIME-Version: 1.0 Message-Id: Content-Type: multipart/related; boundary="boundary"; start=3@foo.com; type="text/directory"; start-info="schema-rwhois-0" Content-ID: top@foo.com --boundary Content-Type: text/directory; profile="schema-rwhois-0" Content-Transfer-Encoding: Quoted-Printable Content-ID: 3@foo.com (class description elements and values as specified in Section 5, which includes a reference to an attribute whose CID is 4@foo.com) --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 4@foo.com (an RWhois attribute definition) --boundary 5. schema-rwhois-0 definition The schema-rwhois-0 definition is extremely straightforward. It is a combination of the '-schema' and '-class' directives defined in RFC2167. The class directive defines the description and version of the class. The schema directive defines the attributes that are valid for that class but also lists the description of the values themselves. For ease of parsing, this class definition will include the attribute name. Therefore, the attribute definition object will not have to be parsed in order to allow for the most basic function of showing the user the attribute and plain text value. Therefore, the well understood attributes for the schema-rwhois-0 profile are as follows: 'name' contains the class' name 'description' contains a plain text description of the class 'version' contains the version as specified by RFC2167 'attribute' contains the attribute name and the CID of its definition Mealling [Page 3] draft-ietf-schema-rwhois-00.txt March 1998 The syntax of the 'attribute' value is as follows: attribute-value = name " " CID name=1*id-char CID = Content-ID as defined as used in RFC1873 [5] id-char = alpha / digit / "_" / "-" alpha = "a".."z" / "A".."Z" digit = "0".."9" Example: Content-Type: text/directory; profile="schema-rwhois-0" Content-Transfer-Encoding: Quoted-Printable Content-ID: 3@foo.com Name: Referral Description: Required class for specifying a referral Version: 19961101 Attribute: Referred-Auth-Area 4@foo.com Attribute: Referral 5@foo.com This example in its entirety would be included as the start object of a multipart/related object that included the 4@foo.com and 5@foo.com objects. The MIME-DIR profile registration template is included in Section 8. 6. rwhois-attribute-0 definition The rwhois attribute definition profile is also fairly straightforward since it follows the '-schema' directive very closely. The RFC2167 defined attribute properties are: Attribute This is the name of the attribute. Description This is a natural language description of the attribute. Type This is a parameter that broadly indicates the use of the attribute to the protocol. There are three standard types: TEXT, ID, and SEE-ALSO. Format This is an interpretable string that describes the acceptance format of the value. Indexed This is a true or false flag indicating that this attribute should be indexed (and therefore able to be searched). Required This is a true or false flag indicating that this attribute must have a value in an instance of the class. Mealling [Page 4] draft-ietf-schema-rwhois-00.txt March 1998 Multi-Line This is a true or false flag indicating that this attribute may have multiple instances in a class, but all of the instances are to be considered as multiple lines of the same attribute instance. This allows normal line terminators to terminate values. Repeatable This is a true or false flag indicating that there may be multiple instances of this attribute in a class and each instance is to be interpreted as a separate instance (in contrast to Multi-Line). Primary This is a true or false flag that indicates that this attribute is a primary key. Hierarchical This is a true or false flag that indicates that this attribute is lexically hierarchical. Private This is a true or false flag that indicates whether or not this attribute is private (that is, publicly not viewable). Each of these properties corresponds exactly to an attribute in the 'rwhois-attribute-0' profile except that 'rwhoisAttrDef' is prepended to the attribute name. The values follow the ABNF specified in RFC2167. Example: Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 4@foo.com rwhoisAttrDefAttribute: Referral rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Referral to an RWhois server rwhoisAttrDefIndexed: OFF rwhoisAttrDefRequired: ON rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: ON rwhoisAttrDefHierarchical: OFF rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: Text rwhoisAttrDefPrimary: OFF Mealling [Page 5] draft-ietf-schema-rwhois-00.txt March 1998 7. Full example This is a full example of a schema object that is intended to be registered with the schema listing service. It represents the Base class which every RWhois class must include. To: ietf-schema-review@TBD Subject: schema unit listing request MIME-Version: 1.0 Message-Id: Content-Type: multipart/related; boundary="boundary"; start=3@foo.com; type="text/directory"; start-info="schema-rwhois-0" Content-ID: top@foo.com --boundary Content-Type: text/directory; profile="schema-rwhois-0" Content-Transfer-Encoding: Quoted-Printable Content-ID: 3@foo.com Name: Base Description: The RWhois 1.5 Base class from which all classes inherit Version: 19961101 Attribute: Class-Name 4@foo.com Attribute: Auth-Area 5@foo.com Attribute: ID 6@foo.com Attribute: Updated 7@foo.com Attribute: Guardian 8@foo.com Attribute: Private 9@foo.com Attribute: TTL 10@foo.com --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 4@foo.com rwhoisAttrDefAttribute: Class-Name rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Type of the object. rwhoisAttrDefIndexed: OFF rwhoisAttrDefRequired: ON rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: OFF rwhoisAttrDefHierarchical: OFF rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: Text rwhoisAttrDefPrimary: OFF --boundary Mealling [Page 6] draft-ietf-schema-rwhois-00.txt March 1998 Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 5@foo.com rwhoisAttrDefAttribute: Auth-Area rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Authority area to which the object belongs rwhoisAttrDefIndexed: OFF rwhoisAttrDefRequired: ON rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: OFF rwhoisAttrDefHierarchical: ON rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: Text rwhoisAttrDefPrimary: OFF --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 6@foo.com rwhoisAttrDefAttribute: ID rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Globally unique object identifier rwhoisAttrDefIndexed: ON rwhoisAttrDefRequired: OFF rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: OFF rwhoisAttrDefHierarchical: ON rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: Text rwhoisAttrDefPrimary: OFF --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 7@foo.com rwhoisAttrDefAttribute: Updated rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Last modification time/serial number rwhoisAttrDefIndexed: OFF rwhoisAttrDefRequired: OFF rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: OFF rwhoisAttrDefHierarchical: OFF rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: Text rwhoisAttrDefPrimary: OFF --boundary Mealling [Page 7] draft-ietf-schema-rwhois-00.txt March 1998 Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 8@foo.com rwhoisAttrDefAttribute: Guardian rwhoisAttrDefFormat: none rwhoisAttrDefDescription: Guardian object rwhoisAttrDefIndexed: OFF rwhoisAttrDefRequired: OFF rwhoisAttrDefMulti-line: OFF rwhoisAttrDefRepeatable: ON rwhoisAttrDefHierarchical: OFF rwhoisAttrDefPrivate: OFF rwhoisAttrDefType: ID rwhoisAttrDefPrimary: OFF --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 9@foo.com rwhoisAttrDefAttribute:Private rwhoisAttrDefFormat:none rwhoisAttrDefDescription:object is private rwhoisAttrDefIndexed:OFF rwhoisAttrDefRequired:OFF rwhoisAttrDefMulti-line:OFF rwhoisAttrDefRepeatable:OFF rwhoisAttrDefHierarchical:OFF rwhoisAttrDefPrivate:ON rwhoisAttrDefType:Text rwhoisAttrDefPrimary:OFF --boundary Content-Type: text/directory; profile="rwhois-attribute-0>" Content-Transfer-Encoding: Quoted-Printable Content-ID: 10@foo.com rwhoisAttrDefAttribute:TTL rwhoisAttrDefFormat:none rwhoisAttrDefDescription:Time to live rwhoisAttrDefIndexed:OFF rwhoisAttrDefRequired:OFF rwhoisAttrDefMulti-line:OFF rwhoisAttrDefRepeatable:OFF rwhoisAttrDefHierarchical:OFF rwhoisAttrDefPrivate:OFF rwhoisAttrDefType:Text rwhoisAttrDefPrimary:OFF --boundary Mealling [Page 8] draft-ietf-schema-rwhois-00.txt March 1998 8. Registration Templates 8.1 'schema-rwhois-0' profile registration template To: ietf-mime-direct@imc.org Subject: Registration of text/directory profile "schema-rwhois-0" Profile name: schema-rwhois-0 Profile purpose: To represent the RWhois 1.5 class definition as defined in RFC2167. Profile types: name, description, version, attribute Profile special notes: Neither the "BEGIN" and "END" types nor type grouping are used in contents of this profile. The only type which is allowed to be multi-valued is 'attribute'. The SOURCE type is optional, and if values are present it is suggested that they be a rwhois URI as RWhois schema definitions from other sources have not been investigated. Intended usage: COMMON 8.2 'schema-rwhois-0' 'rwhoisAttrDefAttribute' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefAttribute Type name: rwhoisAttrDefAttribute Type purpose: This is the name of the attribute. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.3 'schema-rwhois-0' 'rwhoisAttrDefDescription' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefDescription Type name: rwhoisAttrDefDescription Type purpose: This is a natural language description of the attribute. Mealling [Page 9] draft-ietf-schema-rwhois-00.txt March 1998 Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.4 'schema-rwhois-0' 'rwhoisAttrDefType' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefType Type name: rwhoisAttrDefType Type purpose: This is a parameter that broadly indicates the use of the attribute to the protocol. There are three standard types: TEXT, ID, and SEE-ALSO. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.5 'schema-rwhois-0' 'rwhoisAttrDefFormat' type registration template To: ietf-mime-direct@imc.org Subject: Registration of text/directory MIME type rwhoisAttrDefFormat Type name: rwhoisAttrDefFormat Type purpose: This is an interpretable string that describes the acceptance format of the value. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.6 'schema-rwhois-0' 'rwhoisAttrDefIndexed' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefIndexed Type name: rwhoisAttrDefIndexed Mealling [Page 10] draft-ietf-schema-rwhois-00.txt March 1998 Type purpose: This is a true or false flag indicating that this attribute should be indexed (and therefore able to be searched). Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.7 'schema-rwhois-0' 'rwhoisAttrDefRequired' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefRequired Type name: rwhoisAttrDefRequired Type purpose: This is a true or false flag indicating that this attribute must have a value in an instance of the class. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.8 'schema-rwhois-0' 'rwhoisAttrDefMulti-Line' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefMulti-Line Type name: rwhoisAttrDefMulti-Line Type purpose: This is a true or false flag indicating that this attribute may have multiple instances in a class, but all of the instances are to be considered as multiple lines of the same attribute instance. This allows normal line terminators to terminate values. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON Mealling [Page 11] draft-ietf-schema-rwhois-00.txt March 1998 8.9 'schema-rwhois-0' 'rwhoisAttrDefRepeatable' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefRepeatable Type name: rwhoisAttrDefRepeatable Type purpose: This is a true or false flag indicating that there may be multiple instances of this attribute in a class and each instance is to be interpreted as a separate instance (in contrast to Multi-Line). Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.10 'schema-rwhois-0' 'rwhoisAttrDefPrimary' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory MIME type rwhoisAttrDefPrimary Type name: rwhoisAttrDefPrimary Type purpose: This is a true or false flag that indicates that this attribute is a primary key. Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.11 'schema-rwhois-0' 'rwhoisAttrDefHierarchical' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory type rwhoisAttrDefHierarchical Type name: rwhoisAttrDefHierarchical Type purpose: This is a true or false flag that indicates that this attribute is lexically hierarchical. Type encoding: 8bit Type valuetype: text Mealling [Page 12] draft-ietf-schema-rwhois-00.txt March 1998 Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 8.12 'schema-rwhois-0' 'rwhoisAttrDefPrivate' type template To: ietf-mime-direct@imc.org Subject: Registration of text/directory MIME type rwhoisAttrDefPrivate Type name: rwhoisAttrDefPrivate Type purpose: This is a true or false flag that indicates whether or not this attribute is private (that is, publicly not viewable). Type encoding: 8bit Type valuetype: text Type special notes: This value must follow the rules as specified in RFC2167. Intended usage: COMMON 9. Author's Contact Michael Mealling Network Solutions 505 Huntmar Park Drive Herndon, VA 22070 voice: (703) 742-0400 fax: (703) 742-9552 email: michaelm@netsol.com URL: http://www.netsol.com/ 10. References: [1] Howes, Tim, Mark Smith, Frank Dawson. "A MIME Content-Type for Directory Information", 07/24/1997, INTERNET DRAFT . [2] Williamson, S., M. Kosters, et al. "Referral Whois (RWhois) Protocol V1.5", 06/01/1997, RFC2167. [3] Apple, C. "Directory Schema Listing Requirements", 08/28/1997, INTERNET DRAFT . [4] Bradner, S. "Key words for use in RFCs to Indicate Requirement Levels", 3/01/1997, RFC2119. [5] Levinson, E., J. Clark, "Message/External-Body Content-ID Access Type", RFC1872, 12/01/95. Mealling [Page 13]