Keyword Guidelines for OASIS Specifications and Standards

This document provides guidelines for using keywords from [RFC2119] and [ISO/IEC Directives] when writing specifications. A mapping table between the two keyword types to assist editors changing a specification from one style to the other can be found in Appendix C. The target audience is primarily specification writers and TC members.

Status: TAB-approved deliverable.

Editor(s): Patrick Durusau

  1. Introduction
  2. References
  3. Keywords in OASIS TC Specifications and Standards
    1. Introduction to Keywords
    2. Keywords and Normative Text
    3. RFC 2119 Rules
      1. RFC 2119 Rules
      2. RFC 2119 Examples
        1. MUST
        2. MUST NOT
        3. SHOULD or RECOMMENDED
        4. SHOULD NOT
        5. MAY
        6. OPTIONAL
    4. ISO/IEC Directives, Annex H
      1. ISO/IEC Directives Introduction
      2. ISO/IEC Directives Examples
        1. SHALL
        2. SHALL NOT
        3. SHOULD
        4. SHOULD NOT
        5. NEED NOT
        6. CAN
        7. CANNOT
  4. OASIS non-normative documents: TC Notes (Non-normative Documents)
  5. Appendix A – RFC Keywords
  6. Appendix B – ISO/IEC Keywords
  7. Appendix C – Mapping Table of RFC2119 to ISO keywords and suggested synonyms
  8. FAQ – Frequently Asked Questions
  1. Introduction

    Keywords establish the requirements that implementers follow in conforming to OASIS specifications and standards.

    This guide explains how to use two of the more popular keyword sets, [RFC2119] and [ISO/IEC Directives]. After explaining the basic rules for each keyword set, we provide examples of the keywords in use in OASIS specifications.

  2. References

    [ISO/IEC Directives] ISO/IEC Directives, Part 2 (Fifth Edition) Rules for the structure and drafting of International Standards, International Organization for Standardization and International Electrotechnical Commission, 2004.

    [RFC 2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, March 1997. (http://www.ietf.org/rfc/rfc2119.txt)

  3. Keywords in OASIS TC Specifications and Standards
    1. Introduction to Keywords

      The term keywords for OASIS specifications or standards means terms specified either by [RFC 2119] or the [ISO/IEC Directives]. Every OASIS specification or standard will choose (and use) one or the other. The two keyword sets are never mixed in a specification or standard.

      Keywords identify the requirements for conforming to a specification or standard. RFC 2119 gives the following guidance on keywords (called “imperatives”)

      Imperatives of the type defined in this memo must be used with care and sparingly. In particular, they MUST only be used where it is actually required for interoperation or to limit behavior which has potential for causing harm (e.g., limiting retransmisssions) For example, they must not be used to try to impose a particular method on implementors where the method is not required for interoperability. [RFC2119]

      For example, ODF 1.2 went to great lengths to say how the format was written and to specify its semantics. However, not one word was said about how an implementation would accomplish that task. It wasn’t relevant. It could be an in-memory table, graph, key-value data store, etc. The only thing ODF 1.2 constrains is how to interpret the markup and how to write it back out.

      Normative contents don’t always use keywords. Often a descriptive or declarative style reads better than an imperative style based on keywords. In that case, such content may still be referred to by a more general statement — e.g. in a conformance clause — where normative keywords are used to clearly indicate what is expected from a conforming implementation.

      In a very real sense, ODF 1.2 is a collection of statements about elements and attributes, which are then referred to by keywords, should you want to conform to the ODF 1.2 standard.

      For example, under 19.402 Presentation Node Type, one would not say:

      The presentation:node-type attribute MUST specify a node type for an animation element.(incorrect)

      Rather, as the standard reports:

      The presentation:node-type attribute specifies a node type for an animation element.

      The defined values for the presentation:node-type attribute are:

      This has the advantage of freeing the author to write in simple, declarative prose and to save the hard part of keywords for conformance clauses.

    2. Keywords and Normative Text

      “Normative” text includes the parts of a specification or standard that set forth definitions, rules, conformance clauses and other statements that are part of a standard.

      By way of contrast, “informative” text contains material that may help understand the standard or give examples of its use, but that don’t have to be followed in order to implement the specification or standard.

      The distinction is an important one because keywords cannot appear as keywords in informative text. The reason being that readers might confuse purely informative text with normative text if keywords were found in informative text.

      Conformance to a standard requires that everyone recognize normative and informative text the same way. Use of keywords in informative text interferes with a uniform reading of text as normative or informative.

      Some examples of informative text include: notices, tables of contents, introductions, notes, examples, appendices (appendices can be normative if marked), etc.

    3. RFC 2119 Rules
      1. RFC 2119 Rules Introduction

        [RFC 2119] keywords are the most common keywords used in OASIS TC specifications and standards to define normative statements and conformance clauses.

        [RFC 2119] keywords are written in UPPERCASE. When [RFC2119] keywords are written in lowercase, they have only their normal English usage meaning. In lowercase, [RFC2119] keywords do not state normative or conformance requirements.1

        WARNING: Changing an [RFC 2119] keyword, such as lowercase “must” to UPPERCASE “MUST”, changes the conformance requirements of a specification. If that happens, it is a material change that requires a public review.

        Appendix A reproduces the [RFC 2119] definitions of keywords.

      2. RFC 2119 Examples
        1. MUST

          “A PullRequest signal message always indicates in its header (see Section 5.2.3.1) the MPC on which the message must be pulled. If no MPC is explicitly identified, the default MPC MUST be pulled from. The pulled message sent in response MUST have been assigned to the indicated MPC.” (OASIS ebXML Messaging Services Version 3.0: Part 1, Core Features, 3.4.3. Definition and Usage Requirements.)

          Note that “must” appears in lower and upper case. In the first sentence, “must” only indicates the intended objective or effect one wants to produce. The second and thirds uses, in upper case, are requirements that must be met in order to conform to ebXML.

        2. MUST NOT

          “OData-defined system query options are prefixed with “$”. Services may support additional query options not defined in the OData specification, but they MUST NOT begin with the “$” or “@” character.” (OData Version 4.0 Part 1: Protocol, Committee Specification Draft 02 /, Public Review Draft 02, 6.1 Query Option Extensibility.)

          Here MUST NOT appears in upper case and announces a requirement conforming to Odata.

        3. SHOULD or RECOMMENDED

          “If the eb:PartyId/@type attribute is not present, the content of the PartyId element MUST be a URI [RFC2396], otherwise the Receiving MSH SHOULD report a “ValueInconsistent” error with severity “error”. It is strongly RECOMMENDED that the content of the eb:PartyId element be a URI.” (OASIS ebXML Messaging Services Version 3.0: Part 1, Core Features, .5.2.2.4. eb:Messaging/eb:UserMessage/eb:PartyInfo/eb:From/eb:PartyId.)

          The use of RFC 2119 SHOULD and RECOMMENDED are shown by use of upper case. The example specification has numerous uses of “should” in lower case, i.e., in normal English usage. The “strongly RECOMMENDED” does not require “report[ing of] a ValueInconsistent error,” but the implications of not doing so must be understood before making that choice.

        4. SHOULD NOT

          “OData services SHOULD NOT require any query options to be specified in a request. Services SHOULD fail any request that contains query options that they not understand and MUST fail any request that contains unsupported OData query options defined in the version of this specification supported by the service.”(OData Version 4.0 Part 1: Protocol, Committee Specification Draft 02 /, Public Review Draft 02, 6.1 Query Option Extensibility.)

          It is recommended that ODATA services not require query options be specified in a request but, after considering all the implications, an implementation may do so.

        5. MAY

          “Policy sets MAY be included in an enclosing <PolicySet> element either directly using the <PolicySet> element or indirectly using the <PolicySetIdReference> element. Policies MAY be included in an enclosing <PolicySet> element either directly using the <Policy> element or indirectly using the <PolicyIdReference> element.” (eXtensible Access Control Markup Language (XACML) Version 3.0, 5 Syntax (normative, with the exception of the schema fragments)

          A correct usage of MAY as a keyword but also an illustration of designating part of a section as normative.

        6. OPTIONAL

          “The <Response> element encapsulates the authorization decision produced by the PDP. It includes a sequence of one or more results, with one <Result> element per requested resource. Multiple results MAY be returned by some implementations, in particular those that support the XACML Profile for Requests for Multiple Resources [Multi]. Support for multiple results is OPTIONAL.” (eXtensible Access Control Markup Language (XACML) Version 3.0, 5 Syntax (normative, with the exception of the schema fragments)

          Be aware of OPTIONAL as an alternative to MAY when required by the text.

    4. ISO/IEC Directives, Annex H
      1. ISO/IEC Directives Introduction

        Unlike [RFC 2119], Annex H of [ISO/IEC Directives] does not distinguish between upper and lower case forms of its keywords. Using the [ISO/IEC Directives], an author can write keywords in upper or lower case. Annex H does define equivalent expressions for keywords, to be used in exceptional cases.

        For consistency with RFC2119, normative OASIS work products should use ISO keywords in uppercase, if they are using ISO keywords.

        Appendix B summarizes the definitions in Annex H.

      2. ISO/IEC Directives Examples

        In the ISO/IEC examples note that keywords do not require UPPER case or bolding in order to be keywords. They are keywords by definition, not typography. If you need a verbal alternative to “shall,” those are defined in Annex H of [ISO/IEC Directives]. An attempt at non-keyword alternatives to “shall” appears in Appendix C of this document.

        1. SHALL

          “An OpenDocument document shall meet the following requirements:” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 2.2.1 OpenDocument Document.)

        2. SHALL NOT

          “OpenDocument extended documents may contain elements and attributes not defined by the OpenDocument schema. Elements and attributes not defined by the OpenDocument schema are called foreign elements and attributes. Foreign elements and attributes shall not be associated with a namespace that is listed in tables 1, 2 or 3 of section 1.5.” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 3.17 Foreign Elements and Attributes.)

        3. SHOULD

          “The generator string should allow OpenDocument consumers to distinguish between all released versions of a producer.” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 4.3.2.1 <meta:generator>.)

        4. SHOULD NOT

          “consumers should not permit characters defined by the [SQL] feature F392 for new or changed names of tables, views, columns, and queries.” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 19.49 db:enable-sql92-check.)

        5. NEED NOT

          “letters in a custom shape need not have the same height.” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 19.224 draw:text-path-same-letter-heights.)

        6. CAN

          “The draw:transform attribute specifies a list of transformations that can be applied to a drawing shape.” (Open Document Format for Office Applications (OpenDocument) Version 1.2, 19.228 draw:transform.)

        7. CANNOT

          “The boslevel value cannot cause entities to be included in the BOS if doing so would exceed the maximum BOS level.” (ISO/IEC 10179:1996 Document Style Semantics and Specification Language, 6.5.2 HyTime BOS control data attributes.)

  4. OASIS non-normative documents: TC Notes (Non-normative Documents)

    OASIS TC Notes (non-normative documents) do not specify conformance clauses. To avoid confusion with OASIS TC Specifications and Standards, citation of or use of [RFC 2119] or [ISO/IEC Directives] should be avoided in OASIS TC Notes (Non-normative Documents).

  5. Appendix A – RFC Keywords

    [RFC2119] defines its keywords as follows2:

    “1. MUST This word, or the terms “REQUIRED” or “SHALL”, mean that the definition is an absolute requirement of the specification.

    2. MUST NOT This phrase, or the phrase “SHALL NOT”, mean that the definition is an absolute prohibition of the specification.

    3. SHOULD This word, or the adjective “RECOMMENDED”, mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.

    4. SHOULD NOT This phrase, or the phrase “NOT RECOMMENDED” mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.

    5. MAY This word, or the adjective “OPTIONAL”, mean that an item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.)”

  6. Appendix B – ISO/IEC Keywords

    ISO/IEC keywords are defined in Annex H of the [ISO/IEC Directives].

    TCs that use ISO/IEC keywords should consult Annex H for the normative definitions of those keywords. For use with the mapping table in Appendix C, a synopsis of Annex H reads as follows:

    • shall – to indicate requirements strictly to be followed in order to conform to the standard and in which no deviation is permitted. Do not use “must” as an alternative for “shall”.

    • shall not – converse of shall. Do not use “must not” instead of “shall not”.

    • should – to indicate that among several possibilities one is recommended as particularly suitable, without mentioning or excluding others.

    • should not – converse of should.

    • may – to indicate a course of action permissible within the limits of the standard. Do not use “can” instead of “may”

    • need not – to indicate a course of action is not required. (converse of may)

    • can – statement of possibility and capability, whether material, physical, or causal.

    • cannot – converse of can.

    Annex H also defines equivalent expressions for keywords, to be used in exceptional cases. See Annex H, [ISO/IEC Directives] for the details.

  7. Appendix C – Mapping Table of RFC2119 to ISO keywords and suggested synonyms

    Table 1 lists semantic equivalents between RFC2119 and ISO keywords. Where there is an empty cell, this means there is no equivalent in that set. If specification writers restrict themselves to keywords that have semantic equivalents, conversion between RFC2119 and ISO, or vice versa will be easier.

    Note for the purpose of this exercise we consider RFC2119 treatment of interoperability to be narrow, and interpret requirements as broadly as possible in the manner interpreted by ISO. The third column in the table lists suggested non-normative synonyms that should be considered when specification writers are trying to avoid using one the formal keywords.

    Table 1

    RFC 2119

    Annex H (ISO)

    Non-Normative Synonyms

    MUST, SHALL, REQUIRED

    shall

    will

    MUST NOT, SHALL NOT, REQUIRED

    shall not

    will not, “it is not possible that”

    SHOULD/RECOMMENDED

    should

    ought to

    SHOULD NOT/NOT RECOMMENDED

    should not

    ought not to

    MAY/OPTIONAL

    may

    could

    *3

    need not

    might not

    *

    can

    is capable of

    *

    cannot

    is not capable of

  8. FAQ – Frequently Asked Questions
    1. When are RFC 2119 keywords (or other keywords) required?

      All TC work products that will become OASIS TC specifications or OASIS standards, should use [RFC 2119] keywords.

    2. When are RFC 2119 keywords (or other keywords) to be avoided?

      When a TC is writing a TC Note, also known as a “non-standards track” work product, it should not use [RFC 2119], to avoid confusion with OASIS TC Specifications and Standards.

    3. Do keywords only appear in conformance clauses?

      No. Keywords appear in normative parts of a document that are then referred to by clauses in a conformance clause.

    4. As an editor, why would I use ISO keywords instead of RFC in a specification?

      If you are planning on submitting an OASIS TC Specification or Standard to ISO/IEC, you can use [RFC 2119] keywords on a first submission.4 However, on subsequent submissions, you will be required to conform to [ISO/IEC Directives], which will require use of ISO keywords.

    5. Is “MAY NOT” a keyword?

      No, although there is an example of “MAY NOT” in an OASIS specification.

      Note: When evaluating and, or, or n-of, it MAY NOT be necessary to attempt a full evaluation of each argument in order to determine whether the evaluation of the argument would result in “Indeterminate”.

      In a note, which is non-normative text, keywords should not appear. Instead of “MAY NOT,” the text should read: “may not.”

1According to RFC Style, http://www.rfc-editor.org/rfc-style-guide/rfc-style, lowercase keywords: “To simply specify a necessary logical relationship, the normal lower-case words should be used.”, Requirement Words (RFC 2119) section.

2This is a direct quote from RFC 2119, http://www.ietf.org/rfc/rfc2119.txt

3A “*” indicates no equivalent for need not, can or can not appears in RFC2119. The “?” indicates the TAB’s inability to suggest good synonyms for them.

4As of August, 2013. ISO/IEC rules change so verify the current rules before choosing your keywords.