Skip to main content

Representing Label Generation Rulesets using XML
draft-ietf-lager-specification-11

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 7940.
Authors Kim Davies , Asmus Freytag
Last updated 2016-05-12 (Latest revision 2016-03-20)
Replaces draft-davies-idntables
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state Submitted to IESG for Publication
Document shepherd Audric Schiltknecht
Shepherd write-up Show Last changed 2016-03-08
IESG IESG state Became RFC 7940 (Proposed Standard)
Consensus boilerplate Yes
Telechat date (None)
Needs a YES. Needs 10 more YES or NO OBJECTION positions to pass.
Responsible AD Alexey Melnikov
Send notices to "Audric Schiltknecht" <audric.schiltknecht@viagenie.ca>
IANA IANA review state IANA OK - Actions Needed
draft-ietf-lager-specification-11
" />
       </char>
       <char cp="636E">
       <var cp="636E" type="simp" comment="reflexive, but not both" />
       <var cp="64DA" type="trad" />
       <var cp="62E0" type="blocked" />
       </char>
       <char cp="64DA">
       <var cp="636E" type="simp" />
       <var cp="64DA" type="trad" comment="reflexive" />
       <var cp="62E0" type="blocked" />
       </char>

   To make such variant sets work requires a way to selectively trigger
   an action based on whether a variant type is associated with an
   identity or reflexive mapping, or is associated with an ordinary
   variant mapping.  This can be done by adding a prefix "r-" to the
   "type" attribute on reflexive variant mappings.  For example the
   "trad" for code point U+64DA in the preceding figure would become
   "r-trad".

   With the dispositions prepared in this way, only a slight
   modification to the actions is needed to yield the correct set of
   allocatable labels:

   <action disp="blocked" any-variant="blocked" />
   <action disp="allocatable" only-variants="simp r-simp both r-both" />
   <action disp="allocatable" only-variants="trad r-trad both r-both" />
   <action disp="blocked" all-variants="simp trad both" />
   <action disp="allocatable" />

   The first three actions get triggered by the same labels as before.

   The fourth action blocks any label that combines an original code
   point with any mix of ordinary variant mappings; however no labels
   that are a combination of only original code points (code points
   having either no variant mappings or a reflexive mapping) would be

Davies & Freytag       Expires September 21, 2016              [Page 62]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   affected.  These are the original labels and they are allocated in
   the last action.

   Using this scheme of assigning types to ordinary and reflexive
   variants, all RFC 3743-style tables can be converted to XML.  By
   defining a set of actions as outlined above, the LGR will yield the
   correct set of allocatable variants: all variants consisting
   completely of variant code points preferred for simplified or
   traditional, respectively, will be allocated, as will be the original
   label.  All other variant labels will be blocked.

Appendix C.  Indic Syllable Structure Example

   In LGRs for Indic scripts it may be desirable to restrict valid
   labels to sequences of valid Indic syllables, or aksharas.  This
   appendix gives a sample set of rules designed to enforce this
   restriction.

   An example of a BNF from for an akshara which has been published in
   "Devanagari Script Behavior for Hindi" [TDIL-HINDI].  The rules for
   other languages and scripts used in India are expected to be
   generally similar.

   For Hindi, the BNF has the form:

       V[m]|{C[N]H}C[N](H|[v][m])

   Where:

   V    (upper case) is any independent vowel

   m    is any vowel modifier (Devanagari Anusvara, Visarga, and
        Candrabindu)

   C    is any consonant (with inherent vowel)

   N    is Nukta

   H    is a Halant (or Virama)

   v    (lower case) is any dependent vowel sign (matra)

   {}   encloses items which may be repeated one or more times

   [ ]  encloses items which may or may not be present

   |    separates items, out of which only one can be present

Davies & Freytag       Expires September 21, 2016              [Page 63]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   By using the Unicode character property "InSC" or
   "Indic_Syllabic_Category" which corresponds rather directly to the
   classification of characters in the BNF above, we can translate the
   BNF into a set of WLE rules matching the definition of an akshara.

    <rules>
       <!--Character Class Definitions go here-->
       <class name="halant" property="InSC:Virama" />
       <union name="vowel-modifier">
         <class property="InSC:Visarga" />
         <class property="InSC:Bindu" comment="includes anusvara" />
       </union>
       <!--Whole label evaluation and Context rules go here-->
       <rule name="consonant-with-optional-nukta">
           <class by-ref="InSC:Consonant" />
           <class by-ref="InSC:Nukta"  count="0:1"/>
       </rule>
       <rule name="independent-vowel-with-optional-modifier">
           <class by-ref="InSC:Vowel_Independent" />
           <class by-ref="vowel-modifier"  count="0:1" />
       </rule>
       <rule name="optional-dependent-vowel-with-opt-modifier" >
         <class by-ref="InSC:Vowel_Dependent" count="0:1" />
         <class by-ref="vowel-modifier" count="0:1"  />
       </rule>
       <rule name="consonant-cluster">
         <rule count="0+">
           <rule by-ref="consonant-with-optional-nukta" />
           <class by-ref="halant" />
         </rule>
         <rule by-ref="consonant-with-optional-nukta" />
         <choice>
           <class by-ref="halant" />
           <rule by-ref="optional-dependent-vowel-with-opt-modifier" />
         </choice>
       </rule>
       <rule name="akshara">
         <choice>
           <rule by-ref="independent-vowel-with-optional-modifier" />
           <rule by-ref="consonant-cluster" />
         </choice>
       </rule>
       <rule name="WLE-akshara-or-other" comment="series of one or
           more aksharas, possibly alternating with other types of
           code points such as digits">
         <start />
         <choice count="1+">
           <class property="InSC:other"  />

Davies & Freytag       Expires September 21, 2016              [Page 64]
Internet-Draft      Label Generation Rulesets in XML          March 2016

           <rule by-ref="akshara"  />
         </choice>
         <end />
       </rule>
       <!--Action elements go here - order defines precedence-->
       <action disp="invalid" not-match="WLE-akshara-or-other" />
     </rules>

   With the rules and classes as defined above, the final action assigns
   a disposition of "invalid" to all labels that are not composed of a
   sequence of well-formed aksharas, optionally interspersed with other
   characters, perhaps digits, for example.

   The relevant Unicode character property could be replicated by
   tagging repertoire values directly in the LGR which would remove the
   dependency on any specific version of the Unicode Standard.

   Generally, dependent vowels may only follow consonant expressions,
   however, for some scripts, like Bengali, the Unicode standard
   supports sequences of dependent vowels or their application on
   independent vowels.  This makes the definition of akshara less
   restrictive.

   It is possible to reduce the complexity of these rules by defining
   alternate rules which simply define the permissible pair-wise context
   of adjacent code points by character class--such as the rule that a
   Halant can only follow a (nuktated) consonant.  (See the example in
   [WLE-RULES]).

Appendix D.  RelaxNG Compact Schema

   <CODE BEGINS>
   #
   # LGR XML Schema 1.0
   #

   default namespace = "urn:ietf:params:xml:ns:lgr-1.0"

   #
   # SIMPLE TYPES
   #

   # RFC 5646 language tag (e.g. "de", "und-Latn", etc.)
   language-tag = xsd:token

   # The scope to which the LGR applies. For the "domain" scope type it
   # should be a fully qualified domain name.
   scope-value = xsd:token {

Davies & Freytag       Expires September 21, 2016              [Page 65]
Internet-Draft      Label Generation Rulesets in XML          March 2016

       minLength = "1"
   }

   ## a single code point
   code-point = xsd:token {
       pattern = "[0-9A-F]{4,6}"
   }

   ## a space-separated sequence of code points
   code-point-sequence = xsd:token {
       pattern = "[0-9A-F]{4,6}( [0-9A-F]{4,6})+"
   }

   ## single code point, or a sequence of code points, or empty string
   code-point-literal = code-point | code-point-sequence | ""

   ## code point or sequence only
   non-empty-code-point-literal = code-point | code-point-sequence

   ## code point sent represented in short form
   code-point-set-shorthand = xsd:token {
       pattern = "([0-9A-F]{4,6}|[0-9A-F]{4,6}-[0-9A-F]{4,6})"
                 ~ "( ([0-9A-F]{4,6}|[0-9A-F]{4,6}-[0-9A-F]{4,6}))*"
   }

   ## dates are used in information fields in the meta
   ## section ("YYYY-MM-DD")
   date-pattern = xsd:token {
       pattern = "\d{4}-\d\d-\d\d"
   }

   ## variant type
   ## the variant type MUST be non-emtpy and MUST NOT
   ## start with a "_", using xsd:NMTOKEN here because
   ## we need space-separated lists of them
   variant-type = xsd:NMTOKEN

   ## variant type list for action triggers
   ## the list MUST NOT be empty and entries MUST NOT
   ## start with a "_"
   variant-type-list = xsd:NMTOKENS

   ## reference to a rule name (used in "when" and "not-when"
   ## attributes, as well as the "by-ref" attribute of the "rule"
   ## element.)
   rule-ref = xsd:IDREF

   ## a space-separated list of tags. Tags should generally follow

Davies & Freytag       Expires September 21, 2016              [Page 66]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   ## xsd:Name syntax. However, we are using the xsd:NMTOKENS here
   ## because there is no native XSD datatype for space-separated
   ## xsd:Name
   tags = xsd:NMTOKENS

   ## The value space of a "from-tag" attribute. Although it is closer
   ## to xsd:IDREF lexically and semantically, tags are not unique in
   ## the document. As such, we are unable to take advantage of
   ## facilities provided by a validator. xsd:NMTOKEN is used instead of
   ## the stricter xsd:Names here so as to be consistent with the above.
   tag-ref = xsd:NMTOKEN

   ## an identifier type (used by "name" attributes).
   identifier = xsd:ID

   ## used in the class "by-ref" attribute to reference another class of
   ## the same "name" attribute value.
   class-ref = xsd:IDREF

   ## count attribute pattern ("n", "n+" or "n:m")
   count-pattern = xsd:token {
       pattern = "\d+(\+|:\d+)?"
   }

   ## ref attribute pattern
   ## space separated list of id attribute valiues for
   ## reference elements. These reference ids
   ## must be declared in a reference element
   ## before they can be used in a ref attribute
   ref-pattern = xsd:token {
       pattern = "[\-_.:0-9A-Z]+( [\-_.:0-9A-Z]+)*"
   }

   #
   # STRUCTURES
   #

   ## Representation of a single code point, or a sequence of code
   ## points
   char = element char {
       attribute cp { code-point-literal },
       attribute comment { text }?,
       attribute when { rule-ref }?,
       attribute not-when { rule-ref }?,
       attribute tag { tags }?,
       attribute ref { ref-pattern }?,
         variant*
   }

Davies & Freytag       Expires September 21, 2016              [Page 67]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   ## Representation of a range of code points
   range = element range {
       attribute first-cp { code-point },
       attribute last-cp { code-point },
       attribute comment { text }?,
       attribute when { rule-ref }?,
       attribute not-when { rule-ref }?,
       attribute tag { tags }?,
       attribute ref { ref-pattern }?
   }

   ## Representation of a variant code point or sequence
   variant = element var {
       attribute cp { code-point-literal },
       attribute type { xsd:NMTOKEN }?,
       attribute when { rule-ref }?,
       attribute not-when { rule-ref }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?
   }

   #
   # Classes
   #

   ## a "class" element that references the name of another "class"
   ## (or set-operator like "union") defined elsewhere.
   ## If used as a matcher (appearing under a "rule" element),
   ## the "count" attribute may be present.
   class-invocation = element class {
       attribute by-ref { class-ref },
       attribute count { count-pattern }?,
       attribute comment { text }?
   }

   ## defines a new class (set of code points) using Unicode property
   ## or code points of the same tag value or code point literals
   class-declaration = element class {
       # "name" attribute MUST be present if this is a "top-level"
       # class declaration, i.e. appearing directly under the "rules"
       # element. Otherwise, it MUST be absent.
       attribute name { identifier }?,
       # If used as a matcher (appearing in a "rule" element, but not
       # when nested inside a set operator or class), the "count"
       # attribute may be present. Otherwise, it MUST be absent.
       attribute count { count-pattern }?,

Davies & Freytag       Expires September 21, 2016              [Page 68]
Internet-Draft      Label Generation Rulesets in XML          March 2016

       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       (
         # define the class by property (e.g. property="sc:Latn"), OR
         attribute property { xsd:NMTOKEN }
         # define the class by tagged code points, OR
         | attribute from-tag { tag-ref }
         # text node to allow for shorthand notation
         # e.g. "0061 0062-0063"
         | code-point-set-shorthand
       )
     }

   class-or-set-operator-nested =
     class-invocation | class-declaration | set-operator

   class-or-set-operator-declaration =
     # a "class" element or set operator (effectively defining a class)
     # directly in the "rules" element.
     class-declaration | set-operator

   #
   # Set operators
   #

   complement-operator = element complement {
       attribute name { identifier }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # "count" attribute MUST only be used when this set-operator is
       # used as a matcher (i.e. nested in a <rule> element but not
       # inside a set-operator or class)
       attribute count { count-pattern }?,
       class-or-set-operator-nested
   }

   union-operator = element union {
       attribute name { identifier }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # "count" attribute MUST only be used when this set-operator is
       # used as a matcher (i.e. nested in a <rule> element but not
       # inside a set-operator or class)
       attribute count { count-pattern }?,
       class-or-set-operator-nested,
       # needs two or more child elements
       class-or-set-operator-nested+

Davies & Freytag       Expires September 21, 2016              [Page 69]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   }

   intersection-operator = element intersection {
       attribute name { identifier }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # "count" attribute MUST only be used when this set-operator is
       # used as a matcher (i.e. nested in a <rule> element but not
       # inside a set-operator or class)
       attribute count { count-pattern }?,
       class-or-set-operator-nested,
       class-or-set-operator-nested
   }

   difference-operator = element difference {
       attribute name { identifier }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # "count" attribute MUST only be used when this set-operator is
       # used as a matcher (i.e. nested in a <rule> element but not
       # inside a set-operator or class)
       attribute count { count-pattern }?,
       class-or-set-operator-nested,
       class-or-set-operator-nested
   }

   symmetric-difference-operator = element symmetric-difference {
       attribute name { identifier }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # "count" attribute MUST only be used when this set-operator is
       # used as a matcher (i.e. nested in a <rule> element but not
       # inside a set-operator or class)
       attribute count { count-pattern }?,
       class-or-set-operator-nested,
       class-or-set-operator-nested
   }

   ## operators that transform class(es) into a new class.
   set-operator = complement-operator
                  | union-operator
                  | intersection-operator
                  | difference-operator
                  | symmetric-difference-operator

   #
   # Match operators (matchers)
   #

Davies & Freytag       Expires September 21, 2016              [Page 70]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   any-matcher = element any {
       attribute count { count-pattern }?,
       attribute comment { text }?
   }

   choice-matcher = element choice {
       ## "count attribute MUST only be used when the choice-matcher
       ## contains no nested "start", "end", "anchor", "look-behind"
       ## or "look-ahead" operators and no nested rule-matchers
       ## containing any of these elements
       attribute count { count-pattern }?,
       attribute comment { text }?,
       # two or more match operators
       match-operator-choice,
       match-operator-choice+
   }

   char-matcher =
     # for use as a matcher - like "char" but without a "tag" attribute
     element char {
       attribute cp { non-empty-code-point-literal },
       # If used as a matcher (appearing in a "rule" element), the
       # "count" attribute may be present. Otherwise, it MUST be
       # absent.
       attribute count { count-pattern }?,
       attribute comment { text }?,
       attribute ref { ref-pattern }?
   }

   start-matcher = element start {
       attribute comment { text }?
   }

   end-matcher = element end {
       attribute comment { text }?
   }

   anchor-matcher = element anchor {
       attribute comment { text }?
   }

   look-ahead-matcher = element look-ahead {
       attribute comment { text }?,
       match-operators-non-pos
   }
   look-behind-matcher = element look-behind {
       attribute comment { text }?,
       match-operators-non-pos

Davies & Freytag       Expires September 21, 2016              [Page 71]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   }

   ## non-positional match operator that can be used as a direct child
   ## element of the choice matcher.
   match-operator-choice = (
     any-matcher | choice-matcher | start-matcher | end-matcher
     | char-matcher | class-or-set-operator-nested | rule-matcher
   )

   ## non-positional match operators do not contain any anchor,
   ## look-behind or look-ahead elements.
   match-operators-non-pos = (
     start-matcher?,
     (any-matcher | choice-matcher | char-matcher
      | class-or-set-operator-nested | rule-matcher)*,
     end-matcher?
   )

   ## positional match operators have an anchor element, which may be
   ## preceeded by a look-behind element, or followed by a look-ahead
   ## element, or both.
   match-operators-pos =
     look-behind-matcher?, anchor-matcher, look-ahead-matcher?

   match-operators = match-operators-non-pos | match-operators-pos

   #
   # Rules
   #

   # top-level rule must have "name" attribute
   rule-declaration-top = element rule {
       attribute name { identifier },
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       match-operators
   }

   ## rule element used as a matcher (either by-ref or contains other
   ## match operators itself)
   rule-matcher =
     element rule {
       ## "count attribute MUST only be used when the rule-matcher
       ## contains no nested "start", "end", "anchor", "look-behind"
       ## or "look-ahead" operators and no nested rule-matchers
       ## containing any of these elements
       attribute count { count-pattern }?,

Davies & Freytag       Expires September 21, 2016              [Page 72]
Internet-Draft      Label Generation Rulesets in XML          March 2016

       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       (attribute by-ref { rule-ref } | match-operators)
     }

   #
   # Actions
   #

   action-declaration = element action {
       attribute comment { text }?,
       attribute ref { ref-pattern }?,
       # dispositions are often named after variant types or vice versa
       attribute disp { variant-type },
       ( attribute match { rule-ref }
         | attribute not-match { rule-ref } )?,
       ( attribute any-variant { variant-type-list }
         | attribute all-variants { variant-type-list }
         | attribute only-variants { variant-type-list } )?
   }

   # DOCUMENT STRUCTURE

   start = lgr
   lgr = element lgr {
       meta-section?,
       data-section,
       rules-section?
   }

   ## Meta section - information recorded with an label
   ## generation ruleset that generally does not affect machine
   ## processing (except for unicode-version).
   ## However, if any "class-declaration" uses the "property" attribute
   ## a unicode-version MUST be present.
   meta-section = element meta {
       element version {
           attribute comment { text }?,
           text
       }?
       & element date { date-pattern }?
       & element language { language-tag }*
       & element scope {
           # type may by "domain" or an application-defined value
           attribute type { xsd:NCName },
           scope-value
       }*

Davies & Freytag       Expires September 21, 2016              [Page 73]
Internet-Draft      Label Generation Rulesets in XML          March 2016

       & element validity-start { date-pattern }?
       & element validity-end { date-pattern }?
       & element unicode-version {
           xsd:token {
               pattern = "\d+\.\d+\.\d+"
           }
       }?
       & element description {
           # this SHOULD be a valid MIME type
           attribute type { text }?,
           text
       }?
       & element references {
           element reference {
               attribute id {
                   xsd:token {
                       # limit id attribute to uppercase letters,
                       # digits and a few punctuation marks; use of
                       # integers is RECOMMENDED
                       pattern = "[\-_.:0-9A-Z]*"
                       minLength = "1"
                   }
                },
                attribute comment { text }?,
                text
           }*
       }?
   }

   data-section = element data { (char | range)+ }

   ## Note that action declarations are strictly order dependent.
   ## class-or-set-operator-declaration and rule-declaration-top
   ## are weakly order dependent, they must precede first use of the
   ## identifier via by-ref.
   rules-section = element rules {
     ( class-or-set-operator-declaration
       | rule-declaration-top
       | action-declaration)*
   }

   <CODE ENDS>

Appendix E.  Acknowledgements

   This format builds upon the work on documenting IDN tables by many
   different registry operators.  Notably, a comprehensive language
   table for Chinese, Japanese and Korean was developed by the "Joint

Davies & Freytag       Expires September 21, 2016              [Page 74]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   Engineering Team" [RFC3743] that is the basis of many registry
   policies; and a set of guidelines for Arabic script registrations
   [RFC5564] was published by the Arabic-language community.

   Contributions that have shaped this document have been provided by
   Francisco Arias, Julien Bernard, Mark Davis, Martin Duerst, Paul
   Hoffman, Sarmad Hussain, Barry Leiba, Alexander Mayrhofer, Nicholas
   Ostler, Thomas Roessler, Audric Schiltknecht, Steve Sheng, Michel
   Suignard, Andrew Sullivan, Wil Tan and John Yunker.

Appendix F.  Change History

   This appendix to be removed prior to final publication.

   draft-davies-idntables-00  Initial draft.

   draft-davies-idntables-01  Add an XML Namespace, and fix other XML
        nits.  Add support for sequences of code points.  Improve on
        consistently using Unicode nomenclature.

   draft-davies-idntables-02  Add support for validity periods.

   draft-davies-idntables-03  Incorporate requirements from the Label
        Generation Ruleset Procedure for the DNS Root Zone.  These
        requirements include a detailed grammar for specifying whole-
        label variants, and the ability to explicitly declare of the
        actions associated with a specific variant.  The document also
        consistently applies the term "Label Generation Ruleset", rather
        than "IDN table", to reflect the policy term now being used to
        describe these.

   draft-davies-idntables-04  Support reference information per
        [RFC3743].  Update description in response to feedback.  Extend
        the context rules to "char" elements and allow for inverse
        matching ("not-when").  Extend the description of label
        processing and implied actions, and allow for actions that
        reference disposition attributes on any or all variant mappings
        used in the generation of a variant label.

   draft-davies-idntables-05  Change the name of the "disposition"
        attribute to "disp".  Add comment attribute on version and
        reference elements.  Allow empty "cp" attributes in char
        elements to support expressing symmetric mapping of null
        variants.  Describe use of variants that map identically.
        Clarify how actions are triggered, in particular based on
        variant dispositions, as well as description of default actions.
        Revise description of processing a label and its variants.  Move
        example table at the head of appendices.  Add "only-variants"

Davies & Freytag       Expires September 21, 2016              [Page 75]
Internet-Draft      Label Generation Rulesets in XML          March 2016

        attribute.  Change "name" attribute to "by-ref" attribute for
        referencing named classes and rules.  Change "not" to
        "complement".  Remove "match" attribute on rules as redundant if
        "start" and "end" are supported.  Rename "match" element to
        "anchor" as better fitting its function and removing confusion
        with both the "match" attribute on actions as well as the
        generic term Match Operator.  Augmented the examples relevant to
        [RFC3743].

   draft-davies-idntables-06  Extend the discussion of reflexive
        variants and their use; includes update of the appendix on
        converting tables in the style of [RFC3743].  Improve
        description of tagging and clarify that it doesn't apply to
        sequences.  Specify that root zone uses ".".  Add an appendix
        with an Indic Syllable Structure example.  Extend count
        attribute to allow maximal counts.

   draft-davies-idntables-07  Change "byref" to "by-ref".  Add list of
        recommended properties.  Change "location" to "positional" for
        collective name of start/end match operators.  Use from-tag
        instead of by-ref for tag-based classes.  Made optional or
        mutually exclusive nature of some attributes more explicit.
        Allowing "comment" attributes on all child elements of "rules"
        except "char" and "range" elements used as child elements of
        "class".  Recast the design goals and requirements at the start
        of the document.  Reword aspects of the document to make it
        clear the format's application is not limited only to domain
        names.

   draft-davies-idntables-08  Change "domain" to scope with
        type="domain".  Reword in several places for clarity.  Flesh out
        note on security.  Change "disp" to "type" for variants, to mark
        that these attributes do not necessarily correspond one-to-one
        to variant label dispositions.  Add example of variant type
        triggers.  Remove "long form" of class definition.

   draft-davies-idntables-09  Grammatical updates, clarity improvements.
        Altered some DNS-specific terminology.

   draft-davies-idntables-10  Added convention for out-of-repertoire
        variants, additional examples of when rules in the context of
        symmetry, isolated minor copy editing.  Use a URN as the XML
        namespace (provisional).  Specify a media type for the file.

   draft-ietf-lager-specification-00  Update to reflect adoption as a
        work item by the IETF LAGER working group.

Davies & Freytag       Expires September 21, 2016              [Page 76]
Internet-Draft      Label Generation Rulesets in XML          March 2016

   draft-ietf-lager-specification-01  Update to reflect decisions in
        first interim meeting of IETF LAGER working group.  Correcting a
        number of typos, added section on contextual conditions,
        clarified language on how actions are triggered, and changed
        "block", "allocate" and "activate" to "blocked", "allocatable".
        and "activated".  Other minor changes.

   draft-ietf-lager-specification-02  Minor changes.

   draft-ietf-lager-specification-03  Update to fix a typo in the
        schema, and clarify the use of reflexive variants in checking
        label validity.  Added security consideration for naive
        implementations of permuted labels and WLE rules.  Added
        discussion of error conditions under which duplicate variant
        labels might be created.  Other minor changes.

   draft-ietf-lager-specification-04  Updated XML namespace in the
        RelaxNG schema.

   draft-ietf-lager-specification-05  Add IANA Considerations for media
        type registration, URN registration and instantiating a
        dispositions registry.  Split references into normative and
        informative.  Describe a tighter restriction on permissible
        values for "ref" attributes.  Clarify when "count" attributes
        are permitted.  Typos fixed.  Checked the schema against the
        specification and made corrections as well as replaced the
        "text" datatype with less permissive types for most attributes.

   draft-ietf-lager-specification-06  Change eligibility required for
        disposition registration to be Specification Required, rather
        than Standards Track.  Restore schema in appendix.  Move
        registration related procedures to informative references.

   draft-ietf-lager-specification-07  Clarify the way the values of the
        "property" attribute are constructed from the attribute name and
        value in [UAX42].  Minor fixes to examples and wording for a few
        of the match operators and the description for reflexive
        variants.  Clarified default action, added new disposition named
        "valid" and changed "catch-all" action to a disposition of
        "valid".  Removed an ambiguity in the evaluation of labels for
        LGRs that define sequences of code points as elements.  Added
        change controller for media type.

   draft-ietf-lager-specification-08  Minor typographical fixes.

   draft-ietf-lager-specification-09  Incorporated feedback from LAGER
        WG Last Call.  Fixed examples in 4.4.1 and 5.2.1.  Reviewed
        usage of RFC 2119 language, and other editorial suggestions.

Davies & Freytag       Expires September 21, 2016              [Page 77]
Internet-Draft      Label Generation Rulesets in XML          March 2016

        Removed "und-Jpan" example as "ja" would suffice in normal
        cases.  Document approach to expanding "scope" element.

   draft-ietf-lager-specification-10  Minor ID-nits related edits.
        Integrate feedback on media type registration.

   draft-ietf-lager-specification-11  Integrate feedback from AD review.

Authors' Addresses

   Kim Davies
   Internet Corporation for Assigned Names and Numbers
   12025 Waterfront Drive
   Los Angeles, CA  90094
   US

   Phone: +1 310 301 5800
   Email: kim.davies@icann.org
   URI:   http://www.icann.org/

   Asmus Freytag
   ASMUS Inc.

   Email: asmus@unicode.org

Davies & Freytag       Expires September 21, 2016              [Page 78]