forked from friendica/friendica-addons
1460 lines
54 KiB
Plaintext
1460 lines
54 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group C. Newman
|
||
Request for Comments: 4790 Sun Microsystems
|
||
Category: Standards Track M. Duerst
|
||
Aoyama Gakuin University
|
||
A. Gulbrandsen
|
||
Oryx
|
||
March 2007
|
||
|
||
|
||
Internet Application Protocol Collation Registry
|
||
|
||
Status of This Memo
|
||
|
||
This document specifies an Internet standards track protocol for the
|
||
Internet community, and requests discussion and suggestions for
|
||
improvements. Please refer to the current edition of the "Internet
|
||
Official Protocol Standards" (STD 1) for the standardization state
|
||
and status of this protocol. Distribution of this memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The IETF Trust (2007).
|
||
|
||
Abstract
|
||
|
||
Many Internet application protocols include string-based lookup,
|
||
searching, or sorting operations. However, the problem space for
|
||
searching and sorting international strings is large, not fully
|
||
explored, and is outside the area of expertise for the Internet
|
||
Engineering Task Force (IETF). Rather than attempt to solve such a
|
||
large problem, this specification creates an abstraction framework so
|
||
that application protocols can precisely identify a comparison
|
||
function, and the repertoire of comparison functions can be extended
|
||
in the future.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 1]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
Table of Contents
|
||
|
||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||
1.1. Conventions Used in This Document . . . . . . . . . . . . 4
|
||
2. Collation Definition and Purpose . . . . . . . . . . . . . . . 4
|
||
2.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||
2.2. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||
2.3. Some Other Terms Used in this Document . . . . . . . . . . 5
|
||
2.4. Sort Keys . . . . . . . . . . . . . . . . . . . . . . . . 5
|
||
3. Collation Identifier Syntax . . . . . . . . . . . . . . . . . 6
|
||
3.1. Basic Syntax . . . . . . . . . . . . . . . . . . . . . . . 6
|
||
3.2. Wildcards . . . . . . . . . . . . . . . . . . . . . . . . 6
|
||
3.3. Ordering Direction . . . . . . . . . . . . . . . . . . . . 7
|
||
3.4. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
|
||
3.5. Naming Guidelines . . . . . . . . . . . . . . . . . . . . 7
|
||
4. Collation Specification Requirements . . . . . . . . . . . . . 8
|
||
4.1. Collation/Server Interface . . . . . . . . . . . . . . . . 8
|
||
4.2. Operations Supported . . . . . . . . . . . . . . . . . . . 8
|
||
4.2.1. Validity . . . . . . . . . . . . . . . . . . . . . . . 9
|
||
4.2.2. Equality . . . . . . . . . . . . . . . . . . . . . . . 9
|
||
4.2.3. Substring . . . . . . . . . . . . . . . . . . . . . . 9
|
||
4.2.4. Ordering . . . . . . . . . . . . . . . . . . . . . . . 10
|
||
4.3. Sort Keys . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||
4.4. Use of Lookup Tables . . . . . . . . . . . . . . . . . . . 11
|
||
5. Application Protocol Requirements . . . . . . . . . . . . . . 11
|
||
5.1. Character Encoding . . . . . . . . . . . . . . . . . . . . 11
|
||
5.2. Operations . . . . . . . . . . . . . . . . . . . . . . . . 11
|
||
5.3. Wildcards . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||
5.4. String Comparison . . . . . . . . . . . . . . . . . . . . 12
|
||
5.5. Disconnected Clients . . . . . . . . . . . . . . . . . . . 12
|
||
5.6. Error Codes . . . . . . . . . . . . . . . . . . . . . . . 13
|
||
5.7. Octet Collation . . . . . . . . . . . . . . . . . . . . . 13
|
||
6. Use by Existing Protocols . . . . . . . . . . . . . . . . . . 13
|
||
7. Collation Registration . . . . . . . . . . . . . . . . . . . . 14
|
||
7.1. Collation Registration Procedure . . . . . . . . . . . . . 14
|
||
7.2. Collation Registration Format . . . . . . . . . . . . . . 15
|
||
7.2.1. Registration Template . . . . . . . . . . . . . . . . 15
|
||
7.2.2. The Collation Element . . . . . . . . . . . . . . . . 15
|
||
7.2.3. The Identifier Element . . . . . . . . . . . . . . . . 16
|
||
7.2.4. The Title Element . . . . . . . . . . . . . . . . . . 16
|
||
7.2.5. The Operations Element . . . . . . . . . . . . . . . . 16
|
||
7.2.6. The Specification Element . . . . . . . . . . . . . . 16
|
||
7.2.7. The Submitter Element . . . . . . . . . . . . . . . . 16
|
||
7.2.8. The Owner Element . . . . . . . . . . . . . . . . . . 16
|
||
7.2.9. The Version Element . . . . . . . . . . . . . . . . . 17
|
||
7.2.10. The Variable Element . . . . . . . . . . . . . . . . . 17
|
||
7.3. Structure of Collation Registry . . . . . . . . . . . . . 17
|
||
7.4. Example Initial Registry Summary . . . . . . . . . . . . . 18
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 2]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
8. Guidelines for Expert Reviewer . . . . . . . . . . . . . . . . 18
|
||
9. Initial Collations . . . . . . . . . . . . . . . . . . . . . . 19
|
||
9.1. ASCII Numeric Collation . . . . . . . . . . . . . . . . . 20
|
||
9.1.1. ASCII Numeric Collation Description . . . . . . . . . 20
|
||
9.1.2. ASCII Numeric Collation Registration . . . . . . . . . 20
|
||
9.2. ASCII Casemap Collation . . . . . . . . . . . . . . . . . 21
|
||
9.2.1. ASCII Casemap Collation Description . . . . . . . . . 21
|
||
9.2.2. ASCII Casemap Collation Registration . . . . . . . . . 22
|
||
9.3. Octet Collation . . . . . . . . . . . . . . . . . . . . . 22
|
||
9.3.1. Octet Collation Description . . . . . . . . . . . . . 22
|
||
9.3.2. Octet Collation Registration . . . . . . . . . . . . . 23
|
||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
|
||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 23
|
||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 23
|
||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
|
||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
|
||
13.2. Informative References . . . . . . . . . . . . . . . . . . 24
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 3]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
1. Introduction
|
||
|
||
The Application Configuration Access Protocol ACAP [11] specification
|
||
introduced the concept of a comparator (which we call collation in
|
||
this document), but failed to create an IANA registry. With the
|
||
introduction of stringprep [6] and the Unicode Collation Algorithm
|
||
[7], it is now time to create that registry and populate it with some
|
||
initial values appropriate for an international community. This
|
||
specification replaces and generalizes the definition of a comparator
|
||
in ACAP, and creates a collation registry.
|
||
|
||
1.1. Conventions Used in This Document
|
||
|
||
The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
|
||
in this document are to be interpreted as defined in "Key words for
|
||
use in RFCs to Indicate Requirement Levels" [1].
|
||
|
||
The attribute syntax specifications use the Augmented Backus-Naur
|
||
Form (ABNF) [2] notation, including the core rules defined in
|
||
Appendix A. The ABNF production "Language-tag" is imported from
|
||
Language Tags [5] and "reg-name" from URI: Generic Syntax [4].
|
||
|
||
2. Collation Definition and Purpose
|
||
|
||
2.1. Definition
|
||
|
||
A collation is a named function which takes two arbitrary length
|
||
strings as input and can be used to perform one or more of three
|
||
basic comparison operations: equality test, substring match, and
|
||
ordering test.
|
||
|
||
2.2. Purpose
|
||
|
||
Collations are an abstraction for comparison functions so that these
|
||
comparison functions can be used in multiple protocols. The details
|
||
of a particular comparison operation can be specified by someone with
|
||
appropriate expertise, independent of the application protocols that
|
||
use that collation. This is similar to the way a charset [13]
|
||
separates the details of octet to character mapping from a protocol
|
||
specification, such as MIME [9], or the way SASL [10] separates the
|
||
details of an authentication mechanism from a protocol specification,
|
||
such as ACAP [11].
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 4]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
Here is a small diagram to help illustrate the value of this
|
||
abstraction:
|
||
|
||
+-------------------+ +-----------------+
|
||
| IMAP i18n SEARCH |--+ | Basic |
|
||
+-------------------+ | +--| Collation Spec |
|
||
| | +-----------------+
|
||
+-------------------+ | +-------------+ | +-----------------+
|
||
| ACAP i18n SEARCH |--+--| Collation |--+--| A stringprep |
|
||
+-------------------+ | | Registry | | | Collation Spec |
|
||
| +-------------+ | +-----------------+
|
||
+-------------------+ | | +-----------------+
|
||
| ...other protocol |--+ | | locale-specific |
|
||
+-------------------+ +--| Collation Spec |
|
||
+-----------------+
|
||
|
||
Thus IMAP, ACAP, and future application protocols with international
|
||
search capability simply specify how to interface to the collation
|
||
registry instead of each protocol specification having to specify all
|
||
the collations it supports.
|
||
|
||
2.3. Some Other Terms Used in this Document
|
||
|
||
The terms client, server, and protocol are used in somewhat unusual
|
||
senses.
|
||
|
||
Client means a user, or a program acting directly on behalf of a
|
||
user. This may be a mail reader acting as an IMAP client, or it may
|
||
be an interactive shell, where the user can type protocol commands/
|
||
requests directly, or it may be a script or program written by the
|
||
user.
|
||
|
||
Server means a program that performs services requested by the
|
||
client. This may be a traditional server such as an HTTP server, or
|
||
it may be a Sieve [14] interpreter running a Sieve script written by
|
||
a user. A server needs to use the operations provided by collations
|
||
in order to fulfill the client's requests.
|
||
|
||
The protocol describes how the client tells the server what it wants
|
||
done, and (if applicable) how the server tells the client about the
|
||
results. IMAP is a protocol by this definition, and so is the Sieve
|
||
language.
|
||
|
||
2.4. Sort Keys
|
||
|
||
One component of a collation is a transformation, which turns a
|
||
string into a sort key, which is then used while sorting.
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 5]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
The transformation can range from an identity mapping (e.g., the
|
||
i;octet collation Section 9.3) to a mapping that makes the string
|
||
unreadable to a human.
|
||
|
||
This is an implementation detail of collations or servers. A
|
||
protocol SHOULD NOT expose it to clients, since some collations leave
|
||
the sort key's format up to the implementation, and current
|
||
conformant implementations are known to use different formats.
|
||
|
||
3. Collation Identifier Syntax
|
||
|
||
3.1. Basic Syntax
|
||
|
||
The collation identifier itself is a single US-ASCII string. The
|
||
identifier MUST NOT be longer than 254 characters, and obeys the
|
||
following grammar:
|
||
|
||
collation-char = ALPHA / DIGIT / "-" / ";" / "=" / "."
|
||
|
||
collation-id = collation-prefix ";" collation-core-name
|
||
*collation-arg
|
||
|
||
collation-scope = Language-tag / "vnd-" reg-name
|
||
|
||
collation-core-name = ALPHA *( ALPHA / DIGIT / "-" )
|
||
|
||
collation-arg = ";" ALPHA *( ALPHA / DIGIT ) "="
|
||
1*( ALPHA / DIGIT / "." )
|
||
|
||
|
||
Note: the ABNF production "Language-tag" is imported from Language
|
||
Tags [5] and "reg-name" from URI: Generic Syntax [4].
|
||
|
||
There is a special identifier called "default". For protocols that
|
||
have a default collation, "default" refers to that collation. For
|
||
other protocols, the identifier "default" MUST match no collations,
|
||
and servers SHOULD treat it in the same way as they treat nonexistent
|
||
collations.
|
||
|
||
3.2. Wildcards
|
||
|
||
The string a client uses to select a collation MAY contain one or
|
||
more wildcard ("*") characters that match zero or more collation-
|
||
chars. Wildcard characters MUST NOT be adjacent. If the wildcard
|
||
string matches multiple collations, the server SHOULD attempt to
|
||
select a widely useful collation in preference to a narrowly useful
|
||
one.
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 6]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
collation-wild = ("*" / (ALPHA ["*"])) *(collation-char ["*"])
|
||
; MUST NOT exceed 254 characters total
|
||
|
||
3.3. Ordering Direction
|
||
|
||
When used as a protocol element for ordering, the collation
|
||
identifier MAY be prefixed by either "+" or "-" to explicitly specify
|
||
an ordering direction. "+" has no effect on the ordering operation,
|
||
while "-" inverts the result of the ordering operation. In general,
|
||
collation-order is used when a client requests a collation, and
|
||
collation-selected is used when the server informs the client of the
|
||
selected collation.
|
||
|
||
collation-selected = ["+" / "-"] collation-id
|
||
|
||
collation-order = ["+" / "-"] collation-wild
|
||
|
||
3.4. URIs
|
||
|
||
Some protocols are designed to use URIs [4] to refer to collations
|
||
rather than simple tokens. A special section of the IANA URL space
|
||
is reserved for such usage. The "collation-uri" form is used to
|
||
refer to a specific named collation (the collation registration may
|
||
not actually be present). The "collation-auri" form is an abstract
|
||
name for an ordering, a collation pattern or a vendor private
|
||
collator.
|
||
|
||
collation-uri = "http://www.iana.org/assignments/collation/"
|
||
collation-id ".xml"
|
||
|
||
collation-auri = ( "http://www.iana.org/assignments/collation/"
|
||
collation-order ".xml" ) / other-uri
|
||
|
||
other-uri = <absoluteURI>
|
||
; excluding the IANA collation namespace.
|
||
|
||
3.5. Naming Guidelines
|
||
|
||
While this specification makes no absolute requirements on the
|
||
structure of collation identifiers, naming consistency is important,
|
||
so the following initial guidelines are provided.
|
||
|
||
Collation identifiers with an international audience typically begin
|
||
with "i;". Collation identifiers intended for a particular language
|
||
or locale typically begin with a language tag [5] followed by a ";".
|
||
After the first ";" is normally the name of the general collation
|
||
algorithm, followed by a series of algorithm modifications separated
|
||
by the ";" delimiter. Parameterized modifications will use "=" to
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 7]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
delimit the parameter from the value. The version numbers of any
|
||
lookup tables used by the algorithm SHOULD be present as
|
||
parameterized modifications.
|
||
|
||
Collation identifiers of the form *;vnd-hostname;* are reserved for
|
||
vendor-specific collations created by the owner of the hostname
|
||
following the "vnd-" prefix (e.g., vnd-example.com for the vendor
|
||
example.com). Registration of such collations (or the name space as
|
||
a whole), with intended use of the "Vendor", is encouraged when a
|
||
public specification or open-source implementation is available, but
|
||
is not required.
|
||
|
||
4. Collation Specification Requirements
|
||
|
||
4.1. Collation/Server Interface
|
||
|
||
The collation itself defines what it operates on. Most collations
|
||
are expected to operate on character strings. The i;octet
|
||
(Section 9.3) collation operates on octet strings. The i;ascii-
|
||
numeric (Section 9.1) operation operates on numbers.
|
||
|
||
This specification defines the collation interface in terms of octet
|
||
strings. However, implementations may choose to use character
|
||
strings instead. Such implementations may not be able to implement
|
||
e.g., i;octet. Since i;octet is not currently mandatory to implement
|
||
for any protocol, this should not be a problem.
|
||
|
||
4.2. Operations Supported
|
||
|
||
A collation specification MUST state which of the three basic
|
||
operations are supported (equality, substring, ordering) and how to
|
||
perform each of the supported operations on any two input character
|
||
strings, including empty strings. Collations must be deterministic,
|
||
i.e., given a collation with a specific identifier, and any two fixed
|
||
input strings, the result MUST be the same for the same operation.
|
||
|
||
In general, collation operations should behave as their names
|
||
suggest. While a collation may be new, the operations are not, so
|
||
the new collation's operations should be similar to those of older
|
||
collations. For example, a date/time collation should not provide a
|
||
"substring" operation that would morph IMAP substring SEARCH into
|
||
e.g., a date-range search.
|
||
|
||
A non-obvious consequence of the rules for each collation operation
|
||
is that, for any single collation, either none or all of the
|
||
operations can return "undefined". For example, it is not possible
|
||
to have an equality operation that never returns "undefined", and a
|
||
substring operation that occasionally does.
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 8]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
4.2.1. Validity
|
||
|
||
The validity test takes one string as argument. It returns valid if
|
||
its input string is a valid input to the collation's other
|
||
operations, and invalid if not. (In other words, a string is valid
|
||
if it is equal to itself according to the collation's equality
|
||
operation.)
|
||
|
||
The validity test is provided by all collations. It MUST NOT be
|
||
listed separately in the collation registration.
|
||
|
||
4.2.2. Equality
|
||
|
||
The equality test always returns "match" or "no-match" when it is
|
||
supplied valid input, and MAY return "undefined" if one or both input
|
||
strings are not valid.
|
||
|
||
The equality test MUST be reflexive and symmetric. For valid input,
|
||
it MUST be transitive.
|
||
|
||
If a collation provides either a substring or an ordering test, it
|
||
MUST also provide an equality test. The substring and/or ordering
|
||
tests MUST be consistent with the equality test.
|
||
|
||
The return values of the equality test are called "match", "no-match"
|
||
and "undefined" in this document.
|
||
|
||
4.2.3. Substring
|
||
|
||
The substring matching operation determines if the first string is a
|
||
substring of the second string, i.e., if one or more substrings of
|
||
the second string is equal to the first, as defined by the
|
||
collation's equality operation.
|
||
|
||
A collation that supports substring matching will automatically
|
||
support two special cases of substring matching: prefix and suffix
|
||
matching, if those special cases are supported by the application
|
||
protocol. It returns "match" or "no-match" when it is supplied valid
|
||
input and returns "undefined" when supplied invalid input.
|
||
|
||
Application protocols MAY return position information for substring
|
||
matches. If this is done, the position information SHOULD include
|
||
both the starting offset and the ending offset for each match. This
|
||
is important because more sophisticated collations can match strings
|
||
of unequal length (for example, a pre-composed accented character can
|
||
match a decomposed accented character). In general, overlapping
|
||
matches SHOULD be reported (as when "ana" occurs twice within
|
||
"banana"), although there are cases where a collation may decide not
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 9]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
to. For example, in a collation which treats all whitespace
|
||
sequences as identical, the substring operation could be defined such
|
||
that " 1 " (SP "1" SP) is reported just once within " 1 " (SP SP
|
||
"1" SP SP), not four times (SP SP "1" SP, SP "1" SP, SP "1" SP SP and
|
||
SP SP "1" SP SP), since the four matches are, in a sense, the same
|
||
match.
|
||
|
||
A string is a substring of itself. The empty string is a substring
|
||
of all strings.
|
||
|
||
Note that the substring operation of some collations can match
|
||
strings of unequal length. For example, a pre-composed accented
|
||
character can match a decomposed accented character. The Unicode
|
||
Collation Algorithm [7] discusses this in more detail.
|
||
|
||
The return values of the substring operation are called "match", "no-
|
||
match", and "undefined" in this document.
|
||
|
||
4.2.4. Ordering
|
||
|
||
The ordering operation determines how two strings are ordered. It
|
||
MUST be reflexive. For valid input, it MUST be transitive and
|
||
trichotomous.
|
||
|
||
Ordering returns "less" if the first string is listed before the
|
||
second string, according to the collation; "greater", if the second
|
||
string is listed before the first string; and "equal", if the two
|
||
strings are equal, as defined by the collation's equality operation.
|
||
If one or both strings are invalid, the result of ordering is
|
||
"undefined".
|
||
|
||
When the collation is used with a "+" prefix, the behavior is the
|
||
same as when used with no prefix. When the collation is used with a
|
||
"-" prefix, the result of the ordering operation of the collation
|
||
MUST be reversed.
|
||
|
||
The return values of the ordering operation are called "less",
|
||
"equal", "greater", and "undefined" in this document.
|
||
|
||
4.3. Sort Keys
|
||
|
||
A collation specification SHOULD describe the internal transformation
|
||
algorithm to generate sort keys. This algorithm can be applied to
|
||
individual strings, and the result can be stored to potentially
|
||
optimize future comparison operations. A collation MAY specify that
|
||
the sort key is generated by the identity function. The sort key may
|
||
have no meaning to a human. The sort key may not be valid input to
|
||
the collation.
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 10]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
4.4. Use of Lookup Tables
|
||
|
||
Some collations use customizable lookup tables, e.g., because the
|
||
tables depend on locale, and may be modified after shipping the
|
||
software. Collations that use more than one customizable lookup
|
||
table in a documented format MUST assign numbers to the tables they
|
||
use. This permits an application protocol command to access the
|
||
tables used by a server collation, so that clients and servers use
|
||
the same tables.
|
||
|
||
5. Application Protocol Requirements
|
||
|
||
This section describes the requirements and issues that an
|
||
application protocol needs to consider if it offers searching,
|
||
substring matching and/or sorting, and permits the use of characters
|
||
outside the US-ASCII charset.
|
||
|
||
5.1. Character Encoding
|
||
|
||
The protocol specification has to make sure that it is clear on which
|
||
characters (rather than just octets) the collations are used. This
|
||
can be done by specifying the protocol itself in terms of characters
|
||
(e.g., in the case of a query language), by specifying a single
|
||
character encoding for the protocol (e.g., UTF-8 [3]), or by
|
||
carefully describing the relevant issues of character encoding
|
||
labeling and conversion. In the later case, details to consider
|
||
include how to handle unknown charsets, any charsets that are
|
||
mandatory-to-implement, any issues with byte-order that might apply,
|
||
and any transfer encodings that need to be supported.
|
||
|
||
5.2. Operations
|
||
|
||
The protocol must specify which of the operations defined in this
|
||
specification (equality matching, substring matching, and ordering)
|
||
can be invoked in the protocol, and how they are invoked. There may
|
||
be more than one way to invoke an operation.
|
||
|
||
The protocol MUST provide a mechanism for the client to select the
|
||
collation to use with equality matching, substring matching, and
|
||
ordering.
|
||
|
||
If a protocol needs a total ordering and the collation chosen does
|
||
not provide it because the ordering operation returns "undefined" at
|
||
least once, the recommended fallback is to sort all invalid strings
|
||
after the valid ones, and use i;octet to order the invalid strings.
|
||
|
||
Although the collation's substring function provides a list of
|
||
matches, a protocol need not provide all that to the client. It may
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 11]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
provide only the first matching substring, or even just the
|
||
information that the substring search matched. In this way,
|
||
collations can be used with protocols that are defined such that "x
|
||
is a substring of y" returns true-false.
|
||
|
||
If the protocol provides positional information for the results of a
|
||
substring match, that positional information SHOULD fully specify the
|
||
substring(s) in the result that matches, independent of the length of
|
||
the search string. For example, returning both the starting and
|
||
ending offset of the match would suffice, as would the starting
|
||
offset and a length. Returning just the starting offset is not
|
||
acceptable. This rule is necessary because advanced collations can
|
||
treat strings of different lengths as equal (for example, pre-
|
||
composed and decomposed accented characters).
|
||
|
||
5.3. Wildcards
|
||
|
||
The protocol MUST specify whether it allows the use of wildcards in
|
||
collation identifiers. If the protocol allows wildcards, then:
|
||
The protocol MUST specify how comparisons behave in the absence of
|
||
explicit collation negotiation, or when a collation of "default"
|
||
is requested. The protocol MAY specify that the default collation
|
||
used in such circumstances is sensitive to server configuration.
|
||
|
||
The protocol SHOULD provide a way to list available collations
|
||
matching a given wildcard pattern, or patterns.
|
||
|
||
5.4. String Comparison
|
||
|
||
If a protocol compares strings in any nontrivial way, using a
|
||
collation may be appropriate. As an example, many protocols use
|
||
case-independent strings. In many cases, a simple ASCII mapping to
|
||
upper/lower case works well. In other cases, it may be better to use
|
||
a specifiable collation; for example, so that a server can treat "i"
|
||
and "I" as equivalent in Italy, and different in Turkey (Turkish also
|
||
has a dotted upper-case" I" and a dotless lower-case "i").
|
||
|
||
Protocol designers should consider, in each case, whether to use a
|
||
specifiable collation. Keywords often have other needs than user
|
||
variables, and search arguments may be different again.
|
||
|
||
5.5. Disconnected Clients
|
||
|
||
If the protocol supports disconnected clients, and a collation is
|
||
used that can use configurable tables (e.g., to support
|
||
locale-specific extensions), then the client may not be able to
|
||
reproduce the server's collation operations while offline.
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 12]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
A mechanism to download such tables has been discussed. Such a
|
||
mechanism is not included in the present specification, since the
|
||
problem is not yet well understood.
|
||
|
||
5.6. Error Codes
|
||
|
||
The protocol specification should consider assigning protocol error
|
||
codes for the following circumstances:
|
||
|
||
o The client requests the use of a collation by identifier or
|
||
pattern, but no implemented collation matches that pattern.
|
||
|
||
o The client attempts to use a collation for an operation that is
|
||
not supported by that collation -- for example, attempting to use
|
||
the "i;ascii-numeric" collation for substring matching.
|
||
|
||
o The client uses an equality or substring matching collation, and
|
||
the result is an error. It may be appropriate to distinguish
|
||
between the two input strings, particularly when one is supplied
|
||
by the client and the other is stored by the server. It might
|
||
also be appropriate to distinguish the specific case of an invalid
|
||
UTF-8 string.
|
||
|
||
5.7. Octet Collation
|
||
|
||
The i;octet (Section 9.3) collation is only usable with protocols
|
||
based on octet-strings. Clients and servers MUST NOT use i;octet
|
||
with other protocols.
|
||
|
||
If the protocol permits the use of collations with data structures
|
||
other than strings, the protocol MUST describe the default behavior
|
||
for a collation with those data structures.
|
||
|
||
6. Use by Existing Protocols
|
||
|
||
This section is informative.
|
||
|
||
Both ACAP [11] and Sieve [14] are standards track specifications that
|
||
used collations prior to the creation of this specification and
|
||
registry. Those standards do not meet all the application protocol
|
||
requirements described in Section 5.
|
||
|
||
These protocols allow the use of the i;octet (Section 9.3) collation
|
||
working directly on UTF-8 data, as used in these protocols.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 13]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
In Sieve, all matches are either true or false. Accordingly, Sieve
|
||
servers must treat "undefined" and "no-match" results of the equality
|
||
and substring operations as false, and only "match" as true.
|
||
|
||
In ACAP and Sieve, there are no invalid strings. In this document's
|
||
terms, invalid strings sort after valid strings.
|
||
|
||
IMAP [15] also collates, although that is explicit only when the
|
||
COMPARATOR [17] extension is used. The built-in IMAP substring
|
||
operation and the ordering provided by the SORT [16] extension may
|
||
not meet the requirements made in this document.
|
||
|
||
Other protocols may be in a similar position.
|
||
|
||
In IMAP, the default collation is i;ascii-casemap, because its
|
||
operations are understood to match IMAP's built-in operations.
|
||
|
||
7. Collation Registration
|
||
|
||
7.1. Collation Registration Procedure
|
||
|
||
The IETF will create a mailing list, collation@ietf.org, which can be
|
||
used for public discussion of collation proposals prior to
|
||
registration. Use of the mailing list is strongly encouraged. The
|
||
IESG will appoint a designated expert who will monitor the
|
||
collation@ietf.org mailing list and review registrations.
|
||
|
||
The registration procedure begins when a completed registration
|
||
template is sent to iana@iana.org and collation@ietf.org. The
|
||
designated expert is expected to tell IANA and the submitter of the
|
||
registration within two weeks whether the registration is approved,
|
||
approved with minor changes, or rejected with cause. When a
|
||
registration is rejected with cause, it can be re-submitted if the
|
||
concerns listed in the cause are addressed. Decisions made by the
|
||
designated expert can be appealed to the IESG Applications Area
|
||
Director, then to the IESG. They follow the normal appeals procedure
|
||
for IESG decisions.
|
||
|
||
Collation registrations in a standards track, BCP, or IESG-approved
|
||
experimental RFC are owned by the IETF, and changes to the
|
||
registration follow normal procedures for updating such documents.
|
||
Collation registrations in other RFCs are owned by the RFC author(s).
|
||
Other collation registrations are owned by the individual(s) listed
|
||
in the contact field of the registration, and IANA will preserve this
|
||
information.
|
||
|
||
If the registration is a change of an existing collation, it MUST be
|
||
approved by the owner. In the event the owner cannot be contacted
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 14]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
for a period of one month, and the designated expert deems the change
|
||
necessary, the IESG MAY re-assign ownership to an appropriate party.
|
||
|
||
7.2. Collation Registration Format
|
||
|
||
Registration of a collation is done by sending a well-formed XML
|
||
document to collation@ietf.org and iana@iana.org.
|
||
|
||
7.2.1. Registration Template
|
||
|
||
Here is a template for the registration:
|
||
|
||
<?xml version='1.0'?>
|
||
<!DOCTYPE collation SYSTEM 'collationreg.dtd'>
|
||
<collation rfc="YYYY" scope="global" intendedUse="common">
|
||
<identifier>collation identifier</identifier>
|
||
<title>technical title for collation</title>
|
||
<operations>equality order substring</operations>
|
||
<specification>specification reference</specification>
|
||
<owner>email address of owner or IETF</owner>
|
||
<submitter>email address of submitter</submitter>
|
||
<version>1</version>
|
||
</collation>
|
||
|
||
7.2.2. The Collation Element
|
||
|
||
The root of the registration document MUST be a <collation> element.
|
||
The collation element contains the other elements in the
|
||
registration, which are described in the following sub-subsections,
|
||
in the order given here.
|
||
|
||
The <collation> element MAY include an "rfc=" attribute if the
|
||
specification is in an RFC. The "rfc=" attribute gives only the
|
||
number of the RFC, without any prefix, such as "RFC", or suffix, such
|
||
as ".txt".
|
||
|
||
The <collation> element MUST include a "scope=" attribute, which MUST
|
||
have one of the values "global", "local", or "other".
|
||
|
||
The <collation> element MUST include an "intendedUse=" attribute,
|
||
which must have one of the values "common", "limited", "vendor", or
|
||
"deprecated". Collation specifications intended for "common" use are
|
||
expected to reference standards from standards bodies with
|
||
significant experience dealing with the details of international
|
||
character sets.
|
||
|
||
Be aware that future revisions of this specification may add
|
||
additional function types, as well as additional XML attributes,
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 15]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
values, and elements. Any system that automatically parses these XML
|
||
documents MUST take this into account to preserve future
|
||
compatibility.
|
||
|
||
7.2.3. The Identifier Element
|
||
|
||
The <identifier> element gives the precise identifier of the
|
||
collation, e.g., i;ascii-casemap. The <identifier> element is
|
||
mandatory.
|
||
|
||
7.2.4. The Title Element
|
||
|
||
The <title> element gives the title of the collation. The <title>
|
||
element is mandatory.
|
||
|
||
7.2.5. The Operations Element
|
||
|
||
The <operations> element lists which of the three operations
|
||
("equality", "order" or "substring") the collation provides,
|
||
separated by single spaces. The <operations> element is mandatory.
|
||
|
||
7.2.6. The Specification Element
|
||
|
||
The <specification> element describes where to find the
|
||
specification. The <specification> element is mandatory. It MAY
|
||
have a URI attribute. There may be more than one <specification>
|
||
element, in which case, they together form the specification.
|
||
|
||
If it is discovered that parts of a collation specification conflict,
|
||
a new revision of the collation is necessary, and the
|
||
collation@ietf.org mailing list should be notified.
|
||
|
||
7.2.7. The Submitter Element
|
||
|
||
The <submitter> element provides an RFC 2822 [12] email address for
|
||
the person who submitted the registration. It is optional if the
|
||
<owner> element contains an email address.
|
||
|
||
There may be more than one <submitter> element.
|
||
|
||
7.2.8. The Owner Element
|
||
|
||
The <owner> element contains either the four letters "IETF" or an
|
||
email address of the owner of the registration. The <owner> element
|
||
is mandatory. There may be more than one <owner> element. If so,
|
||
all owners are equal. Each owner can speak for all.
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 16]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
7.2.9. The Version Element
|
||
|
||
The <version> element MUST be included when the registration is
|
||
likely to be revised, or has been revised in such a way that the
|
||
results change for one or more input strings. The <version> element
|
||
is optional.
|
||
|
||
7.2.10. The Variable Element
|
||
|
||
The <variable> element specifies an optional variable to control the
|
||
collation's behaviour, for example whether it is case sensitive. The
|
||
<variable> element is optional. When <variable> is used, it must
|
||
contain <name> and <default> elements, and it may contain one or more
|
||
<value> elements.
|
||
|
||
7.2.10.1. The Name Element
|
||
|
||
The <name> element specifies the name value of a variable. The
|
||
<name> element is mandatory.
|
||
|
||
7.2.10.2. The Default Element
|
||
|
||
The <default> element specifies the default value of a variable. The
|
||
<default> element is mandatory.
|
||
|
||
7.2.10.3. The Value Element
|
||
|
||
The <value> element specifies a legal value of a variable. The
|
||
<value> element is optional. If one or more <value> elements are
|
||
present, only those values are legal. If none are, then the
|
||
variable's legal values do not form an enumerated set, and the rules
|
||
MUST be specified in an RFC accompanying the registration.
|
||
|
||
7.3. Structure of Collation Registry
|
||
|
||
Once the registration is approved, IANA will store each XML
|
||
registration document in a URL of the form
|
||
http://www.iana.org/assignments/collation/collation-id.xml, where
|
||
collation-id is the content of the identifier element in the
|
||
registration. Both the submitter and the designated expert are
|
||
responsible for verifying that the XML is well-formed. The
|
||
registration document should avoid using new elements. If any are
|
||
necessary, it is important to be consistent with other registrations.
|
||
|
||
IANA will also maintain a text summary of the registry under the name
|
||
http://www.iana.org/assignments/collation/collation-index.html. This
|
||
summary is divided into four sections. The first section is for
|
||
collations intended for common use. This section is intended for
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 17]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
collation registrations published in IESG-approved RFCs, or for
|
||
locally scoped collations from the primary standards body for that
|
||
locale. The designated expert is encouraged to reject collation
|
||
registrations with an intended use of "common" if the expert believes
|
||
it should be "limited", as it is desirable to keep the number of
|
||
"common" registrations small and of high quality. The second section
|
||
is reserved for limited-use collations. The third section is
|
||
reserved for registered vendor-specific collations. The final
|
||
section is reserved for deprecated collations.
|
||
|
||
7.4. Example Initial Registry Summary
|
||
|
||
The following is an example of how IANA might structure the initial
|
||
registry summary.html file:
|
||
|
||
Collation Functions Scope Reference
|
||
--------- --------- ----- ---------
|
||
Common Use Collations:
|
||
i;ascii-casemap e, o, s Local [RFC 4790]
|
||
|
||
Limited Use Collations:
|
||
i;octet e, o, s Other [RFC 4790]
|
||
i;ascii-numeric e, o Other [RFC 4790]
|
||
|
||
Vendor Collations:
|
||
|
||
Deprecated Collations:
|
||
|
||
|
||
References
|
||
----------
|
||
[RFC 4790] Newman, C., Duerst, M., Gulbrandsen, A., "Internet
|
||
Application Protocol Collation Registry", RFC 4790,
|
||
Sun Microsystems, March 2007.
|
||
|
||
8. Guidelines for Expert Reviewer
|
||
|
||
The expert reviewer appointed by the IESG has fairly broad latitude
|
||
for this registry. While a number of collations are expected
|
||
(particularly customizations of the UCA for localized use), an
|
||
explosion of collations (particularly common-use collations) is not
|
||
desirable for widespread interoperability. However, it is important
|
||
for the expert reviewer to provide cause when rejecting a
|
||
registration, and, when possible, to describe corrective action to
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 18]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
permit the registration to proceed. The following table includes
|
||
some example reasons to reject a registration with cause:
|
||
|
||
o The registration is not a well-formed XML document.
|
||
|
||
o The registration has an intended use of "common", but there is no
|
||
evidence the collation will be widely deployed, so it should be
|
||
listed as "limited".
|
||
|
||
o The registration has an intended use of "common", but it is
|
||
redundant with the functionality of a previously registered
|
||
"common" collation.
|
||
|
||
o The registration has an intended use of "common", but the
|
||
specification is not detailed enough to allow interoperable
|
||
implementations by others.
|
||
|
||
o The collation identifier fails to precisely identify the version
|
||
numbers of relevant tables to use.
|
||
|
||
o The registration fails to meet one of the "MUST" requirements in
|
||
Section 4.
|
||
|
||
o The collation identifier fails to meet the syntax in Section 3.
|
||
|
||
o The collation specification referenced in the registration is
|
||
vague or has optional features without a clear behavior specified.
|
||
|
||
o The referenced specification does not adequately address security
|
||
considerations specific to that collation.
|
||
|
||
o The registration's operations are needlessly different from those
|
||
of traditional operations.
|
||
|
||
o The registration's XML is needlessly different from that of
|
||
already registered collations.
|
||
|
||
9. Initial Collations
|
||
|
||
This section registers the three collations that were originally
|
||
defined in [11], and are implemented in most [14] engines. Some of
|
||
the behavior of these collations is perhaps not ideal, such as
|
||
i;ascii-casemap accepting non-ASCII input. Compatibility with widely
|
||
deployed code was judged more important than fixing the collations.
|
||
Some of the aspects of these collations are necessary to maintain
|
||
compatibility with widely deployed code.
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 19]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
9.1. ASCII Numeric Collation
|
||
|
||
9.1.1. ASCII Numeric Collation Description
|
||
|
||
The "i;ascii-numeric" collation is a simple collation intended for
|
||
use with arbitrarily-sized, unsigned decimal integer numbers stored
|
||
as octet strings. US-ASCII digits (0x30 to 0x39) represent digits of
|
||
the numbers. Before converting from string to integer, the input
|
||
string is truncated at the first non-digit character. All input is
|
||
valid; strings that do not start with a digit represent positive
|
||
infinity.
|
||
|
||
The collation supports equality and ordering, but does not support
|
||
the substring operation.
|
||
|
||
The equality operation returns "match" if the two strings represent
|
||
the same number (i.e., leading zeroes and trailing non-digits are
|
||
disregarded), and "no-match" if the two strings represent different
|
||
numbers.
|
||
|
||
The ordering operation returns "less" if the first string represents
|
||
a smaller number than the second, "equal" if they represent the same
|
||
number, and "greater" if the first string represents a larger number
|
||
than the second.
|
||
|
||
Some examples: "0" is less than "1", and "1" is less than
|
||
"4294967298". "4294967298", "04294967298", and "4294967298b" are all
|
||
equal. "04294967298" is less than "". "", "x", and "y" are equal.
|
||
|
||
9.1.2. ASCII Numeric Collation Registration
|
||
|
||
<?xml version='1.0'?>
|
||
<!DOCTYPE collation SYSTEM 'collationreg.dtd'>
|
||
<collation rfc="4790" scope="other" intendedUse="limited">
|
||
<identifier>i;ascii-numeric</identifier>
|
||
<title>ASCII Numeric</title>
|
||
<operations>equality order</operations>
|
||
<specification>RFC 4790</specification>
|
||
<owner>IETF</owner>
|
||
<submitter>chris.newman@sun.com</submitter>
|
||
</collation>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 20]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
9.2. ASCII Casemap Collation
|
||
|
||
9.2.1. ASCII Casemap Collation Description
|
||
|
||
The "i;ascii-casemap" collation is a simple collation that operates
|
||
on octet strings and treats US-ASCII letters case-insensitively. It
|
||
provides equality, substring, and ordering operations. All input is
|
||
valid. Note that letters outside ASCII are not treated case-
|
||
insensitively.
|
||
|
||
Its equality, ordering, and substring operations are as for i;octet,
|
||
except that at first, the lower-case letters (octet values 97-122) in
|
||
each input string are changed to upper case (octet values 65-90).
|
||
|
||
Care should be taken when using OS-supplied functions to implement
|
||
this collation, as it is not locale sensitive. Functions, such as
|
||
strcasecmp and toupper, are sometimes locale sensitive, and may
|
||
inappropriately map lower-case letters other than a-z to upper case.
|
||
|
||
The i;ascii-casemap collation is well-suited for use with many
|
||
Internet protocols and computer languages. Use with natural language
|
||
is often inappropriate; even though the collation apparently supports
|
||
languages such as Swahili and English, in real-world use, it tends to
|
||
mis-sort a number of types of string:
|
||
|
||
o people and place names containing non-ASCII,
|
||
|
||
o words such as "naive" (if spelled with an accent, the accented
|
||
character could push the word to the wrong spot in a sorted list),
|
||
|
||
o names such as "Lloyd" (which, in Welsh, sorts after "Lyon", unlike
|
||
in English),
|
||
|
||
o strings containing euro and pound sterling symbols, quotation
|
||
marks other than '"', dashes/hyphens, etc.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 21]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
9.2.2. ASCII Casemap Collation Registration
|
||
|
||
<?xml version='1.0'?>
|
||
<!DOCTYPE collation SYSTEM 'collationreg.dtd'>
|
||
<collation rfc="4790" scope="local" intendedUse="common">
|
||
<identifier>i;ascii-casemap</identifier>
|
||
<title>ASCII Casemap</title>
|
||
<operations>equality order substring</operations>
|
||
<specification>RFC 4790</specification>
|
||
<owner>IETF</owner>
|
||
<submitter>chris.newman@sun.com</submitter>
|
||
</collation>
|
||
|
||
9.3. Octet Collation
|
||
|
||
9.3.1. Octet Collation Description
|
||
|
||
The "i;octet" collation is a simple and fast collation intended for
|
||
use on binary octet strings rather than on character data. Protocols
|
||
that want to make this collation available have to do so by
|
||
explicitly allowing it. If not explicitly allowed, it MUST NOT be
|
||
used. It never returns an "undefined" result. It provides equality,
|
||
substring, and ordering operations.
|
||
|
||
The ordering algorithm is as follows:
|
||
|
||
1. If both strings are the empty string, return the result "equal".
|
||
|
||
2. If the first string is empty and the second is not, return the
|
||
result "less".
|
||
|
||
3. If the second string is empty and the first is not, return the
|
||
result "greater".
|
||
|
||
4. If both strings begin with the same octet value, remove the first
|
||
octet from both strings and repeat this algorithm from step 1.
|
||
|
||
5. If the unsigned value (0 to 255) of the first octet of the first
|
||
string is less than the unsigned value of the first octet of the
|
||
second string, then return "less".
|
||
|
||
6. If this step is reached, return "greater".
|
||
|
||
This algorithm is roughly equivalent to the C library function
|
||
memcmp, with appropriate length checks added.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 22]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
The matching operation returns "match" if the sorting algorithm would
|
||
return "equal". Otherwise, the matching operation returns "no-
|
||
match".
|
||
|
||
The substring operation returns "match" if the first string is the
|
||
empty string, or if there exists a substring of the second string of
|
||
length equal to the length of the first string, which would result in
|
||
a "match" result from the equality function. Otherwise, the
|
||
substring operation returns "no-match".
|
||
|
||
9.3.2. Octet Collation Registration
|
||
|
||
This collation is defined with intendedUse="limited" because it can
|
||
only be used by protocols that explicitly allow it.
|
||
|
||
<?xml version='1.0'?>
|
||
<!DOCTYPE collation SYSTEM 'collationreg.dtd'>
|
||
<collation rfc="4790" scope="global" intendedUse="limited">
|
||
<identifier>i;octet</identifier>
|
||
<title>Octet</title>
|
||
<operations>equality order substring</operations>
|
||
<specification>RFC 4790</specification>
|
||
<owner>IETF</owner>
|
||
<submitter>chris.newman@sun.com</submitter>
|
||
</collation>
|
||
|
||
10. IANA Considerations
|
||
|
||
Section 7 defines how to register collations with IANA. Section 9
|
||
defines a list of predefined collations that have been registered
|
||
with IANA.
|
||
|
||
11. Security Considerations
|
||
|
||
Collations will normally be used with UTF-8 strings. Thus, the
|
||
security considerations for UTF-8 [3], stringprep [6], and Unicode
|
||
TR-36 [8] also apply, and are normative to this specification.
|
||
|
||
12. Acknowledgements
|
||
|
||
The authors want to thank all who have contributed to this document,
|
||
including Brian Carpenter, John Cowan, Dave Cridland, Mark Davis,
|
||
Spencer Dawkins, Lisa Dusseault, Lars Eggert, Frank Ellermann, Philip
|
||
Guenther, Tony Hansen, Ted Hardie, Sam Hartman, Kjetil Torgrim Homme,
|
||
Michael Kay, John Klensin, Alexey Melnikov, Jim Melton, and Abhijit
|
||
Menon-Sen.
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 23]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
13. References
|
||
|
||
13.1. Normative References
|
||
|
||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||
Levels", BCP 14, RFC 2119, March 1997.
|
||
|
||
[2] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
||
Specifications: ABNF", RFC 4234, October 2005.
|
||
|
||
[3] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
|
||
STD 63, RFC 3629, November 2003.
|
||
|
||
[4] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
|
||
Resource Identifier (URI): Generic Syntax", RFC 3986,
|
||
January 2005.
|
||
|
||
[5] Phillips, A. and M. Davis, "Tags for Identifying Languages",
|
||
BCP 47, RFC 4646, September 2006.
|
||
|
||
[6] Hoffman, P. and M. Blanchet, "Preparation of Internationalized
|
||
Strings ("stringprep")", RFC 3454, December 2002.
|
||
|
||
[7] Davis, M. and K. Whistler, "Unicode Collation Algorithm version
|
||
14", May 2005,
|
||
<http://www.unicode.org/reports/tr10/tr10-14.html>.
|
||
|
||
[8] Davis, M. and M. Suignard, "Unicode Security Considerations",
|
||
February 2006, <http://www.unicode.org/reports/tr36/>.
|
||
|
||
13.2. Informative References
|
||
|
||
[9] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
|
||
Extensions (MIME) Part One: Format of Internet Message Bodies",
|
||
RFC 2045, November 1996.
|
||
|
||
[10] Melnikov, A., "Simple Authentication and Security Layer
|
||
(SASL)", RFC 4422, June 2006.
|
||
|
||
[11] Newman, C. and J. Myers, "ACAP -- Application Configuration
|
||
Access Protocol", RFC 2244, November 1997.
|
||
|
||
[12] Resnick, P., "Internet Message Format", RFC 2822, April 2001.
|
||
|
||
[13] Freed, N. and J. Postel, "IANA Charset Registration
|
||
Procedures", BCP 19, RFC 2978, October 2000.
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 24]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
[14] Showalter, T., "Sieve: A Mail Filtering Language", RFC 3028,
|
||
January 2001.
|
||
|
||
[15] Crispin, M., "Internet Message Access Protocol - Version
|
||
4rev1", RFC 3501, March 2003.
|
||
|
||
[16] Crispin, M. and K. Murchison, "Internet Message Access Protocol
|
||
- Sort and Thread Extensions", Work in Progress, May 2004.
|
||
|
||
[17] Newman, C. and A. Gulbrandsen, "Internet Message Access
|
||
Protocol Internationalization", Work in Progress, January 2006.
|
||
|
||
Authors' Addresses
|
||
|
||
Chris Newman
|
||
Sun Microsystems
|
||
1050 Lakes Drive
|
||
West Covina, CA 91790
|
||
USA
|
||
|
||
EMail: chris.newman@sun.com
|
||
|
||
|
||
Martin Duerst
|
||
Aoyama Gakuin University
|
||
5-10-1 Fuchinobe
|
||
Sagamihara, Kanagawa 229-8558
|
||
Japan
|
||
|
||
Phone: +81 42 759 6329
|
||
Fax: +81 42 759 6495
|
||
EMail: duerst@it.aoyama.ac.jp
|
||
URI: http://www.sw.it.aoyama.ac.jp/D%C3%BCrst/
|
||
|
||
Note: Please write "Duerst" with u-umlaut wherever possible, for
|
||
example as "Dürst" in XML and HTML.
|
||
|
||
|
||
Arnt Gulbrandsen
|
||
Oryx Mail Systems GmbH
|
||
Schweppermannstr. 8
|
||
81671 Munich
|
||
Germany
|
||
|
||
Fax: +49 89 4502 9758
|
||
EMail: arnt@oryx.com
|
||
URI: http://www.oryx.com/arnt/
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 25]
|
||
|
||
RFC 4790 Collation Registry March 2007
|
||
|
||
|
||
Full Copyright Statement
|
||
|
||
Copyright (C) The IETF Trust (2007).
|
||
|
||
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.
|
||
|
||
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, THE IETF TRUST 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.
|
||
|
||
Intellectual Property
|
||
|
||
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.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman, et al. Standards Track [Page 26]
|
||
|