From: Kurt Zeilenga Date: Sun, 27 Jan 2002 00:14:23 +0000 (+0000) Subject: Add language tag/range option I-D X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~11 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d28c4af9b309e6a943c800fcc9b6f8b5222e25e6;p=openldap Add language tag/range option I-D --- diff --git a/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt b/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt new file mode 100644 index 0000000000..92e738ee53 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt @@ -0,0 +1,731 @@ + + + + + + +INTERNET-DRAFT Editor: Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires: 13 May 2002 13 November 2001 +Obsoletes: RFC 2596 + + + Language Tags and Ranges in LDAP + draft-zeilenga-ldap-rfc2596-00.txt + + +Status of Memo + + This document is an Internet-Draft and is in full conformance with all + provisions of Section 10 of RFC2026. + + This document is intended to be, after appropriate review and + revision, submitted to the RFC Editor as a Standard Track document. + Distribution of this memo is unlimited. Technical discussion of this + document will take place on the IETF LDAP Extensions Working Group + (LDAPext) mailing list . Please send + editorial comments directly to the document editor + . + + 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 + . The list of + Internet-Draft Shadow Directories can be accessed at + . + + Copyright 2001, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + +Abstract + + This document details the use of Language Tags and Ranges in LDAP. + This document replaces RFC 2596. + + + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + +Conventions + + 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 BCP 14 [RFC2119]. + + +1. Background and Intended Use + + The Lightweight Directory Access Protocol (LDAP) [LDAPTS] provides a + means for clients to interrogate and modify information stored in a + distributed directory system. The information in the directory is + maintained as attributes of entries. Most of these attributes have + syntaxes which are human-readable strings, and it is desirable to be + able to indicate the natural language associated with attribute + values. + + This document describes how language tags and ranges [RFC3066] are + carried in LDAP and are to be interpreted by LDAP implementations. + All implementations MUST be prepared to accept language tags and + ranges in the LDAP protocol. + + This document replaces RFC 2596. Appendix A summaries changes made + since RFC 2596. + + The remainder of this section provides a summary of Langauge Tags, + Language Ranges, and Attribute Descriptions. + + +1.1. Language Tags + + Section 2 of BCP 47 [RFC3066] describes the language tag format which + is used in LDAP. Briefly, it is a string of ASCII alphabetic + characters and hyphens. Examples include "fr", "en-US" and "ja-JP". + Language tags are case insensitive. For example, the language tag + "en-us" is the same as "EN-US". + + Section 2 of this document details use of language tags in LDAP. + + +1.2. Language Ranges + + Section 2.5 of BCP 47 [RFC3066] describes the language ranges. + Language ranges are used to specify sets of language tags. + + A language range matches a language tag if it exactly equals the tag, + or if it exactly equals a prefix of the tag such that the first + character following the prefix is "-". The special tag "*" matches + + + +Zeilenga Language Tags and Ranges in LDAP [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + all tags. + + Due to restrictions upon option naming in LDAP, this document uses a + different language range syntax. However, the semantics of language + ranges in LDAP is consistent with BCP 47. + + Section 3 of this document details use of language ranges in LDAP. + + +1.3. Attribute Descriptions + + An attribute consists of a type, a list of "subtyping" (or "tag") + options for that type, and a set of one or more values. The type and + the options are combined into the AttributeDescription, defined in + section 4.1.5 of RFC 2251 [RFC2251]. AttributeDescription may also + contain options which are not part of the attribute, but indicate some + function such as the transfer encoding. + + In summary, an attribute with "subtyping" (or "tag") options is + treated as a subtype of the attribute without the options. If a + server does not support any of the options, the attribute is treated + as an unrecognized attribute. + + As language tags are intended to stored with the attribute, they are + to treated as "subtyping" (or "tag") options. Language range are used + only to match against language ranges and are not stored with the + attribute, they are not treated "subtyping" (or "tag") options but as + detailed in Section 3 of this document. + + +2. Use of Language Tags in LDAP + + This section describes how LDAP implementations MUST interpret + language tags in performing operations. + + Servers which support storing attributes with language tag in the DIT + SHOULD allow any attribute type it recognizes that has the Directory + String syntax to have language tag options associated with it. + Servers MAY allow language options to be associated with other + attributes types. + + Clients SHOULD NOT assume servers are capable of storing attributes + with language tags in the directory. + + Implementations MUST NOT otherwise interpret the structure of the tag + when comparing two tag, and MUST treat them as simply strings of + characters. Implementations MUST allow any arbitrary string which + conforms to the syntax defined in BCP 47 to be used as a language tag. + + + +Zeilenga Language Tags and Ranges in LDAP [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + +2.1. Language Tag Options + + A language tag option associates a natural language with values for + that attribute. An attribute description may contain multiple + language tag options. An entry may contain multiple attributes with + same attribute type but different language tag (and other) options. + + A language tag option conforms to the following ABNF [RFC2234]: + + language-tag-option = "lang-" Language-Tag + + where the Language-Tag production is as defined in BCP 47 [RFC3066]. + + A language tag option is a "subtyping" (or "tag") option [RFC2251bis]. + A language tag option has no effect on the tranfer encoding nor on the + syntax of the attribute values. + + Examples of valid AttributeDescription: + + givenName;lang-en-US + CN;lang-ja + SN;lang-de;lang-gem-PFL + O;lang-i-klingon;x-foobar + description;x-foobar + CN + + Notes: The last two have no language tag options. The x-foobar option + is fictious and used for example purposes. + + +2.2. Search Filter + + If langugage tag options are present in an AttributeDescription in an + assertion, then for each entry within scope, the values of each + attribute whose AttributeDescription consists of the same attribute + type or its subtypes and contains each of the presented (and possibly + other) options is to be matched. + + Thus for example a filter of an equality match of type + "name;lang-en-US" and assertion value "Billy Ray", against the + following directory entry + + dn: SN=Ray,DC=example,DC=com + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US: Billy Ray MATCHES + + + +Zeilenga Language Tags and Ranges in LDAP [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray DOES NOT MATCH (differing lang-) + CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-) + name: Billy Ray DOES NOT MATCH (no lang-) + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (wrong value) + + (Note that "CN" and "SN" are subtypes of "name".) + + Client implementors should however note that providing a language tag + option in a search filter AttributeDescription will often filter out + desirable values where the tag does not match exactly. For example, + the filter (name;lang-en=Billy Ray) does NOT match the attribute + "name;lang-en-US: Billy Ray". + + If the server does not support storing attributes with language tag + options in the DIT, then any assertion which includes a language tag + option will not match as it is an unrecognized attribute type. No + error would be returned because of this; a presence filter would + evaluate to FALSE and all other assertions to Undefined. + + If no options are specified in the assertion, then only the base + attribute type and the assertion value need match the value in the + directory. + + Thus for example a filter of an equality match of type "name" and + assertion value "Billy Ray", against the following directory entry + + dn: SN=Ray,DC=example,DC=net + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray MATCHES + CN;x-foobar: Billy Ray MATCHES + name: Billy Ray MATCHES + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (wrong value) + + +2.3. Requested Attributes in Search + + Clients can provide language tag options in AttributeDescription in + the requested attribute list in a search request. + + If language tag options are provided in an attribute description, then + only attributes in a directory entry whose attribute descriptions have + + + +Zeilenga Language Tags and Ranges in LDAP [Page 5] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + the same attribute type or its subtype and the provided language tags + options are to be returned. Thus if a client requests just the + attribute "name;lang-en", the server would return "name;lang-en" and + "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr". + + Clients can provide in the attribute list multiple + AttributeDescription which have the same base attribute type but + different options. For example a client could provide both + "name;lang-en" and "name;lang-fr", and this would permit an attribute + with either language tag option to be returned. Note there would be + no need to provide both "name" and "name;lang-en" since all subtypes + of name would match "name". + + If a server does not support storing attributes with language tag + options in the DIT, then any attribute descriptions in the list which + include language tag options are to be ignored, just as if they were + unknown attribute types. + + If a request is made specifying all attributes or an attribute is + requested without providing a language tag option, then all attribute + values regardless of their language tag option are returned. + + For example, if the client requests a "description" attribute, and a + matching entry contains the following attributes: + + objectclass: top + objectclass: organization + O: Software GmbH + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + postalAddress: Berlin 8001 Germany + postalAddress;lang-de: Berlin 8001 Deutschland + + The server would return: + + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + + +2.4. Compare + + Language tag options can be present in an AttributeDescription used in + a compare request AttributeValueAssertion. This is to be treated by + servers the same as the use of language tag options in a search filter + with an equality match, as described in section 2.2. If there is no + attribute in the entry with the same subtype and language tag options, + + + +Zeilenga Language Tags and Ranges in LDAP [Page 6] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + the noSuchAttributeType error will be returned. + + Thus for example a compare request of type "name" and assertion value + "Johann", against an entry containing the following attributes: + + objectclass: top + objectclass: person + givenName;lang-de-DE: Johann + CN: Johann Sibelius + SN: Sibelius + + would cause the server to return compareTrue. + + However, if the client issued a compare request of type "name;lang-de" + and assertion value "Johann" against the above entry, the request + would fail with the noSuchAttributeType error. + + If the server does not support storing attributes with language tag + options in the DIT, then any comparison which includes a language tag + option will always fail to locate an attribute, and + noSuchAttributeType will be returned. + + + 2.5. Add Operation + + Clients can provide language options in AttributeDescription in + attributes of a new entry to be created. + + A client can provide multiple attributes with the same attribute type + and value, so long as each attribute has a different set of language + tag options. + + For example, the following is a legal request. + + dn: CN=John Smith,DC=example,DC=com + objectclass: top + objectclass: person + objectclass: residentialPerson + name: John Smith + CN: John Smith + CN;lang-en: John Smith + SN: Smith + SN;lang-en;lang-en-US: Smith + streetAddress: 1 University Street + streetAddress;lang-en: 1 University Street + streetAddress;lang-fr: 1 rue Universite + houseIdentifier;lang-fr: 9e etage + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 7] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + If a server does not support storing language tag options with + attribute values in the DIT, then it MUST treat an + AttributeDescription with a language tag option as an unrecognized + attribute. If the server forbids the addition of unrecognized + attributes then it MUST fail the add request with an appropriate + result code. + + +2.6. Modify Operation + + A client can provide language tag options in an AttributeDescription + as part of a modification element in the modify operation. + + Attribute types and language tag options MUST match exactly against + values stored in the directory. For example, if the modification is a + "delete", then if the stored values to be deleted have language tag + options, then those language tag options MUST be provided in the + modify operation, and if the stored values to be deleted do not have + any language tag option, then no language tag option is to be + provided. + + If the server does not support storing language tag options with + attribute values in the DIT, then it MUST treat an + AttributeDescription with a language tag option as an unrecognized + attribute, and MUST fail the request with an appropriate result code. + + +3. Use of Language Ranges in LDAP + + Since the publication of RFC 2596, it has become apparent that there + is a need to provide a mechanism for a client to request attributes + based upon set of language tag options whose tags all begin with the + same sequence of subtags. + + AttributeDescriptions containing language range options are intended + to be used in attribute value assertions, search attribute lists, and + other places where the client desires to provide an attribute + description matching of a range of language tags associated with + attributes. + + A language range option conforms to the following ABNF [RFC 2234]: + + language-range-option = "lang-" [ Language-Tag "-" ] + + where the Language-Tag production is as defined in BCP 47 [RFC3066]. + + A language range option matches a langugage tag option if language + range option less the trailing "-" matches exactly the language tag or + + + +Zeilenga Language Tags and Ranges in LDAP [Page 8] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + if the language range option (including the trailing "-") matches a + prefix of the language tag option. Note that the language range + option "lang-" matches all language tag options. + + Examples of valid AttributeDescription containing language range + options: + + givenName;lang-en- + CN;lang- + O;lang-x-;x-foobar + + A language range option is not a "subtyping" (or "tag") option + [RFC2251bis]. Attributes cannot be stored with language range + options. Any attempt to add or update an attribute description with a + languague range option SHALL be treated as an undefined attribute type + and result in an error. + + A language range option has no effect on the tranfer encoding nor on + the syntax of the attribute values. + + Servers SHOULD support assertion of language ranges for any attribute + which they allow to stored with language tags. + + +3.1. Search Filter + + If a langugage range option is present in an AttributeDescription in + an assertion, then for each entry within scope, the values of each + attribute whose AttributeDescription consists of the same attribute + type or its subtypes and contains a language tag option matching the + language range option are to be returned. + + Thus for example a filter of an equality match of type "name;lang-en-" + and assertion value "Billy Ray", against the following directory entry + + dn: SN=Ray,DC=example,DC=com + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US: Billy Ray MATCHES + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray MATCHES + CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-) + name: Billy Ray DOES NOT MATCH (no lang-) + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (wrong value) + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 9] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + (Note that "CN" and "SN" are subtypes of "name".) + + If the server does not support storing attributes with language tag + options in the DIT, then any assertion which includes a language range + option will not match as it is an unrecognized attribute type. No + error would be returned because of this; a presence filter would + evaluate to FALSE and all other assertions to Undefined. + + +3.2. Requested Attributes in Search + + Clients can provide language range options in AttributeDescription in + the requested attribute list in a search request. + + If a language range option is provided in an attribute description, + then only attributes in a directory entry whose attribute descriptions + have the same attribute type or its subtype and a language tag option + matching the provided language range option are to be returned. Thus + if a client requests just the attribute "name;lang-en-", the server + would return "name;lang-en-US" and "CN;lang-en;lang-ja" but not "SN" + nor "name;lang-fr". + + Clients can provide in the attribute list multiple + AttributeDescription which have the same base attribute type but + different options. For example a client could provide both + "name;lang-en-" and "name;lang-fr-", and this would permit an + attribute whose type was name or subtype of name and with a language + tag option matching either language range option to be returned. + + If a server does not support storing attributes with language tag + options in the DIT, then any attribute descriptions in the list which + include language range options are to be ignored, just as if they were + unknown attribute types. + + +3.3. Compare + + Language range options can be present in an AttributeDescription used + in a compare request AttributeValueAssertion. This is to be treated + by servers the same as the use of language range options in a search + filter with an equality match, as described in section 3.1. If there + is no attribute in the entry with the same subtype and a matching + language tag option, the noSuchAttributeType error will be returned. + + Thus for example a compare request of type "name;lang-" and assertion + value "Johann", against the entry with the following attributes: + + objectclass: top + + + +Zeilenga Language Tags and Ranges in LDAP [Page 10] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + objectclass: person + givenName;lang-de-DE: Johann + CN: Johann Sibelius + SN: Sibelius + + will cause the server to return compareTrue. (Note that the language + range option "lang-" matches any language tag option.) + + However, if the client issued a compare request of type "name;lang-de" + and assertion value "Sibelius" against the above entry, the request + would fail with the noSuchAttributeType error. + + If the server does not support storing attributes with language tag + options in the DIT, then any comparison which includes a language + range option will always fail to locate an attribute, and + noSuchAttributeType will be returned. + + +4. Discovering Language Option Support + + A server SHOULD indicate that it supports storing attributes with + language tag options in the DIT by publishing OID.TDB as a value of + the supportedFeatures [FEATURES] attribute in the root DSE. + + A server SHOULD indicate that it supports language range matching of + attributes with language tag options stored in the DIT by publishing + OID.TDB as a value of the supportedFeatures [FEATURES] attribute in + the root DSE. + + A server MAY restrict use of language tag options to a subset of the + attribute types it recongizes. This document does not define a + mechanism for determining which subset of attribute types can be used + with language tag options. + + +5. Security Considerations + + There are no known security considerations for this document. See the + security considerations sections of [LDAPTS] for security + considerations of LDAP in general. + + +6. Acknowledgements + + This document is a revision of RFC 2596 by Mark Wahl and Tim Howes. + RFC 2596 was a product of the IETF ASID and LDAPEXT working groups. + + This document borrows from a number of IETF documents including BCP + + + +Zeilenga Language Tags and Ranges in LDAP [Page 11] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + 47. + + +7. References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2234] D. Crocker, P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", RFC 2234, November 1997. + + [RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory + Access Protocol (v3)", RFC 2251, December 1997. + + [RFC2251bis] Sermersheim, J., "Lightweight Directory Access Protocol + (v3)", draft-ietf-ldapbis-protocol-xx.txt (a work in + progress). + + [RFC3066] Alvestrand, H., "Tags for the Identification of Languages", + BCP 47 (also RFC 3066), January 2001. + + [LDAPTS] J. Hodges, R.L. Morgan, "Lightweight Directory Access + Protocol (v3): Technical Specification", + draft-ietf-ldapbis-ldapv3-ts-00.txt (a work in progress). + + [FEATURES] K. Zeilenga, "Feature Discovery in LDAP", + draft-zeilenga-ldap-features-xx.txt (a work in progress). + + +A. Differences from RFC 2596 + + This document adds support for language ranges, provides a mechansism + that a client can use to discover whether a server supports language + tags, and clarifies how attributes with multiple language tags are to + be treated. This document is a significant rewrite of RFC 2596. + + +B. Differences from X.500(1997) + + X.500(1997) defines a different mechanism, contexts, as the means of + representing language tags (codes). This section summarizes the major + differences in approach. + + a) An X.500 operation which has specified a language code on a value + matches a value in the directory without a language code. + b) LDAP references BCP 47 [RFC3066], which allows for IANA + registration of new tags as well as unregistered tags. + c) LDAP supports language ranges. + + + +Zeilenga Language Tags and Ranges in LDAP [Page 12] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-00.txt 13 November 2001 + + + d) LDAP does not allow language tags (and ranges) in distinguished + names. + e) X.500 describes subschema administration procedures to allow + language codes to be associated with particular attributes types. + + +Copyright 2001, The Internet Society. All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published and + distributed, in whole or in part, without restriction of any kind, + provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be followed, + or as required to translate it into languages other than English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIMS 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. + + + + + + + + + + + + + + + + + + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 13] +