Home | History | Annotate | Line # | Download | only in rfc
      1 
      2 
      3 
      4 
      5 
      6 
      7 Network Working Group                                   K. Zeilenga, Ed.
      8 Request for Comments: 3866                           OpenLDAP Foundation
      9 Obsoletes: 2596                                                July 2004
     10 Category: Standards Track
     11 
     12 
     13                     Language Tags and Ranges in the
     14               Lightweight Directory Access Protocol (LDAP)
     15 
     16 Status of this Memo
     17 
     18    This document specifies an Internet standards track protocol for the
     19    Internet community, and requests discussion and suggestions for
     20    improvements.  Please refer to the current edition of the "Internet
     21    Official Protocol Standards" (STD 1) for the standardization state
     22    and status of this protocol.  Distribution of this memo is unlimited.
     23 
     24 Copyright Notice
     25 
     26    Copyright (C) The Internet Society (2004).
     27 
     28 Abstract
     29 
     30    It is often desirable to be able to indicate the natural language
     31    associated with values held in a directory and to be able to query
     32    the directory for values which fulfill the user's language needs.
     33    This document details the use of Language Tags and Ranges in the
     34    Lightweight Directory Access Protocol (LDAP).
     35 
     36 1.  Background and Intended Use
     37 
     38    The Lightweight Directory Access Protocol (LDAP) [RFC3377] provides a
     39    means for clients to interrogate and modify information stored in a
     40    distributed directory system.  The information in the directory is
     41    maintained as attributes of entries.  Most of these attributes have
     42    syntaxes which are human-readable strings, and it is desirable to be
     43    able to indicate the natural language associated with attribute
     44    values.
     45 
     46    This document describes how language tags and ranges [RFC3066] are
     47    carried in LDAP and are to be interpreted by LDAP implementations.
     48    All LDAP implementations MUST be prepared to accept language tags and
     49    ranges.
     50 
     51    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
     52    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
     53    document are to be interpreted as described in BCP 14 [RFC2119].
     54 
     55 
     56 
     57 
     58 Zeilenga                    Standards Track                     [Page 1]
     59 
     61 RFC 3866            Language Tags and Ranges in LDAP           July 2004
     62 
     63 
     64    This document replaces RFC 2596.  Appendix A summaries changes made
     65    since RFC 2596.
     66 
     67    Appendix B discusses differences from X.500(1997) "contexts"
     68    mechanism.
     69 
     70    Appendix A and B are provided for informational purposes only.
     71 
     72    The remainder of this section provides a summary of Language Tags,
     73    Language Ranges, and Attribute Descriptions.
     74 
     75 1.1.  Language Tags
     76 
     77    Section 2 of BCP 47 [RFC3066] describes the language tag format which
     78    is used in LDAP.  Briefly, it is a string of [ASCII] letters and
     79    hyphens.  Examples include "fr", "en-US" and "ja-JP".  Language tags
     80    are case insensitive.  That is, the language tag "en-us" is the same
     81    as "EN-US".
     82 
     83    Section 2 of this document details use of language tags in LDAP.
     84 
     85 1.2.  Language Ranges
     86 
     87    Section 2.5 of BCP 47 [RFC3066] describes the language ranges.
     88    Language ranges are used to specify sets of language tags.
     89 
     90    A language range matches a language tag if it is exactly equal to the
     91    tag, or if it is exactly equal to a prefix of the tag such that the
     92    first character following the prefix is "-".  That is, the language
     93    range "de" matches the language tags "de" and "de-CH" but not "den".
     94    The special language range "*" matches all language tags.
     95 
     96    Due to attribute description option naming restrictions in LDAP, this
     97    document defines a different language range syntax.  However, the
     98    semantics of language ranges in LDAP are consistent with BCP 47.
     99 
    100    Section 3 of this document details use of language ranges in LDAP.
    101 
    102 1.3.  Attribute Descriptions
    103 
    104    This section provides an overview of attribute descriptions in LDAP.
    105    LDAP attributes and attribute descriptions are defined in [RFC2251].
    106 
    107    An attribute consists of a type, a set of zero or more associated
    108    tagging options, and a set of one or more values.  The type and the
    109    options are combined into the AttributeDescription.
    110 
    111 
    112 
    113 
    114 
    115 Zeilenga                    Standards Track                     [Page 2]
    116 
    118 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    119 
    120 
    121    AttributeDescriptions can also contain options which are not part of
    122    the attribute, but indicate some other function (such as range
    123    assertion or transfer encoding).
    124 
    125    An AttributeDescription with one or more tagging options is a direct
    126    subtype of each AttributeDescription of the same type with all but
    127    one of the tagging options.  If the AttributeDescription's type is a
    128    direct subtype of some other type, then the AttributeDescription is
    129    also a direct subtype of the AttributeDescription which consists of
    130    the supertype and all of the tagging options.  That is,
    131    "CN;x-bar;x-foo" is a direct subtype of "CN;x-bar", "CN;x-foo", and
    132    "name;x-bar;x-foo".  Note that "CN" is a subtype of "name".
    133 
    134 2.  Use of Language Tags in LDAP
    135 
    136    This section describes how LDAP implementations MUST interpret
    137    language tags in performing operations.
    138 
    139    Servers which support storing attributes with language tag options in
    140    the Directory Information Tree (DIT) SHOULD allow any attribute type
    141    it recognizes that has the Directory String, IA5 String, or other
    142    textual string syntaxes to have language tag options associated with
    143    it.  Servers MAY allow language options to be associated with other
    144    attributes types.
    145 
    146    Clients SHOULD NOT assume servers are capable of storing attributes
    147    with language tags in the directory.
    148 
    149    Implementations MUST NOT otherwise interpret the structure of the tag
    150    when comparing two tags, and MUST treat them simply as strings of
    151    characters.  Implementations MUST allow any arbitrary string which
    152    conforms to the syntax defined in BCP 47 [RFC3066] to be used as a
    153    language tag.
    154 
    155 2.1.  Language Tag Options
    156 
    157    A language tag option associates a natural language with values of an
    158    attribute.  An attribute description may contain multiple language
    159    tag options.  An entry may contain multiple attributes with same
    160    attribute type but different combinations of language tag (and other)
    161    options.
    162 
    163    A language tag option conforms to the following ABNF [RFC2234]:
    164 
    165       language-tag-option = "lang-" Language-Tag
    166 
    167 
    168 
    169 
    170 
    171 
    172 Zeilenga                    Standards Track                     [Page 3]
    173 
    175 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    176 
    177 
    178    where the Language-Tag production is as defined in BCP 47 [RFC3066].
    179    This production and those it imports from [RFC2234] are provided here
    180    for convenience:
    181 
    182       Language-Tag = Primary-subtag *( "-" Subtag )
    183 
    184       Primary-subtag = 1*8ALPHA
    185 
    186       Subtag = 1*8(ALPHA / DIGIT)
    187 
    188       ALPHA = %x41-5A / %x61-7A   ; A-Z / a-z
    189 
    190       DIGIT = %x30-39             ; 0-9
    191 
    192    A language tag option is a tagging option.  A language tag option has
    193    no effect on the syntax of the attribute's values nor their transfer
    194    encoding.
    195 
    196    Examples of valid AttributeDescription:
    197 
    198       givenName;lang-en-US
    199       CN;lang-ja
    200       SN;lang-de;lang-gem-PFL
    201       O;lang-i-klingon;x-foobar
    202       description;x-foobar
    203       CN
    204 
    205    Notes: The last two have no language tag options.  The x-foobar
    206           option is fictious and used for example purposes.
    207 
    208 2.2.  Search Filter
    209 
    210    If language tag options are present in an AttributeDescription in an
    211    assertion, then for each entry within scope, the values of each
    212    attribute whose AttributeDescription consists of the same attribute
    213    type or its subtypes and contains each of the presented (and possibly
    214    other) options is to be matched.
    215 
    216    Thus, for example, a filter of an equality match of type
    217    "name;lang-en-US" and assertion value "Billy Ray", against the
    218    following directory entry:
    219 
    220    dn: SN=Ray,DC=example,DC=com
    221    objectClass: person                 DOES NOT MATCH (wrong type)
    222    objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    223    name;lang-en-US: Billy Ray          MATCHES
    224    name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    225    CN;lang-en-US: Billy Ray            MATCHES
    226 
    227 
    228 
    229 Zeilenga                    Standards Track                     [Page 4]
    230 
    232 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    233 
    234 
    235    CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    236    CN;lang-en;x-foobar: Billy Ray      DOES NOT MATCH (differing lang-)
    237    CN;x-foobar: Billy Ray              DOES NOT MATCH (no lang-)
    238    name: Billy Ray                     DOES NOT MATCH (no lang-)
    239    SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    240    SN: Ray                             DOES NOT MATCH (no lang-,
    241                                            wrong value)
    242 
    243    Note that "CN" and "SN" are subtypes of "name".
    244 
    245    It is noted that providing a language tag option in a search filter
    246    AttributeDescription will filter out desirable values where the tag
    247    does not match exactly.  For example, the filter (name;lang-en=Billy
    248    Ray) does NOT match the attribute "name;lang-en-US:  Billy Ray".
    249 
    250    If the server does not support storing attributes with language tag
    251    options in the DIT, then any assertion which includes a language tag
    252    option will not match as such it is an unrecognized attribute type.
    253    No error would be returned because of this; a presence assertion
    254    would evaluate to FALSE and all other assertions to Undefined.
    255 
    256    If no options are specified in the assertion, then only the base
    257    attribute type and the assertion value need match the value in the
    258    directory.
    259 
    260    Thus, for example, a filter of an equality match of type "name" and
    261    assertion value "Billy Ray", against the following directory entry:
    262 
    263       dn: SN=Ray,DC=example,DC=com
    264       objectClass: person                 DOES NOT MATCH (wrong type)
    265       objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    266       name;lang-en-US: Billy Ray          MATCHES
    267       name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    268       CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    269       CN;lang-en;x-foobar: Billy Ray      MATCHES
    270       CN;x-foobar: Billy Ray              MATCHES
    271       name: Billy Ray                     MATCHES
    272       SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    273       SN: Ray                             DOES NOT MATCH (wrong value)
    274 
    275 2.3.  Requested Attributes in Search
    276 
    277    Clients can provide language tag options in each AttributeDescription
    278    in the requested attribute list in a search request.
    279 
    280    If language tag options are provided in an attribute description,
    281    then only attributes in a directory entry whose attribute
    282    descriptions have the same attribute type or its subtype and contains
    283 
    284 
    285 
    286 Zeilenga                    Standards Track                     [Page 5]
    287 
    289 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    290 
    291 
    292    each of the presented (and possibly other) language tag options are
    293    to be returned.  Thus if a client requests just the attribute
    294    "name;lang-en", the server would return "name;lang-en" and
    295    "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr".
    296 
    297    Clients can provide in the attribute list multiple
    298    AttributeDescriptions which have the same base attribute type but
    299    different options.  For example, a client could provide both
    300    "name;lang-en" and "name;lang-fr", and this would permit an attribute
    301    with either language tag option to be returned.  Note there would be
    302    no need to provide both "name" and "name;lang-en" since all subtypes
    303    of name would match "name".
    304 
    305    If a server does not support storing attributes with language tag
    306    options in the DIT, then any attribute descriptions in the list which
    307    include language tag options are to be ignored, just as if they were
    308    unknown attribute types.
    309 
    310    If a request is made specifying all attributes or an attribute is
    311    requested without providing a language tag option, then all attribute
    312    values regardless of their language tag option are returned.
    313 
    314    For example, if the client requests a "description" attribute, and a
    315    matching entry contains the following attributes:
    316 
    317       objectClass: top
    318       objectClass: organization
    319       O: Software GmbH
    320       description: software products
    321       description;lang-en: software products
    322       description;lang-de: Softwareprodukte
    323 
    324    The server would return:
    325 
    326       description: software products
    327       description;lang-en: software products
    328       description;lang-de: Softwareprodukte
    329 
    330 2.4.  Compare
    331 
    332    Language tag options can be present in an AttributeDescription used
    333    in a compare request AttributeValueAssertion.  This is to be treated
    334    by servers the same as the use of language tag options in a search
    335    filter with an equality match, as described in Section 2.2.  If there
    336    is no attribute in the entry with the same attribute type or its
    337    subtype and contains each of the presented (or possibly other)
    338    language tag options, the noSuchAttributeType error will be returned.
    339 
    340 
    341 
    342 
    343 Zeilenga                    Standards Track                     [Page 6]
    344 
    346 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    347 
    348 
    349    Thus, for example, a compare request of type "name" and assertion
    350    value "Johann", against an entry containing the following attributes:
    351 
    352       objectClass: top
    353       objectClass: person
    354       givenName;lang-de-DE: Johann
    355       CN: Johann Sibelius
    356       SN: Sibelius
    357 
    358    would cause the server to return compareTrue.
    359 
    360    However, if the client issued a compare request of type
    361    "name;lang-de" and assertion value "Johann" against the above entry,
    362    the request would fail with the noSuchAttributeType error.
    363 
    364    If the server does not support storing attributes with language tag
    365    options in the DIT, then any comparison which includes a language tag
    366    option will always fail to locate an attribute, and
    367    noSuchAttributeType will be returned.
    368 
    369 2.5.  Add Operation
    370 
    371    Clients can provide language options in AttributeDescription in
    372    attributes of a new entry to be created.
    373 
    374    A client can provide multiple attributes with the same attribute type
    375    and value, so long as each attribute has a different set of language
    376    tag options.
    377 
    378    For example, the following is a valid request:
    379 
    380       dn: CN=John Smith,DC=example,DC=com
    381       objectClass: residentialPerson
    382       CN: John Smith
    383       CN;lang-en: John Smith
    384       SN: Smith
    385       SN;lang-en: Smith
    386       streetAddress: 1 University Street
    387       streetAddress;lang-en-US: 1 University Street
    388       streetAddress;lang-fr: 1 rue Universite
    389       houseIdentifier;lang-fr: 9e etage
    390 
    391    If a server does not support storing language tag options with
    392    attribute values in the DIT, then it MUST treat an
    393    AttributeDescription with a language tag option as an unrecognized
    394    attribute.  If the server forbids the addition of unrecognized
    395    attributes then it MUST fail the add request with an appropriate
    396    result code.
    397 
    398 
    399 
    400 Zeilenga                    Standards Track                     [Page 7]
    401 
    403 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    404 
    405 
    406 2.6.  Modify Operation
    407 
    408    A client can provide language tag options in an AttributeDescription
    409    as part of a modification element in the modify operation.
    410 
    411    Attribute types and language tag options MUST match exactly against
    412    values stored in the directory.  For example, if the modification is
    413    a "delete", then if the stored values to be deleted have language tag
    414    options, then those language tag options MUST be provided in the
    415    modify operation, and if the stored values to be deleted do not have
    416    any language tag option, then no language tag option is to be
    417    provided.
    418 
    419    If the server does not support storing language tag options with
    420    attribute values in the DIT, then it MUST treat an
    421    AttributeDescription with a language tag option as an unrecognized
    422    attribute, and MUST fail the request with an appropriate result code.
    423 
    424 3.  Use of Language Ranges in LDAP
    425 
    426    Since the publication of RFC 2596, it has become apparent that there
    427    is a need to provide a mechanism for a client to request attributes
    428    based upon set of language tag options whose tags all begin with the
    429    same sequence of language sub-tags.
    430 
    431    AttributeDescriptions containing language range options are intended
    432    to be used in attribute value assertions, search attribute lists, and
    433    other places where the client desires to provide an attribute
    434    description matching of a range of language tags associated with
    435    attributes.
    436 
    437    A language range option conforms to the following ABNF [RFC2234]:
    438 
    439       language-range-option = "lang-" [ Language-Tag "-" ]
    440 
    441    where the Language-Tag production is as defined in BCP 47 [RFC3066].
    442    This production and those it imports from [RFC2234] are provided in
    443    Section 2.1 for convenience.
    444 
    445    A language range option matches a language tag option if the language
    446    range option less the trailing "-" matches exactly the language tag
    447    or if the language range option (including the trailing "-") matches
    448    a prefix of the language tag option.  Note that the language range
    449    option "lang-" matches all language tag options.
    450 
    451 
    452 
    453 
    454 
    455 
    456 
    457 Zeilenga                    Standards Track                     [Page 8]
    458 
    460 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    461 
    462 
    463    Examples of valid AttributeDescription containing language range
    464    options:
    465 
    466       givenName;lang-en-
    467       CN;lang-
    468       SN;lang-de-;lang-gem-
    469       O;lang-x-;x-foobar
    470 
    471    A language range option is not a tagging option.  Attributes cannot
    472    be stored with language range options.  Any attempt to add or update
    473    an attribute description with a language range option SHALL be
    474    treated as an undefined attribute type and result in an error.
    475 
    476    A language range option has no effect on the transfer encoding nor on
    477    the syntax of the attribute values.
    478 
    479    Servers SHOULD support assertion of language ranges for any attribute
    480    type which they allow to be stored with language tags.
    481 
    482 3.1.  Search Filter
    483 
    484    If a language range option is present in an AttributeDescription in
    485    an assertion, then for each entry within scope, the values of each
    486    attribute whose AttributeDescription consists of the same attribute
    487    type or its subtypes and contains a language tag option matching the
    488    language range option are to be returned.
    489 
    490    Thus, for example, a filter of an equality match of type
    491    "name;lang-en-" and assertion value "Billy Ray", against the
    492    following directory entry:
    493 
    494       dn: SN=Ray,DC=example,DC=com
    495       objectClass: person                 DOES NOT MATCH (wrong type)
    496       objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    497       name;lang-en-US: Billy Ray          MATCHES
    498       name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    499       CN;lang-en-US: Billy Ray            MATCHES
    500       CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    501       CN;lang-en;x-foobar: Billy Ray      MATCHES
    502       CN;x-foobar: Billy Ray              DOES NOT MATCH (no lang-)
    503       name: Billy Ray                     DOES NOT MATCH (no lang-)
    504       SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    505       SN: Ray                             DOES NOT MATCH (no lang-,
    506                                             wrong value)
    507 
    508    Note that "CN" and "SN" are subtypes of "name".
    509 
    510 
    511 
    512 
    513 
    514 Zeilenga                    Standards Track                     [Page 9]
    515 
    517 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    518 
    519 
    520    If the server does not support storing attributes with language tag
    521    options in the DIT, then any assertion which includes a language
    522    range option will not match as it is an unrecognized attribute type.
    523    No error would be returned because of this; a presence filter would
    524    evaluate to FALSE and all other assertions to Undefined.
    525 
    526 3.2.  Requested Attributes in Search
    527 
    528    Clients can provide language range options in each
    529    AttributeDescription in the requested attribute list in a search
    530    request.
    531 
    532    If a language range option is provided in an attribute description,
    533    then only attributes in a directory entry whose attribute
    534    descriptions have the same attribute type or its subtype and a
    535    language tag option matching the provided language range option are
    536    to be returned.  Thus if a client requests just the attribute
    537    "name;lang-en-", the server would return "name;lang-en-US" and
    538    "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr".
    539 
    540    Clients can provide in the attribute list multiple
    541    AttributeDescriptions which have the same base attribute type but
    542    different options.  For example a client could provide both
    543    "name;lang-en-" and "name;lang-fr-", and this would permit an
    544    attribute whose type was name or subtype of name and with a language
    545    tag option matching either language range option to be returned.
    546 
    547    If a server does not support storing attributes with language tag
    548    options in the DIT, then any attribute descriptions in the list which
    549    include language range options are to be ignored, just as if they
    550    were unknown attribute types.
    551 
    552 3.3.  Compare
    553 
    554    Language range options can be present in an AttributeDescription used
    555    in a compare request AttributeValueAssertion.  This is to be treated
    556    by servers the same as the use of language range options in a search
    557    filter with an equality match, as described in Section 3.1.  If there
    558    is no attribute in the entry with the same subtype and a matching
    559    language tag option, the noSuchAttributeType error will be returned.
    560 
    561    Thus, for example, a compare request of type "name;lang-" and
    562    assertion value "Johann", against the entry with the following
    563    attributes:
    564 
    565 
    566 
    567 
    568 
    569 
    570 
    571 Zeilenga                    Standards Track                    [Page 10]
    572 
    574 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    575 
    576 
    577       objectClass: top
    578       objectClass: person
    579       givenName;lang-de-DE: Johann
    580       CN: Johann Sibelius
    581       SN: Sibelius
    582 
    583    will cause the server to return compareTrue.  (Note that the language
    584    range option "lang-" matches any language tag option.)
    585 
    586    However, if the client issued a compare request of type
    587    "name;lang-de" and assertion value "Sibelius" against the above
    588    entry, the request would fail with the noSuchAttributeType error.
    589 
    590    If the server does not support storing attributes with language tag
    591    options in the DIT, then any comparison which includes a language
    592    range option will always fail to locate an attribute, and
    593    noSuchAttributeType will be returned.
    594 
    595 4.  Discovering Language Option Support
    596 
    597    A server SHOULD indicate that it supports storing attributes with
    598    language tag options in the DIT by publishing 1.3.6.1.4.1.4203.1.5.4
    599    as a value of the root DSE.
    600 
    601    A server SHOULD indicate that it supports language range matching of
    602    attributes with language tag options stored in the DIT by publishing
    603    1.3.6.1.4.1.4203.1.5.5 as a value of the "supportedFeatures"
    604    [RFC3674] attribute in the root DSE.
    605 
    606    A server MAY restrict use of language tag options to a subset of the
    607    attribute types it recognizes.  This document does not define a
    608    mechanism for determining which subset of attribute types can be used
    609    with language tag options.
    610 
    611 5.  Interoperability with Non-supporting Implementations
    612 
    613    Implementators of this specification should take care that their use
    614    of language tag options does not impede proper function of
    615    implementations which do not support language tags.
    616 
    617    Per RFC 2251, "an AttributeDescription with one or more options is
    618    treated as a subtype of the attribute type without any options."  A
    619    non-supporting server will treat an AttributeDescription with any
    620    language tag options as an unrecognized attribute type.  A non-
    621    supporting client will either do the same, or will treat the
    622    AttributeDescription as it would any other unknown subtype.
    623    Typically, non-supporting clients simply ignore unrecognized subtypes
    624    (and unrecognized attribute types) of attributes they request.
    625 
    626 
    627 
    628 Zeilenga                    Standards Track                    [Page 11]
    629 
    631 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    632 
    633 
    634    To ensure proper function of non-supporting clients, supporting
    635    clients SHOULD ensure that entries they populate with tagged values
    636    are also populated with non-tagged values.
    637 
    638    Additionally, supporting clients SHOULD be prepared to handle entries
    639    which are not populated with tagged values.
    640 
    641 6.  Security Considerations
    642 
    643    Language tags and range options are used solely to indicate the
    644    native language of values and in querying the directory for values
    645    which fulfill the user's language needed.  These options are not
    646    known to raise specific security considerations.  However, the reader
    647    should consider general directory security issues detailed in the
    648    LDAP technical specification [RFC3377].
    649 
    650 7.  IANA Considerations
    651 
    652    Registration of these protocol mechanisms [RFC3383] has been
    653    completed by the IANA.
    654 
    655    Subject: Request for LDAP Protocol Mechanism Registration
    656    Object Identifier: 1.3.6.1.4.1.4203.1.5.4
    657    Description: Language Tag Options
    658    Object Identifier: 1.3.6.1.4.1.4203.1.5.5
    659    Description: Language Range Options
    660    Person & email address to contact for further information:
    661         Kurt Zeilenga <kurt (a] openldap.org>
    662    Usage: Feature
    663    Specification: RFC 3866
    664    Author/Change Controller: IESG
    665    Comments: none
    666 
    667    These OIDs were assigned [ASSIGN] by OpenLDAP Foundation, under its
    668    IANA-assigned private enterprise allocation [PRIVATE], for use in
    669    this specification.
    670 
    671 8.  Acknowledgments
    672 
    673    This document is a revision of RFC 2596 by Mark Wahl and Tim Howes.
    674    RFC 2596 was a product of the IETF ASID and LDAPEXT working groups.
    675    This document also borrows from a number of IETF documents including
    676    BCP 47 by H. Alvestrand.
    677 
    678 
    679 
    680 
    681 
    682 
    683 
    684 
    685 Zeilenga                    Standards Track                    [Page 12]
    686 
    688 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    689 
    690 
    691 9.  References
    692 
    693 9.1.  Normative References
    694 
    695    [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
    696                  Requirement Levels", BCP 14, RFC 2119, March 1997.
    697 
    698    [RFC2234]     Crocker, D., Ed. and P. Overell, "Augmented BNF for
    699                  Syntax Specifications: ABNF", RFC 2234, November 1997.
    700 
    701    [RFC2251]     Wahl, M., Howes, T. and S. Kille, "Lightweight
    702                  Directory Access Protocol (v3)", RFC 2251, December
    703                  1997.
    704 
    705    [RFC3066]     Alvestrand, H., "Tags for the Identification of
    706                  Languages", BCP 47, RFC 3066, January 2001.
    707 
    708    [RFC3377]     Hodges, J. and R. Morgan, "Lightweight Directory Access
    709                  Protocol (v3): Technical Specification", RFC 3377,
    710                  September 2002.
    711 
    712    [RFC3674]     Zeilenga, K., "Feature Discovery in Lightweight
    713                  Directory Access Protocol (LDAP)", RFC 3674, December
    714                  2003.
    715 
    716    [ASCII]       Coded Character Set--7-bit American Standard Code for
    717                  Information Interchange, ANSI X3.4-1986.
    718 
    719 9.2.  Informative References
    720 
    721    [X.501]       International Telecommunication Union -
    722                  Telecommunication Standardization Sector, "The
    723                  Directory -- Models," X.501(1997).
    724 
    725    [RFC3383]     Zeilenga, K., "Internet Assigned Numbers Authority
    726                  (IANA) Considerations for Lightweight Directory Access
    727                  Protocol (LDAP)", BCP 64, RFC 3383, September 2002.
    728 
    729    [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
    730                  http://www.openldap.org/foundation/oid-delegate.txt.
    731 
    732    [PRIVATE]     IANA, "Private Enterprise Numbers",
    733                  http://www.iana.org/assignments/enterprise-numbers.
    734 
    735 
    736 
    737 
    738 
    739 
    740 
    741 
    742 Zeilenga                    Standards Track                    [Page 13]
    743 
    745 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    746 
    747 
    748 Appendix A. Differences from RFC 2596
    749 
    750    This document adds support for language ranges, provides a mechanism
    751    that a client can use to discover whether a server supports language
    752    tags and ranges, and clarifies how attributes with multiple language
    753    tags are to be treated.  This document is a significant rewrite of
    754    RFC 2596.
    755 
    756 Appendix B. Differences from X.500(1997)
    757 
    758    X.500(1997) [X.501] defines a different mechanism, contexts, as the
    759    means of representing language tags (codes).  This section summarizes
    760    the major differences in approach.
    761 
    762    a) An X.500 operation which has specified a language code on a value
    763       matches a value in the directory without a language code.
    764 
    765    b) LDAP references BCP 47 [RFC3066], which allows for IANA
    766       registration of new tags as well as unregistered tags.
    767 
    768    c) LDAP supports language ranges (new in this revision).
    769 
    770    d) LDAP does not allow language tags (and ranges) in distinguished
    771       names.
    772 
    773    e) X.500 describes subschema administration procedures to allow
    774       language codes to be associated with particular attributes types.
    775 
    776 Editor's Address
    777 
    778    Kurt D. Zeilenga
    779    OpenLDAP Foundation
    780 
    781    EMail: Kurt (a] OpenLDAP.org
    782 
    783 
    784 
    785 
    786 
    787 
    788 
    789 
    790 
    791 
    792 
    793 
    794 
    795 
    796 
    797 
    798 
    799 Zeilenga                    Standards Track                    [Page 14]
    800 
    802 RFC 3866            Language Tags and Ranges in LDAP           July 2004
    803 
    804 
    805 Full Copyright Statement
    806 
    807    Copyright (C) The Internet Society (2004).  This document is subject
    808    to the rights, licenses and restrictions contained in BCP 78, and
    809    except as set forth therein, the authors retain all their rights.
    810 
    811    This document and the information contained herein are provided on an
    812    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
    813    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
    814    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
    815    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
    816    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
    817    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
    818 
    819 Intellectual Property
    820 
    821    The IETF takes no position regarding the validity or scope of any
    822    Intellectual Property Rights or other rights that might be claimed to
    823    pertain to the implementation or use of the technology described in
    824    this document or the extent to which any license under such rights
    825    might or might not be available; nor does it represent that it has
    826    made any independent effort to identify any such rights.  Information
    827    on the procedures with respect to rights in RFC documents can be
    828    found in BCP 78 and BCP 79.
    829 
    830    Copies of IPR disclosures made to the IETF Secretariat and any
    831    assurances of licenses to be made available, or the result of an
    832    attempt made to obtain a general license or permission for the use of
    833    such proprietary rights by implementers or users of this
    834    specification can be obtained from the IETF on-line IPR repository at
    835    http://www.ietf.org/ipr.
    836 
    837    The IETF invites any interested party to bring to its attention any
    838    copyrights, patents or patent applications, or other proprietary
    839    rights that may cover technology that may be required to implement
    840    this standard.  Please address the information to the IETF at ietf-
    841    ipr (a] ietf.org.
    842 
    843 Acknowledgement
    844 
    845    Funding for the RFC Editor function is currently provided by the
    846    Internet Society.
    847 
    848 
    849 
    850 
    851 
    852 
    853 
    854 
    855 
    856 Zeilenga                    Standards Track                    [Page 15]
    857 
    859