<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- 
For use when a committee document points at the OASIS web site for publishing:
<?xml-stylesheet type="text/xsl" 
href="http://docs.oasis-open.org/templates/DocBook/spec-0.8/stylesheets/oasis-specification-html.xsl"?>
< !DOCTYPE article
  PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
         "https://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" 

For use when a committee document points to an embedded installation of DocBook
<?xml-stylesheet type="text/xsl" 
               href="db/spec-0.8/stylesheets/oasis-specification-html.xsl"?>
< !DOCTYPE article
 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
        "db/spec-0.8/docbook/docbookx.dtd" 

For use when a committee document is published in a local environment only
(note the instructions for local publishing require adjusting the stylesheet
 and DocBook directories in these declarations):
<?xml-stylesheet type="text/xsl" 
href="file:///z:/oasis/spec-0.8/stylesheets/oasis-specification-html-offline.xsl"?>
< !DOCTYPE article
  PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
         "file:///z:/oasis/spec-0.8/docbook/docbookx.dtd" 
-->
<?xml-stylesheet type="text/xsl"
               href="db/spec-0.8/stylesheets/oasis-specification-html.xsl"?>
<?oasis-spec-base-uri db/spec-0.8/?>
<!DOCTYPE article
 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
        "db/spec-0.8/docbook/docbookx.dtd" 
[
<!--the document properties-->
<!ENTITY dir "Business-Document-NDR">
<!ENTITY name "&dir;-v&version;">
<!ENTITY version "1.1">
<!ENTITY title "Business Document Naming and Design Rules (BDNDR) Version&#xa0;&version;">
<!ENTITY standard "Committee Specification Draft 03">
<!ENTITY pstage "csprd01">
<!ENTITY stage                                     "csd03">
<!ENTITY summary SYSTEM "Business-Document-NDR-v1.1-csd03-summary.ent">
<!ENTITY this-loc     "https://docs.oasis-open.org/ubl/&dir;/v&version;/&stage;">
<!ENTITY previous-loc "http://docs.oasis-open.org/ubl/&dir;/v&version;/&pstage;">
<!ENTITY latest-loc   "https://docs.oasis-open.org/ubl/&dir;/v&version;">
<!ENTITY copyyear        "2020">
<!ENTITY pubdate "29 July 2020">
<!ENTITY conformancePrefix "7">
]>
<article status="&standard;" conformance="ids quotes">
  <articleinfo>
    <title>&title;</title>
    <productname>&name;</productname>
    <productnumber>&stage;</productnumber>
    <releaseinfo role="track">Standards Track Work Product</releaseinfo>
    <releaseinfo role="OASIS-specification-this-authoritative">&this-loc;/&name;-&stage;.xml</releaseinfo>
    <releaseinfo role="OASIS-specification-this">&this-loc;/&name;-&stage;.html</releaseinfo>
    <releaseinfo role="OASIS-specification-this">&this-loc;/&name;-&stage;.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-previous-authoritative">&previous-loc;/&name;-&pstage;.xml</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">&previous-loc;/&name;-&pstage;.html</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">&previous-loc;/&name;-&pstage;.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-latest">&latest-loc;/&name;.html</releaseinfo>
    <releaseinfo role="OASIS-specification-latest">&latest-loc;/&name;.pdf</releaseinfo>
    <releaseinfo role="committee"><ulink conformance="skip" url="https://www.oasis-open.org/committees/ubl/">OASIS Universal
        Business Language (UBL) TC</ulink></releaseinfo>
    <authorgroup>
      <editor>
        <firstname>Kenneth</firstname>
        <surname>Bengtsson</surname>
        <affiliation>
          <orgname>Individual</orgname>
        </affiliation>
        <email>kbengtsson@efact.pe</email>
      </editor>
      <editor>
        <firstname>Erlend</firstname>
        <surname>Klakegg Bergheim</surname>
        <affiliation>
          <orgname><ulink conformance="skip" url="http://www.difi.no">Norwegian Digitalisation Agency</ulink></orgname>
        </affiliation>
        <email>erlend.klakegg.bergheim@difi.no</email>
      </editor>
      <editor>
        <firstname>G. Ken</firstname>
        <surname>Holman</surname>
        <affiliation>
          <orgname><ulink conformance="skip" url="http://www.CraneSoftwrights.com/links/info-ubl.htm">Crane Softwrights Ltd.</ulink></orgname>
        </affiliation>
        <email>gkholman@CraneSoftwrights.com</email>
      </editor>
      <othercredit>
        <firstname>Kenneth</firstname>
        <surname>Bengtsson</surname>
        <affiliation>
          <orgname>Individual</orgname>
        </affiliation>
        <email>kbengtsson@efact.pe</email>
      </othercredit>
      <othercredit>
        <firstname>G. Ken</firstname>
        <surname>Holman</surname>
        <affiliation>
          <orgname><ulink conformance="skip" url="http://www.CraneSoftwrights.com/links/info-ubl.htm">Crane Softwrights Ltd.</ulink></orgname>
        </affiliation>
        <email>gkholman@CraneSoftwrights.com</email>
      </othercredit>
    </authorgroup>
    <pubdate>&pubdate;</pubdate>
    <copyright>
      <year>&copyyear;</year>
      <holder>OASIS Open, Inc. All Rights Reserved.</holder>
    </copyright>
    <legalnotice role="additional">
      <title>Additional artefacts</title>
      <para>The ZIP containing the complete files of this release is found in the directory:</para>
      <itemizedlist>
        <listitem>
          <para><ulink url="&this-loc;/&name;-&stage;.zip">&this-loc;/&name;-&stage;.zip</ulink></para>
        </listitem>
      </itemizedlist>
    </legalnotice>
    <legalnotice role="related">
      <title>Related work</title>
      <para>This specification supersedes:</para>
      <bibliolist>
        <bibliomixed id="BDNDR-10" conformance="skip">
          <abbrev>Business-Document-NDR-v1.0</abbrev>
          <citetitle>Business Document Naming and Design Rules Version&#xa0;1.0.</citetitle>
          <bibliomisc>Edited by Tim McGrath, Andy Schoka and G. Ken Holman.</bibliomisc>
          <date>18 January 2017.</date>
          <releaseinfo>OASIS Standard.</releaseinfo>
          <bibliomisc>
            <ulink conformance="skip" url="http://docs.oasis-open.org/ubl/Business-Document-NDR/v1.0/os/Business-Document-NDR-v1.0-os.html">http://docs.oasis-open.org/ubl/Business-Document-NDR/v1.0/os/Business-Document-NDR-v1.0-os.html</ulink>. Latest version: <ulink conformance="skip"
              url="http://docs.oasis-open.org/ubl/Business-Document-NDR/v1.0/Business-Document-NDR-v1.0.html">http://docs.oasis-open.org/ubl/Business-Document-NDR/v1.0/Business-Document-NDR-v1.0.html</ulink>. </bibliomisc>
        </bibliomixed>
      </bibliolist>
    </legalnotice>
    <abstract>
      <para>This specification prescribes a set of naming and design rules used to create document model validation artefacts associated with abstract information bundles formally described using the Core Component Technical Specification 2.01 <xref linkend="ccts"/> in either or both of XML
        documents using W3C Schema XSD files and OASIS Context/value association files, or/and JSON documents using <ulink url="http://json-schema.org"/> expressions. </para>
    </abstract>
    <legalnotice role="status" id="STATUS">
      <title>Status</title>
      <!--
      <para>This <ulink conformance="skip" url="https://www.oasis-open.org/policies-guidelines/tc-process#dWorkingDraft">Working Draft</ulink> (WD) has been produced by one or more TC Members; it has not yet been voted on by the TC or <ulink conformance="skip"
          url="https://www.oasis-open.org/policies-guidelines/tc-process#committeeDraft">approved</ulink> as a Committee Specification Draft. The OASIS document <ulink conformance="skip" url="https://www.oasis-open.org/policies-guidelines/tc-process#standApprovProcess">Approval Process</ulink>
        begins officially with a TC vote to approve a WD as a Committee Draft. A TC may approve a Working Draft, revise it, and re-approve it any number of times as a Committee Draft. </para>
      -->
      
      <para>This document was last revised or approved by the OASIS Universal Business Language TC
        on the above date. The level of approval is also listed above. Check the &#x201c;Latest
        version&#x201d; location noted above for possible later revisions of this document. Any
        other numbered Versions and other technical work produced by the Technical Committee (TC)
        are listed at <ulink conformance="skip"
          url="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ubl#technical"
          >https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ubl#technical</ulink>.</para>
      <para>TC members should send comments on this specification to the TC&#x2019;s email list.
        Others should send comments to the TC&#x2019;s public comment list, after subscribing to it
        by following the instructions at the &#x201c;<ulink conformance="skip"
          url="https://www.oasis-open.org/committees/comments/index.php?wg_abbrev=ubl">Send A
          Comment</ulink>&#8221; button on the TC&#8217;s web page at <ulink
          url="https://www.oasis-open.org/committees/ubl/"
          >https://www.oasis-open.org/committees/ubl/</ulink>.</para>
      <para>For information on whether any patents have been disclosed that may be essential to
        implementing this specification, and any offers of patent licensing terms, please refer to
        the Intellectual Property Rights section of the Technical Committee web page at <ulink
          url="https://www.oasis-open.org/committees/ubl/ipr.php"
          >https://www.oasis-open.org/committees/ubl/ipr.php</ulink>.</para>

      <para>See <xref linkend="A-RELEASE-NOTES"/> for more information regarding this release
        package.</para>
      
    </legalnotice>
    <legalnotice role="citation" id="CITATION">
      <title>Citation format</title>
      <para>When referencing this specification the following citation format should be used:</para>
      <bibliolist id="citationfmt">
        <bibliomixed id="BDNDR-11" conformance="skip"><abbrev>&dir;-v1.1</abbrev>
          <citetitle>&title;.</citetitle>
          <bibliomisc>Edited by Kenneth Bengtsson, Erlend Klakegg Bergheim and G. Ken Holman.</bibliomisc>
          <date>&pubdate;.</date>
          <releaseinfo>OASIS &standard;.</releaseinfo>
          <bibliomisc>
            <ulink url="&this-loc;/&name;-&stage;.html">&this-loc;/&name;-&stage;.html</ulink>. Latest version: <ulink url="&latest-loc;/&name;.html">&latest-loc;/&name;.html</ulink>. </bibliomisc>
        </bibliomixed>
      </bibliolist>
    </legalnotice>
    <legalnotice role="notices">
      <title>Notices</title>
      <para>Copyright &#169; OASIS Open 2001-&copyyear;. All Rights Reserved. </para>
      <para>All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the &#8220;OASIS IPR Policy&#8221;). The full <ulink conformance="skip" url="https://www.oasis-open.org/policies-guidelines/ipr">Policy</ulink> may be found at
        the OASIS website.</para>
      <para>This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided
        that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document
        or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English. </para>
      <para>The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. </para>
      <para>This document and the information contained herein is provided on an &#8220;AS IS&#8221; basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS AND ANY IMPLIED
        WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. </para>
      <para>OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard notify OASIS TC Administrator and provide an indication of its willingness to grant
        patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. </para>
      <para>OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a
        manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so. </para>
      <para>OASIS takes no position regarding the validity or scope of any intellectual property 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; neither does it represent that it has made any effort to identify any such rights. Information on OASIS&#x2019; procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights
        made available for publication 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 OASIS Committee Specification or OASIS Standard, can be
        obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. </para>
      <para>The name &#8220;OASIS&#8221; is a trademark of <ulink conformance="skip" url="https://www.oasis-open.org">OASIS</ulink>, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and
        implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see <ulink url="https://www.oasis-open.org/policies-guidelines/trademark">https://www.oasis-open.org/policies-guidelines/trademark</ulink> for guidance.</para>
    </legalnotice>
  </articleinfo>
  <section id="S-INTRODUCTION">
    <title>Introduction</title>
    <section id="S-BASIC-CONCEPTS">
      <title>Basic concepts</title>
      <section id="S-NAMING-AND-DESIGN-RULES">
        <title>Naming and design rules</title>
        <para>The Open-edi Reference Model <xref linkend="iso14662"/> defines an information bundle as the abstract description of the structure and semantics of the information exchanged between parties.</para>
        <para>An information bundle can be represented as a logical semantic model. This logical semantic model can be used to produce a physical syntax model that defines the structure and syntax of the Open-edi user data actually exchanged in business transactions. These naming and design rules
          formalize a method of representing the semantic components of information bundles using the ebXML Core Components Technical Specification <xref linkend="ccts"/>. </para>
        <para>These semantic models can then be used to produce equivalent W3C Schema XSD files [<xref linkend="xsd"/>] and OASIS Context/value Association <xref linkend="oasiscva"/> expressions suitable for defining and validating XML documents <xref linkend="xml"/> used to convey Open-edi user
          data.</para>
        <para>Also, or alternatively, these semantic models can then be used to produce equivalent JSON schema <xref linkend="json-schema"/> expressions suitable for defining and validating JSON documents <xref linkend="json"/> used to convey Open-edi user data.</para>
        <para>This is illustrated in <xref linkend="F-NAMING-AND-DESIGN-RULES-IN-AN-OPEN-EDI-APPLICATION"/>.</para>
        <figure id="F-NAMING-AND-DESIGN-RULES-IN-AN-OPEN-EDI-APPLICATION">
          <title>Naming and Design Rules in an Open-edi Application</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="art/&dir;-v&version;-Open-edi-Application.png"/>
            </imageobject>
            <textobject>
              <phrase>Open-edi Application</phrase>
            </textobject>
          </mediaobject>
        </figure>
        <para>The rules presume the reader is already familiar with the following specifications: </para>
        <itemizedlist>
          <listitem>
            <para>United Nations Centre for Trade Facilitation and Electronic Business (UN/CEFACT) Core Components Technical Specification 2.01 &#x2013; Part 8 of the ebXML Framework <xref linkend="ccts"/>;</para>
          </listitem>
          <listitem>
            <para>ISO/IEC 11179 Data Elements <xref linkend="iso11179"/>;</para>
          </listitem>
          <listitem>
            <para>W3C Schema [<xref linkend="xsd"/>] XSD files for XML document constraint specification;</para>
          </listitem>
          <listitem>
            <para>OASIS Context/value association using genericode <xref linkend="oasiscva"/> for code list association;</para>
          </listitem>
          <listitem>
            <para>OASIS genericode <xref linkend="gc"/> for code list representation;</para>
          </listitem>
          <listitem>
            <para>JSON data interchange format <xref linkend="json"/>; and</para>
          </listitem>
          <listitem>
            <para>JSON Schema <xref linkend="json-schema"/>.</para>
          </listitem>
        </itemizedlist>
        <note>
          <para>The OASIS Universal Business Language (UBL) can be considered as a reference implementation of these naming and design rules and the examples used in this specification are primarily taken from the UBL 2.3 specifications. </para>
        </note>
        <note>
          <para>Other validation artefacts (using RelaxNG and ASN.1) are also provided for UBL <xref linkend="UBL"/>. The rules for producing these are outside the scope of this work product.</para>
        </note>
        <note>
          <para>The direction taken regarding the JSON implementation of these naming and design rules was developed in the discussion paper <xref linkend="CCTS-and-JSON"/> where the principles are described with instance examples.</para>
        </note>
      </section>
      <section id="S-MODELING-CONCEPTS">
        <title>Modeling concepts</title>
        <para>Information bundles (describing information to be exchanged) are modeled as a collection of semantic components.</para>
        <para>Each semantic component in an information bundle corresponds to one of the following types of Business Information Entity (BIE) in a CCTS Document Model:</para>
        <itemizedlist>
          <listitem>
            <para>a single irreducible semantic component (referred to as a Basic Business Information Entity or BBIE);</para>
          </listitem>
          <listitem>
            <para>a structured aggregation of other semantic components (referred to as an Aggregate Business Information Entity or ABIE); or</para>
          </listitem>
          <listitem>
            <para>an association between ABIEs (referred to as an Association Business Information Entity or ASBIE).</para>
          </listitem>
        </itemizedlist>
        <para>The CCTS semantic model is not dependent on the syntax of the Open-edi user data actually exchanged. </para>
        <para>The Open-edi user data exchanged between parties is a machine-readable instance of an information bundle (CCTS Document Model). </para>
        <para>This specification assumes XML and/or JSON are the machine-readable syntaxes used for exchanging the Open-edi user data. When using an XML document for exchanging Open-edi user data each BIE corresponds to an XML element. When using a JSON document for exchanging Open-edi user data
          each BIE corresponds to a JSON object.</para>
        <para>The relationships between these various concepts are described in <xref linkend="T-MODELING-CONCEPTS"/></para>
        <table border="2" width="605" id="T-MODELING-CONCEPTS">
          <title>Modeling concepts</title>
          <tgroup cols="3">
            <colspec colnum="1" colname="col1" colwidth="1*"/>
            <colspec colnum="2" colname="col2" colwidth="1*"/>
            <colspec colnum="3" colname="col3" colwidth="3*"/>
            <tbody>
              <row>
                <entry><emphasis role="bold">Open-edi Reference Model (ISO 14882)</emphasis></entry>
                <entry>
                  <para>Semantic Model</para>
                  <para>(ebXML CCTS)</para>
                </entry>
                <entry>
                  <para>Physical representations</para>
                  <para>(W3C XML; ECMA JSON)</para>
                </entry>
              </row>
              <row>
                <entry><emphasis role="bold">Information bundle</emphasis></entry>
                <entry>Semantic model</entry>
                <entry>Document schema</entry>
              </row>
              <row>
                <entry><emphasis role="bold">Semantic component</emphasis></entry>
                <entry>Business Information Entity</entry>
                <entry>XML element; JSON object</entry>
              </row>
              <row>
                <entry><emphasis role="bold">Open-edi user data</emphasis></entry>
                <entry>Document</entry>
                <entry>XML document; JSON document</entry>
              </row>
              <row>
                <entry/>
                <entry>Document ABIE</entry>
                <entry>XML document element schema definition with only element children, and the XML document element itself; JSON document object schema definition with only object children, and the top-most object itself</entry>
              </row>
              <row>
                <entry/>
                <entry>Library ABIE</entry>
                <entry>XML element schema definitions (but not a document element schema definition) with only element children; JSON object schema definition (but not a top-level object schema definition) with only object array children</entry>
              </row>
              <row>
                <entry/>
                <entry>ASBIE</entry>
                <entry>XML element (but not a document element) with only element children, defined by a Library ABIE; JSON object (but not a top-level object) with only object array children, defined by a Library ABIE</entry>
              </row>
              <row>
                <entry/>
                <entry>BBIE</entry>
                <entry>XML element with only text characters as children, no elements as children, as defined by a BBIE; JSON object with only object array children, defined by a BBIE</entry>
              </row>
            </tbody>
          </tgroup>
        </table>
      </section>
      <section id="S-BUSINESS-INFORMATION-ENTITIES">
        <title>Business Information Entities</title>
        <para>Following the conventions of the ebXML Core Component Technical Specification <xref linkend="ccts"/> a Business Information Entity (BIE) is piece of business data or a group of pieces of business data with a unique business semantic definition.</para>
        <para>A BIE is the result of using a core component within a specific business context. As such each BIE must be based on a core component. The definition of core components is outside the scope of this specification.</para>
        <para>It is the Business Information Entities that provide the structure for the semantic components of the body of the business document. </para>
        <para>The semantic components used to create the Open-edi user data validation artefacts (following these naming and design rules) are to be applied in a specific business context. Therefore it is the contextualized Business Information Entities to which these rules apply and not the core
          components from which they have been derived.</para>
      </section>
    </section>
    <section id="S-TERMINOLOGY">
      <title>Terminology</title>
      <section id="S-KEY-WORDS">
        <title>Key words</title>
        <para>The key words <glossterm>must</glossterm>, <glossterm>must not</glossterm>, <glossterm>required</glossterm>, <glossterm>shall</glossterm>, <glossterm>shall not</glossterm>, <glossterm>should</glossterm>, <glossterm>should not</glossterm>, <glossterm>recommended</glossterm>,
            <glossterm>may</glossterm>, and <glossterm>optional</glossterm> in this document are to be interpreted as described in <xref linkend="rfc2119"/>. Note that for reasons of style, these words are not capitalized in this document.</para>
      </section>
      <section id="S-TERMS-AND-DEFINITIONS">
        <title>Terms and Definitions</title>
        <variablelist>
          <varlistentry>
            <term>Business Information Entity (BIE)</term>
            <listitem>
              <para>A piece of business data or a group of pieces of business data with a unique Business Semantic definition, see <xref linkend="ccts"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>Context/value Association (CVA)</term>
            <listitem>
              <para>The association of value constraints imposed on information found in a particular document context, see <xref linkend="oasiscva"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>document ABIE</term>
            <listitem>
              <para>The apex ABIE of an information bundle.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>document element</term>
            <listitem>
              <para>The apex element of information in an XML document, see <xref linkend="xml"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>extension collection</term>
            <listitem>
              <para>The set of extension elements found in an XML document, constrained by an extension schema, that supplements the base information that is constrained by the published document model.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>extension item</term>
            <listitem>
              <para>A single instance of structured supplemental information and its associated metadata distinguishing it from other extension items.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>extension point</term>
            <listitem>
              <para>The apex element of structured supplemental information described by its metadata.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>information bundle</term>
            <listitem>
              <para>The formal description of the semantics of the recorded information to be exchanged, as defined in <xref linkend="iso14662"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>JSON schema</term>
            <listitem>
              <para>A JSON vocabulary to annotate and validate JSON documents <xref linkend="json-schema"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry id="NDR">
            <term>naming and design rules</term>
            <listitem>
              <para>A set of rules governing the expression of information bundles using <xref linkend="ccts"/>, and the creation of either or both the associated XML document model validation artefacts using <xref linkend="oasiscva"/> and [<xref linkend="xsd"/>], or/and JSON schema model artefacts
                using <xref linkend="json-schema"/>. </para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>object class</term>
            <listitem>
              <para>A set of ideas, abstractions, or things in the real world that are identified with explicit boundaries and meaning and whose properties and behavior follow the same rules <xref linkend="iso11179"/> (definition 3.3.22).</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>Open-edi user data</term>
            <listitem>
              <para>Machine-readable instance of the content of information bundles or components of information bundles (as semantic components), see <xref linkend="iso14662"/>.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>property</term>
            <listitem>
              <para>A characteristic common to all members of an object class <xref linkend="iso11179"/> (definition 3.3.29).</para>
            </listitem>
          </varlistentry>
          <!--          <varlistentry>
            <term>validation</term>
            <listitem>
              <para>The processing involved in confirming that an XML document
                satisfies the document constraints expressed in a set of
                artefacts governing aspects of document content according to a
                document model.</para>
            </listitem>
          </varlistentry>-->
          <varlistentry>
            <term>semantic component</term>
            <listitem>
              <para>A unit of information unambiguously defined in the context of the business goal of the business transaction. A semantic component may be atomic or composed of other semantic components, see <xref linkend="iso14662"/>. </para>
            </listitem>
          </varlistentry>
          <varlistentry id="xsd">
            <term>XSD schema</term>
            <listitem>
              <para>An XML document model definition conforming to the W3C XML Schema language <xref linkend="xsd1"/><xref linkend="xsd2"/>.</para>
            </listitem>
          </varlistentry>
        </variablelist>
        <para>The terms Core Component (CC), Basic Core Component (BCC), Aggregate Core Component (ACC), Association Core Component (ASCC), Business Information Entity (BIE), Basic Business Information Entity (BBIE), and Aggregate Business Information Entity (ABIE) are used in this specification
          with the meanings given in <xref linkend="ccts"/>.</para>
        <para>The terms Object Class, Property Term, Representation Term, and Qualifier are used in this specification with the meanings given in <xref linkend="iso11179"/>.</para>
      </section>
      <section id="S-SYMBOLS-AND-ABBREVIATIONS">
        <title>Symbols and Abbreviations</title>
        <variablelist>
          <varlistentry>
            <term>ABIE</term>
            <listitem>
              <para>Aggregate Business Information Entity <xref linkend="ccts"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>ASBIE</term>
            <listitem>
              <para>Association Business Information Entity <xref linkend="ccts"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>BIE</term>
            <listitem>
              <para>Business Information Entity <xref linkend="ccts"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>BBIE</term>
            <listitem>
              <para>Basic Business Information Entity <xref linkend="ccts"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>CCTS</term>
            <listitem>
              <para>Core Component Technical Specification <xref linkend="ccts"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>CVA</term>
            <listitem>
              <para>Context/value Association <xref linkend="oasiscva"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>JSON</term>
            <listitem>
              <para>JavaScript Object Notation <xref linkend="json"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>NDR</term>
            <listitem>
              <para>Naming and Design Rules <xref linkend="NDR"/></para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>TC</term>
            <listitem>
              <para>Technical Committee</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>XSD</term>
            <listitem>
              <para>W3C XML Schema Definition <xref linkend="xsd"/></para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
    <section id="S-NORMATIVE-REFERENCES">
      <title>Normative References</title>
      <bibliolist>
        <bibliomixed id="ccts"><abbrev>CCTS</abbrev>
          <title>UN/CEFACT Core Component Technical Specification - Part 8 of the ebXML Framework) </title>
          <date>15 November 2003</date><edition>Version 2.01</edition><citetitle><ulink url="http://www.unece.org/fileadmin/DAM/cefact/codesfortrade/CCTS/CCTS_V2-01_Final.pdf">http://www.unece.org/fileadmin/DAM/cefact/codesfortrade/CCTS/CCTS_V2-01_Final.pdf</ulink></citetitle></bibliomixed>
        <bibliomixed id="oasiscva">
          <abbrev>CVA</abbrev>
          <citetitle>OASIS Context/value association using genericode 1.0. </citetitle>
          <date>15 April 2010. </date>
          <releaseinfo>Committee Specification 01. </releaseinfo>
          <bibliomisc>
            <ulink conformance="skip" url="http://docs.oasis-open.org/codelist/cs01-ContextValueAssociation-1.0/doc/context-value-association.html">http://docs.oasis-open.org/codelist/cs01-ContextValueAssociation-1.0/doc/context-value-association.html</ulink>. </bibliomisc>
        </bibliomixed>
        <bibliomixed id="gc">
          <abbrev>genericode</abbrev>
          <citetitle>OASIS Code List Representation (Genericode) Version 1.0.</citetitle>
          <date>28 December 2007. </date>
          <releaseinfo>Committee Specification 01. </releaseinfo>
          <bibliomisc>
            <ulink conformance="skip" url="http://docs.oasis-open.org/codelist/cs-genericode-1.0/doc/oasis-code-list-representation-genericode.html">http://docs.oasis-open.org/codelist/cs-genericode-1.0/doc/oasis-code-list-representation-genericode.html</ulink>. </bibliomisc>
        </bibliomixed>
        <bibliomixed id="iso11179"><abbrev>ISO 11179</abbrev>
          <title>ISO/IEC 11179-1:2004 Information technology &#8212; Specification and standardization of data elements &#8212; Part 1: Framework for the specification and standardization of data elements </title>
          <citetitle>
            <ulink url="http://standards.iso.org/ittf/PubliclyAvailableStandards/c035343_ISO_IEC_11179-1_2004(E).zip">http://standards.iso.org/ittf/PubliclyAvailableStandards/c035343_ISO_IEC_11179-1_2004(E).zip</ulink></citetitle></bibliomixed>
        <bibliomixed id="iso14662"><abbrev>ISO 14662</abbrev>
          <title>ISO/IEC 14662:2004 Information technology &#8212; Open-edi reference model</title>
          <citetitle>
            <ulink url="http://standards.iso.org/ittf/PubliclyAvailableStandards/">http://standards.iso.org/ittf/PubliclyAvailableStandards/</ulink></citetitle></bibliomixed>
        <bibliomixed id="json"><abbrev>ISO 21778 - ECMA JSON</abbrev>
          <title>ISO/IEC 21778 Information technology &#8212; The JSON data interchange format</title>
          <citetitle>
            <ulink url="http://standards.iso.org/ittf/PubliclyAvailableStandards/">http://standards.iso.org/ittf/PubliclyAvailableStandards/</ulink></citetitle>, <title>ECMA 404 The JSON data interchange format</title>
          <citetitle>
            <ulink url="https://www.ecma-international.org/publications/standards/Ecma-404.htm">https://www.ecma-international.org/publications/standards/Ecma-404.htm</ulink>
          </citetitle>
        </bibliomixed>
        <bibliomixed id="json-schema"><abbrev>JSON Schema</abbrev>
          <title>JSON Schema Validation: A Vocabulary for Structural Validation of JSON</title>, <author>
            <firstname>A.</firstname>
            <surname>Wright</surname>
          </author>, <author>
            <firstname>H.</firstname>
            <surname>Andrews</surname>
          </author>, <author>
            <firstname>G.</firstname>
            <surname>Luff</surname>
          </author>, Editors, <citetitle>
            <ulink url="http://json-schema.org/latest/json-schema-validation.html">http://json-schema.org/latest/json-schema-validation.html</ulink></citetitle></bibliomixed>
        <bibliomixed id="rfc2119"><abbrev>RFC 2119</abbrev>
          <author>
            <surname>Bradner, </surname>
            <firstname>S.</firstname>
          </author>, <title>Key words for use in RFCs to Indicate Requirement Levels</title>, <releaseinfo>BCP 14, RFC 2119</releaseinfo>, <date>March 1997</date>, <citetitle>&lt;<ulink url="http://www.rfc-editor.org/info/rfc2119">http://www.rfc-editor.org/info/rfc2119</ulink>></citetitle>. </bibliomixed>
        <bibliomixed id="xml"><abbrev>XML</abbrev>
          <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>, <author>
            <firstname>T. </firstname>
            <surname>Bray</surname>
          </author>, <author>
            <firstname>J. </firstname>
            <surname>Paoli</surname>
          </author>, <author>
            <firstname>C. M. </firstname>
            <surname>Sperberg-McQueen</surname>
          </author>, <author>
            <firstname>E. </firstname>
            <surname>Maler</surname>
          </author>, <author>
            <firstname>F. </firstname>
            <surname>Yergeau</surname>
          </author>, Editors, <releaseinfo>W3C Recommendation</releaseinfo>, <date>26 November 2008</date>, <citetitle><ulink url="http://www.w3.org/TR/2008/REC-xml-20081126/">http://www.w3.org/TR/2008/REC-xml-20081126/</ulink></citetitle>. Latest version available at <citetitle><ulink
              url="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</ulink></citetitle>. </bibliomixed>
        <bibliomixed id="xpath10"><abbrev>XPath 1.0</abbrev>
          <title>XML Path Language (XPath) Version 1.0</title>, <author>
            <firstname>J. </firstname>
            <surname>Clark</surname>
          </author>, <author>
            <firstname>S. </firstname>
            <surname>DeRose</surname>
          </author>, Editors, <releaseinfo>W3C Recommendation</releaseinfo>, <date>16 November 1999</date>, <citetitle><ulink url="http://www.w3.org/TR/1999/REC-xpath-19991116/">http://www.w3.org/TR/1999/REC-xpath-19991116/</ulink></citetitle>. Latest version available at <citetitle><ulink
              url="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</ulink></citetitle>. </bibliomixed>
        <bibliomixed id="xsd1"><abbrev>XSD1</abbrev>
          <title>XML Schema Part 1: Structures Second Edition</title>, <author>
            <firstname>H. S. </firstname>
            <surname>Thompson</surname>
          </author>, <author>
            <firstname>D. </firstname>
            <surname>Beech</surname>
          </author>, <author>
            <firstname>M. </firstname>
            <surname>Maloney</surname>
          </author>, <author>
            <firstname>N. </firstname>
            <surname>Mendelsohn</surname>
          </author>, Editors, <releaseinfo>W3C Recommendation</releaseinfo>, <date>28 October 2004</date>, <citetitle><ulink url="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/</ulink></citetitle>. Latest version available at
              <citetitle><ulink url="http://www.w3.org/TR/xmlschema-1">http://www.w3.org/TR/xmlschema-1</ulink></citetitle>. </bibliomixed>
        <bibliomixed id="xsd2"><abbrev>XSD2</abbrev>
          <title>XML Schema Part 2: Datatypes Second Edition</title>, <author>
            <firstname>P. V. </firstname>
            <surname>Biron</surname>
          </author>, <author>
            <firstname>A. </firstname>
            <surname>Malhotra</surname>
          </author>, Editors, <releaseinfo>W3C Recommendation</releaseinfo>, <date>28 October 2004</date>, <citetitle><ulink url="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</ulink></citetitle>. Latest version available at
              <citetitle><ulink url="http://www.w3.org/TR/xmlschema-2">http://www.w3.org/TR/xmlschema-2</ulink></citetitle>. </bibliomixed>
      </bibliolist>
    </section>
    <section id="S-NON-NORMATIVE-REFERENCES">
      <title>Non-Normative References</title>
      <bibliolist>
        <bibliomixed id="CCTS-and-JSON">
          <abbrev>CCTS-and-JSON</abbrev>
          <citetitle>CCTS and JSON discussion paper</citetitle>, <date>06 December 2016</date>, <author>
            <firstname>Kenneth </firstname>
            <surname>Bengtsson</surname>
          </author>, <author>
            <firstname>Erlend </firstname>
            <surname>Bergheim</surname>
          </author>, <author>
            <firstname>G. Ken </firstname>
            <surname>Holman</surname>
          </author>, Editors, <citetitle><ulink url="https://www.oasis-open.org/committees/document.php?document_id=59528">https://www.oasis-open.org/committees/document.php?document_id=59528</ulink></citetitle>.</bibliomixed>
        <bibliomixed id="UBL"><abbrev>UBL-2.1</abbrev>
          <citetitle>Universal Business Language Version 2.1.</citetitle>
          <date>04 November 2013. </date>
          <releaseinfo>OASIS Standard. </releaseinfo>
          <bibliomisc>
            <ulink url="http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.html" conformance="skip">http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.html</ulink>. </bibliomisc>
        </bibliomixed>
        <!--<bibliomixed id="UBLCCTS"><abbrev>UBL-CCTS</abbrev> <citetitle>UBL Conformance to ebXML CCTS ISO/TS 15000-5:2005 Version 1.0</citetitle> <date>08 May 2014. </date> <releaseinfo>Committee Note 01. </releaseinfo> <bibliomisc> <ulink url="http://docs.oasis-open.org/ubl/UBL-conformance-to-CCTS/v1.0/">http://docs.oasis-open.org/ubl/UBL-conformance-to-CCTS/v1.0/</ulink>. </bibliomisc> </bibliomixed>-->
        <bibliomixed id="xmldsig"><abbrev>xmldsig</abbrev>
          <title>XML-Signature Syntax and Processing Version 1.1</title>, <author>
            <firstname>D. E. </firstname>
            <surname>Eastlake</surname>
          </author>, <author>
            <firstname>J. </firstname>
            <surname>Reagle</surname>
          </author>, <author>
            <firstname>D. </firstname>
            <surname>Solo</surname>
          </author>, <author>
            <firstname>F. </firstname>
            <surname>Hirsch</surname>
          </author>, <author>
            <firstname>M. </firstname>
            <surname>Nystr&#xf6;m</surname>
          </author>, <author>
            <firstname>T. </firstname>
            <surname>Roessler</surname>
          </author>, <author>
            <firstname>K. </firstname>
            <surname>Yiu</surname>
          </author>, Editors, <releaseinfo>W3C Recommendation</releaseinfo>, <date>11 April 2013</date>, <citetitle><ulink url="http://www.w3.org/TR/2013/REC-xmldsig-core1-20130411/">http://www.w3.org/TR/2013/REC-xmldsig-core1-20130411/</ulink></citetitle>. Latest version available at
              <citetitle><ulink url="http://www.w3.org/TR/xmldsig-core1">http://www.w3.org/TR/xmldsig-core1</ulink></citetitle>. </bibliomixed>
      </bibliolist>
    </section>
  </section>
  <section id="S-CONTEXT-OF-USE-AND-APPLICATION-OF-THESE-RULES">
    <title>Context of use and application of these rules</title>
    <para>These XML Naming and Design Rules may be used to create a collection of artefacts for defining and validated a set of extensible XML document types and extensible JSON schema definitions. </para>
    <para>They describe processes for:</para>
    <orderedlist numeration="upperalpha">
      <listitem>
        <para>expressing the semantic components of information bundles using the ebXML Core Components Technical Specification <xref linkend="ccts"/>, and</para>
      </listitem>
      <listitem>
        <para>producing XML definition and validation artefacts based on those semantic components, specifically: </para>
        <orderedlist>
          <listitem>
            <para>XML document structural constraints of elements and attributes (for example, nesting and cardinality) using W3C Schema [<xref linkend="xsd"/>], </para>
          </listitem>
          <listitem>
            <para>XML data value constraints using OASIS Context/value Association <xref linkend="oasiscva"/> expressions of values <xref linkend="gc"/> (for example, coded value domains or code lists) with XML document locations using XPath <xref linkend="xpath10"/>, and</para>
          </listitem>
          <listitem>
            <para>JSON expression constraints using JSON Schema <xref linkend="json-schema"/> expressions.</para>
          </listitem>
        </orderedlist>
      </listitem>
    </orderedlist>
    <para>These processes are depicted in <xref linkend="F-GENERIC-NDR-PROCESSES-TO-CREATE-VALIDATION-ARTEFACTS"/>.</para>
    <figure id="F-GENERIC-NDR-PROCESSES-TO-CREATE-VALIDATION-ARTEFACTS">
      <title>Generic NDR processes to create validation artefacts</title>
      <mediaobject>
        <imageobject>
          <imagedata fileref="art/&dir;-v&version;-procgen.png"/>
        </imageobject>
        <textobject>
          <phrase>Generic Process Diagram</phrase>
        </textobject>
      </mediaobject>
    </figure>
    <para>Designers (and implementers) may choose to adopt other, optional processes to produce additional artefacts. For example, the serialization of the information bundle (as a CCTS model) into a form suitable for further processing or the production of reports useful in the design and review of
      the model. See <xref linkend="A-ADDITIONAL-PRODUCTION-PROCESSES"/> for more details.</para>
  </section>
  <section id="S-INFORMATION-MODELING">
    <title>Information modeling</title>
    <section id="S-DOCUMENT-ABIES">
      <title>Document ABIEs</title>
      <para>A Document ABIE structures the apex of the information bundle to be exchanged between parties.</para>
      <blockquote role="rule" id="MOD01">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD01 Document ABIE</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The apex of the information bundle shall be structured as a single top-level ABIE, referred to in this specification as a Document ABIE.</para>
                <note>
                  <para>The rationale is that the Document ABIE is always considered a one-member collection in and of itself with no other members in the collection.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-ABIE-LIBRARY">
      <title>ABIE library</title>
      <para>The ABIE library is a collection of common, reusable ABIEs available to be referenced by ASBIEs.</para>
      <para>The ABIE library does not include any Document ABIEs.</para>
      <blockquote role="rule" id="MOD02">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD02 ABIE library contents</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A Document ABIE shall not be referenced by any ASBIE.</para>
                <note>
                  <para>The rationale is that Document ABIEs are identified in syntax implementations separately from other collections of ABIEs.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="MOD03">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD03 ABIE library ordering</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The ABIE library shall have all ABIEs defined in either alphabetical order or Unicode code point order of the ABIE&#x2019;s dictionary entry name.</para>
                <note>
                  <para>The rationale is that the library can be very large and a reader new to the library may be unfamiliar with any arbitrary ordering of the ABIEs. Designers and implementers can navigate a collection of ABIEs more easily when they are in either alphabetical order or Unicode code
                    point order. The difference between the two is that in Unicode code point order upper-case letters are ordered in advance of lower-case letters, as found in acronyms. There may be restrictions on some tools to use Unicode code point order instead of alphabetical order.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-EXTENSIONS">
      <title>Extensions</title>
      <para>Wherever possible semantic components within an information bundle should be expressed using the BIEs found in an existing Document ABIE or the ABIE Library. However there may be implementations where supplementary information is required to be exchanged in the information bundle in a
        way that does not interfere with existing BIEs. </para>
      <para>The extension mechanism in this specification provides for including additional semantic components that may augment a standardized information bundle with customized additional information. This mechanism is made available at the beginning of every Document ABIE and Library ABIE.</para>
      <para>Extensions can contain new BIEs or can reference BIEs from existing ABIEs but used in a different context. Extensions can also include foreign constructs not defined as BIEs.</para>
      <para>Extensions may be horizontal in nature in that they are available to use for all information bundles. An example might be the structure of digital signatures<xref linkend="xmldsig"/>.</para>
      <para>Extensions may also be vertical in nature, in that they are applicable only to a single information bundle. For example, additional invoice line detail information to augment an invoice for a specific industry.</para>
      <para>An extension collection provides a placeholder for the extensions to be used with a set of Open-edi user data. Within each collection there may be a number of extensions, each with metadata properties regarding the extension and each with a single extension point (the apex structure of
        the supplemental information). </para>
      <blockquote role="rule" id="MOD04">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD04 Extension availability</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Each document shall allow for optional augmentation with a collection of information not conceptually described by existing BIEs.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <para>When using an XML document for exchanging Open-edi user data, extension schema fragments augment the document&#x2019;s schema created for a document ABIE and all library ABIEs.</para>
    </section>
    <section id="S-MODEL-REVISIONS">
      <title>Model revisions</title>
      <para>When a vocabulary is modified to become a new revision, care must be taken to ensure that all revisions are backward compatible with all previous revisions. That is, that every possible instance of all previous revisions remain valid instances of any new revision. This is guaranteed by
        constraining how the cardinality of any existing BBIE and ASBIE can be changed, and how any new BBIE or ASBIE can be created.</para>
      <blockquote role="rule" id="MOD05">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD05 Revision existing BBIE and ASBIE cardinality</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The cardinality of an existing BBIE or ASBIE can change in a new revision only to be a superset of the old model. That is, the constraints are as follows:</para>
                <itemizedlist>
                  <listitem>
                    <para>the new minimum cardinality shall be lower than or equal to the old minimum cardinality, and</para>
                  </listitem>
                  <listitem>
                    <para>the new maximum cardinality shall be higher than or equal to the old maximum cardinality. </para>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>This rule permits a new revision to make a mandatory BIE optional but not make an optional BIE mandatory.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="MOD06">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD06 Revision new BBIE and ASBIE cardinality</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The cardinality of a new BBIE or ASBIE in a new model revision is based on where the BIE is being added:</para>
                <itemizedlist>
                  <listitem>
                    <para>a BBIE or ASBIE that is newly-added to an existing ABIE shall have a minimum cardinality of zero</para>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>This rule imposes no constraint on any BBIE or ASBIE in a newly-created ABIE in the revised model.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-MODEL-SUBSETS">
      <title>Model subsets</title>
      <para>When a vocabulary is modified to become a subset of an existing revision, care must be taken to ensure that every possible instance of the subset remains a valid instance of the revision. This is guaranteed by constraining the cardinality of every existing BBIE and ASBIE as used in the
        subset.</para>
      <blockquote role="rule" id="MOD07">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>MOD07 Subset existing BBIE and ASBIE cardinality</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The cardinality of an existing BBIE or ASBIE can change in a model subset only to be a subset of the old model. That is, the constraints are as follows:</para>
                <itemizedlist>
                  <listitem>
                    <para>the new minimum cardinality can be higher than or equal to the old minimum cardinality, and</para>
                  </listitem>
                  <listitem>
                    <para>the new maximum cardinality can be lower than or equal to the old maximum cardinality.</para>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>This rule permits a subset to make an optional BIE mandatory but not make a mandatory BIE optional.</para>
                </note>
                <note>
                  <para>This rule permits a subset to omit an optional BIE entirely from the model.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
  </section>
  <section id="S-DICTIONARY-INFORMATION">
    <title>Dictionary information</title>
    <section id="S-DICTIONARY-INFORMATION-OVERVIEW">
      <title>Dictionary information overview</title>
      <para>A BIE is described by the values of its dictionary information as specified by the Core Components Technical Specification 2.01 <xref linkend="ccts"/>.</para>
      <para>To facilitate the definition of the appropriate name for a BBIE, the CCTS property term is specified as the concatenation of two contributing dictionary information values. The optional property term possessive noun and the mandatory property term primary noun are used. When the
        possessive noun is used the values are separated by a space character.</para>
      <para>To facilitate the definition of the appropriate name for a ASBIE, the CCTS property term is specified as the concatenation of two contributing dictionary information values. The optional associated object class qualifier and the mandatory associated object class are used. When the
        associated object class qualifier is used the qualifier value is suffixed with an underscore character and the values are separated by a space character.</para>
    </section>
    <section id="S-DICTIONARY-INFORMATION-VALUES">
      <title>Dictionary information values</title>
      <para>Certain rules govern the creation and expression of dictionary information values for all BIEs defined in the semantic model of an information bundle.</para>
      <blockquote id="COM01" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM01 Dictionary information values</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The text describing dictionary information values shall be a string value of Unicode characters without embedded hierarchical structure. The value itself may be structured in its syntax within the string.</para>
                <note>
                  <para>The rationale is that the dictionary information values may be constrained in its expression, such as is true in an XML attribute.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="COM02">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM02 Dictionary information value prohibited characters and character sequences</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The following characters shall not be contained in any dictionary information value:</para>
                <itemizedlist>
                  <listitem>
                    <para>the characters &#x201c;&lt;&#x201d;, &#x201c;&gt;&#x201d;, &#x201c;&amp;&#x201d;</para>
                  </listitem>
                  <listitem>
                    <para>white-space characters other than the &#x201c; &#x201d; (space) character</para>
                  </listitem>
                  <listitem>
                    <para>the character sequence &#x201c;--&#x201d;</para>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>The rationale is that prohibiting these characters and sequences will allow the dictionary information values to be processed more simply in different XML contexts without special handling.</para>
                </note>
                <note>
                  <para>The constraint on white-space characters prohibits values from being structured as paragraphs.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-ABBREVIATIONS">
      <title>Abbreviations</title>
      <para>It may be convenient to abbreviate complex terms or to use commonly-accepted abbreviations in dictionary information values.</para>
      <blockquote role="rule" id="COM03">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM03 Controlled list of abbreviations in BIE names</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Abbreviations for terms used in BIE names shall be taken from a controlled list of abbreviations agreed for use within the semantic model.</para>
                <note>
                  <title>Examples</title>
                  <simplelist>
                    <member>&#x201c;Identifier&#x201d; is abbreviated as &#x201c;ID&#x201d;.</member>
                    <member>&#x201c;Universally Unique Identifier&#x201d; is abbreviated as &#x201c;UUID&#x201d;.</member>
                  </simplelist>
                </note>
                <note>
                  <para>The rationale is that some common or complex terms have commonly-accepted abbreviations suitable for shortening the length of BIE names.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="COM04">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM04 Controlled list of abbreviations in dictionary entry name information values</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Abbreviations for terms used in dictionary entry name information values shall be taken from a controlled list of commonly-agreed abbreviations.</para>
                <note>
                  <title>Examples</title>
                  <simplelist>
                    <member>&#x201c;XML Path Language&#x201d; is abbreviated as &#x201c;XPath&#x201d;.</member>
                    <member>&#x201c;Card Verification Value&#x201d; is abbreviated as &#x201c;CV2&#x201d;.</member>
                  </simplelist>
                </note>
                <note>
                  <para>The rationale is that some common terms have widely-accepted abbreviations in general use or in particular use within the information domain. Inconsistent use of abbreviations may lead to semantic ambiguity.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="COM05">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM05 List of equivalent terms in BIE names</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Equivalent terms used in BIE names shall be taken from a list of commonly-agreed equivalent terms.</para>
                <note>
                  <title>Example</title>
                  <para>The property term primary noun &#x201c;URI&#x201d; is considered equivalent to the representation term &#x201c;Identifier&#x201d;.</para>
                </note>
                <note>
                  <para>The rationale is that some common terms wholly include the concepts presented in other terms and so should be considered equivalent in order to prevent duplication.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-DICTIONARY-INFORMATION-FOR-BIES">
      <title>Dictionary information for BIEs</title>
      <section id="S-COMPONENT-TYPE-FOR-BIES">
        <title>Component type for BIEs</title>
        <blockquote id="COM06" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM06 Component Type for a BIE</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each BIE component shall be typed as being one of either an ABIE, BBIE or ASBIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-DICTIONARY-INFORMATION-FOR-ABIES">
        <title>Dictionary information for ABIEs</title>
        <blockquote id="COM07" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM07 Minimum set of dictionary information values describing an ABIE</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each ABIE shall have the following set of dictionary information values:</para>
                  <itemizedlist>
                    <listitem>
                      <para>Component Type (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>shall be the value &#x201c;ABIE&#x201d;</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Definition (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall describe the ABIE using complete natural language sentences in a single paragraph</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Alternative Business Terms (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall list any other commonly used terms that are synonyms for the ABIE</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the object class for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the object of interest within an information bundle; it is the class to which the ABIE&#8217;s BIEs belong</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of Object Class Qualifier and the Object Class without any spaces, abbreviating the values as required</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$OCQ = Object Class Qualifier</member>
                          <member>$OC = Object Class</member>
                          <member>C:ABBREV(arg) = custom function to return the abbreviation of an argument, or the argument itself if no abbreviation, and all spaces removed</member>
                        </simplelist>
                        <programlisting>concat( C:ABBREV($OCQ),
        C:ABBREV($OC)
      )</programlisting>
                        <!--<para>=SUBSTITUTE( CONCATENATE( $OCQ;$OC);" ";"")</para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Dictionary Entry Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of the Object Class Qualifier, followed by an underscore and space when defined, followed by the Object Class, followed by a period and space, followed by the word &#x201c;Details&#x201d;</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$OCQ = Object Class Qualifier</member>
                          <member>$OC = Object Class</member>
                        </simplelist>
                        <programlisting>concat( if( $OCQ )
          then concat($OCQ,'_ ') else '',
        $OC,
        '. Details' 
      )</programlisting>
                        <!--<para>=CONCATENATE( IF( $OCQ="";"";CONCATENATE( $OCQ;"_ "));$OC;". Details")</para>-->
                      </note>
                    </listitem>
                  </itemizedlist>
                  <note>
                    <title>Example ABIE</title>
                    <para>Fixed value:</para>
                    <simplelist>
                      <member>Component Type=&#x201c;ABIE&#x201d;</member>
                    </simplelist>
                    <para>Entered values:</para>
                    <simplelist>
                      <member>Definition=&#x201c;A class to define common information related to an address.&#x201d;</member>
                      <member>Object Class=&#x201c;Address&#x201d;</member>
                    </simplelist>
                    <para>Derived values:</para>
                    <simplelist>
                      <member>Name=&#x201c;Address&#x201d;</member>
                      <member>Dictionary Entry Name=&#x201c;Address. Details&#x201d;</member>
                    </simplelist>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-DICTIONARY-INFORMATION-FOR-BBIES">
        <title>Dictionary information for BBIEs</title>
        <blockquote role="rule" id="COM08">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM08 Minimum set of dictionary information values describing a BBIE</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each BBIE shall have the following set of dictionary information values:</para>
                  <itemizedlist>
                    <listitem>
                      <para>Component Type (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>shall be the value &#x201c;BBIE&#x201d;</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Cardinality (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>shall be one of:</para>
                          <itemizedlist>
                            <listitem>
                              <para>&#x201c;1&#x201d; (required and not repeatable),</para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;0..1&#x201d; (optional and not repeatable), </para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;0..n&#x201d; (optional and repeatable) or </para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;1..n&#x201d; (required and repeatable)</para>
                            </listitem>
                          </itemizedlist>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Definition (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall describe the BBIE using complete natural language sentences in a single paragraph</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Alternative Business Terms (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall list any other commonly used terms that are synonyms for the ABIE</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the object class for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the object class of the ABIE to which the BBIE belongs</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the property term for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term Possessive Noun (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify a distinguishing nature of the characteristic of the object class</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term Primary Noun (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the principle nature of the characteristic of the object class</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify a characteristic of the object class as the concatenation of Property Term Possessive Noun followed by a space should it exist, followed by the Property Term Primary Noun</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$PTPsN = Property Term Possessive Noun</member>
                          <member>$PTPrN = Property Term Primary Noun</member>
                        </simplelist>
                        <programlisting>concat( $PTPSN, 
        if( $PTPSN )
          then ' ' else '',
        $PTPRN
      )</programlisting>
                        <!--<para>=IF( $PTPsN&lt;>"";CONCATENATE( $PTPsN;" ";$PTPrN);$PTPrN)</para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Representation Term (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the form of the value domain and shall be selected from the set of primary and secondary representation terms specified in CCTS Table 8.3 Permissible Representation Terms (ordered by primary term with secondary terms in parentheses):</para>
                          <itemizedlist>
                            <listitem>
                              <para>Amount</para>
                            </listitem>
                            <listitem>
                              <para>Binary Object (Graphic, Picture, Sound, Video)</para>
                            </listitem>
                            <listitem>
                              <para>Code</para>
                            </listitem>
                            <listitem>
                              <para>Date Time (Date, Time)</para>
                            </listitem>
                            <listitem>
                              <para>Identifier</para>
                            </listitem>
                            <listitem>
                              <para>Indicator</para>
                            </listitem>
                            <listitem>
                              <para>Measure</para>
                            </listitem>
                            <listitem>
                              <para>Numeric (Value, Rate, Percent)</para>
                            </listitem>
                            <listitem>
                              <para>Quantity</para>
                            </listitem>
                            <listitem>
                              <para>Text (Name)</para>
                            </listitem>
                          </itemizedlist>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of Property Term Qualifier, Property Term Possessive Noun and, when the Property Term Primary Noun is not &#x201c;Text&#x201d; or it is &#x201c;Text&#x201d; and both the Property Term Qualifier and the Property Term Possessive
                            Noun are not defined, then the Property Term Primary Noun (abbreviating it as required) and, when the Representation Term is not &#x201c;Text&#x201d; and the Property Term Primary Noun is not equivalent to the Representation Term, then also the Representation Term
                            component (abbreviating it as required), all without intervening spaces</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$PTQ = Property Term Qualifier</member>
                          <member>$PTPsN = Property Term Possessive Noun</member>
                          <member>$PTPrN = Property Term Primary Noun</member>
                          <member>$RT = Representation Term</member>
                          <member>C:ABBREV(arg) = custom function to return the abbreviation of an argument, or the argument itself if no abbreviation, and all spaces removed, or the argument itself if no abbreviation, and all spaces removed</member>
                          <member>C:EQUIVALENT(noun,term) = custom function to return TRUE/FALSE if the primary noun and representation term are to be considered equivalent</member>
                        </simplelist>
                        <programlisting>concat( C:ABBREV($PTQ),
        C:ABBREV($PTPSN),
        if( $PTPRN!='Text' OR 
            ( not($PTQ) AND not($PTPSN) ) )
          then C:ABBREV($PTPRN) else '',
        if( $RT!='Text' AND not(C:EQUIVALENT($PTPRN,$RT)))
          then C:ABBREV($RT) else ''
      )</programlisting>
                        <!--<para>=SUBSTITUTE( CONCATENATE( $PTQ;$PTPsN;IF( $PTPrN="Identifier";"ID"; IF( AND( $PTPrN="Text";OR( $PTQ&lt;>"";$PTPsN&lt;>""));"";$PTPrN)); IF( AND( $RT&lt;>"Text";$PTPrN&lt;>$RT;NOT( AND( $PTPrN="URI";$RT="Identifier")); NOT( AND( $PTPrN="UUID";$RT="Identifier")));IF( $RT="Identifier";"ID";$RT);""));" ";"") </para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Dictionary Entry Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of the Object Class Qualifier, followed by an underscore and space when defined, followed by the Object Class, followed by a period and space, followed by the Property Term Qualifier, followed by an underscore and space when
                            defined, followed by the Property Term, and then, when either the Property Term Qualifier is defined or the Property Term is not equal to the Representation Term, followed by a period and space and the Representation Term</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$OCQ = Object Class Qualifier</member>
                          <member>$OC = Object Class</member>
                          <member>$PTQ = Property Term Qualifier</member>
                          <member>$PT = Property Term</member>
                          <member>$RT = Representation Term</member>
                        </simplelist>
                        <programlisting>concat( $OCQ, 
        if( $OCQ )
          then '_ ' else '',
        $OC,
        '. ',
        $PTQ, 
        if( $PTQ )
          then '_ ' else '',
        $PT,
        if( $PTQ OR ( $PT != $RT ) )
          then concat( '. ',$RT) else ''
      )</programlisting>
                        <!--<para>=CONCATENATE( IF( $OCQ="";"";CONCATENATE( $OCQ;"_ "));$OC;". ";IF( $PTQ="";"";CONCATENATE( $PTQ;"_ "));$PT;IF( OR( $PTQ&lt;>"";$PT&lt;>$RT);CONCATENATE( ". ";$RT);""))</para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Data Type Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall distinguish particular restrictions on a data type from the use of a data type with other (or no) restrictions</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Data Type (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of the Data Type Qualifier followed by an underscore and space when it exists, the Representation Term, followed by a period and space, followed by the word &#x201c;Type&#x201d;</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$DTQ = Data Type Qualifier</member>
                          <member>$RT = Representation Term</member>
                        </simplelist>
                        <programlisting>concat( $DTQ, 
        if( $DTQ )
          then '_ ' else '', 
        $RT,
        '. Type'
      )</programlisting>
                        <!--<para>=CONCATENATE( IF( $DTQ="";"";CONCATENATE( $DTQ;"_ "));$RT;". Type")</para>-->
                      </note>
                    </listitem>
                  </itemizedlist>
                  <note>
                    <title>Example BBIE</title>
                    <para>Fixed value:</para>
                    <simplelist>
                      <member>Component Type=&#x201c;BBIE&#x201d;</member>
                    </simplelist>
                    <para>Entered values:</para>
                    <simplelist>
                      <member>Cardinality=&#x201c;0..1&#x201d;</member>
                      <member>Definition=&#x201c;An additional street name used to further clarify the address.&#x201d;</member>
                      <member>Object Class=&#x201c;Address&#x201d;</member>
                      <member>Property Term Qualifier=&#x201c;Additional&#x201d;</member>
                      <member>Property Term Possessive Noun=&#x201c;Street&#x201d;</member>
                      <member>Property Term Primary Noun=&#x201c;Name&#x201d;</member>
                      <member>Representation Term=&#x201c;Name&#x201d;</member>
                    </simplelist>
                    <para>Derived values:</para>
                    <simplelist>
                      <member>Name=&#x201c;AdditionalStreetName&#x201d;</member>
                      <member>Dictionary Entry Name=&#x201c;Address. Additional_ Street Name. Name&#x201d;</member>
                      <member>Property Term=&#x201c;Street Name&#x201d;</member>
                      <member>Data Type=&#x201c;Name. Type&#x201d;</member>
                    </simplelist>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-DICTIONARY-INFORMATION-FOR-ASBIES">
        <title>Dictionary information for ASBIEs</title>
        <blockquote role="rule" id="COM09">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM09 Minimum set of dictionary information values describing an ASBIE</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each ASBIE shall have the following set of dictionary information values:</para>
                  <itemizedlist>
                    <listitem>
                      <para>Component Type (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>shall be the value &#x201c;ASBIE&#x201d;</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Cardinality (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>shall be one of: </para>
                          <itemizedlist>
                            <listitem>
                              <para>&#x201c;1&#x201d; (required and not repeatable),</para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;0..1&#x201d; (optional and not repeatable), </para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;0..n&#x201d; (optional and repeatable) or </para>
                            </listitem>
                            <listitem>
                              <para>&#x201c;1..n&#x201d; (required and repeatable)</para>
                            </listitem>
                          </itemizedlist>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Definition (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall describe the BBIE using complete natural language sentences in a single paragraph</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Alternative Business Terms (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall list any other commonly used terms that are synonyms for the ABIE</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the object class for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Object Class (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the object class of the ABIE to which the BBIE belongs</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Associated Object Class Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the object class of the associated ABIE for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Associated Object Class (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall identify the object class of the ABIE the ASBIE associates to</para>
                        </listitem>
                        <listitem>
                          <para>the ABIE must exist in the model with the same qualification (or lack thereof) as the ASBIE&#8217;s associated object class qualifier</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term Qualifier (optional)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall qualify the property term for a specific context</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Property Term (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of the Associated Object Class Qualifier, an underscore and a space when defined, and the Associated Object Class</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$AOCQ = Associated Object Class Qualifier</member>
                          <member>$AOC = Associated Object Class</member>
                        </simplelist>
                        <programlisting>concat( $AOCQ, 
        if( $AOCQ )
          then '_ ' else '',
        $AOC
      )</programlisting>
                        <!--<para>=CONCATENATE( IF( $AOCQ="";"";CONCATENATE( $AOCQ;"_ "));$AOC)</para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Representation Term (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the same as the Property Term</para>
                        </listitem>
                      </itemizedlist>
                    </listitem>
                    <listitem>
                      <para>Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of Property Term Qualifier and the Property Term without any spaces or underscore, abbreviating the values as required</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$PTQ = Property Term Qualifier</member>
                          <member>$PT = Property Term</member>
                          <member>C:ABBREV(arg) = custom function to return the abbreviation of an argument, or the argument itself if no abbreviation, and all spaces removed, or the argument itself if no abbreviation, and all spaces removed</member>
                        </simplelist>
                        <programlisting>concat( C:ABBREV($PTQ),
        C:ABBREV($PT)
      )</programlisting>
                        <!--<para>=SUBSTITUTE( SUBSTITUTE( CONCATENATE( $PTQ;IF( $PT="Identifier";"ID";$PT));" ";"");"_";"")</para>-->
                      </note>
                    </listitem>
                    <listitem>
                      <para>Dictionary Entry Name (mandatory)</para>
                      <itemizedlist>
                        <listitem>
                          <para>this value shall be the concatenation of the Object Class Qualifier, followed by an underscore and space when defined, followed by the Object Class, followed by a period and space, followed by the Property Term Qualifier, followed by and underscore and space when
                            defined, followed by the Property Term, and then when the Property Term Qualifier is defined, followed by a period and space and the Representation Term</para>
                        </listitem>
                      </itemizedlist>
                      <note>
                        <title>Example (using an XPath expression)</title>
                        <para>Given the following:</para>
                        <simplelist>
                          <member>$OCQ = Object Class Qualifier</member>
                          <member>$OC = Object Class</member>
                          <member>$PTQ = Property Term Qualifier</member>
                          <member>$PT = Property Term</member>
                          <member>$RT = Representation Term</member>
                        </simplelist>
                        <programlisting>concat( $OCQ, 
        if( $OCQ )
          then '_ ' else '',
        $OC,
        '. ',
        $PTQ, 
        if( $PTQ )
          then '_ ' else '',
        $PT,
        if( $PTQ )
          then concat('. ',$RT) else '' 
      )</programlisting>
                        <!--<para>=CONCATENATE( IF( $OCQ="";"";CONCATENATE( $OCQ;"_ "));$OC;". ";IF( $PTQ="";"";CONCATENATE( $PTQ;"_ "));$PT;IF( $PTQ="";"";CONCATENATE( ". ";$RT)))</para>-->
                      </note>
                    </listitem>
                  </itemizedlist>
                  <note>
                    <title>Example ASBIE</title>
                    <para>Fixed value:</para>
                    <simplelist>
                      <member>Component Type=&#x201c;ASBIE&#x201d;</member>
                    </simplelist>
                    <para>Entered values:</para>
                    <simplelist>
                      <member>Cardinality=&#x201c;0..1&#x201d;</member>
                      <member>Definition=&#x201c;The buyer of the item.&#x201d;</member>
                      <member>Object Class=&#x201c;Forecast&#x201d;</member>
                      <member>Associated Object Class=&#x201c;Customer Party&#x201d;</member>
                      <member>Property Term Qualifier=&#x201c;Buyer&#x201d;</member>
                    </simplelist>
                    <para>Derived values:</para>
                    <simplelist>
                      <member>Name=&#x201c;BuyerCustomerParty&#x201d;</member>
                      <member>Dictionary Entry Name=&#x201c;Forecast. Buyer_ Customer Party. Customer Party&#x201d;</member>
                      <member>Property Term=&#x201c;CustomerParty&#x201d;</member>
                      <member>Representation Term=&#x201c;CustomerParty&#x201d;</member>
                    </simplelist>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-DICTIONARY-ENTRY-NAMES">
        <title>Dictionary entry names</title>
        <blockquote role="rule" id="COM10">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM10 Dictionary entry name uniqueness</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>All dictionary entry names in a semantic model shall be unique.</para>
                  <note>
                    <para>The rationale is that a BIE describes a unique semantic component of business data within a specific business context.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="COM11">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM11 CCTS dictionary information item name value prohibited characters</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>All information items contributing to a component&#8217;s dictionary entry name shall be void of all sensitive dictionary entry name markup characters.</para>
                  <para>The following characters must not be used in any dictionary information values that contribute to the dictionary entry name:</para>
                  <itemizedlist>
                    <listitem>
                      <para>the characters &#x201c;.&#x201d; (period) and &#x201c;_&#x201d; (underscore)</para>
                    </listitem>
                    <listitem>
                      <para>leading, trailing or multiple sequential &#x201c; &#x201d; (space) characters</para>
                    </listitem>
                  </itemizedlist>
                  <note>
                    <para>The rationale is that prohibiting these characters in name values prevents ambiguity when assembled into the dictionary entry name using these characters to provide structure.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="COM12">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>COM12 Use of leading upper case letter in dictionary entry name values</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>All words that are not abbreviated in name values contributing to the dictionary entry name shall have a leading upper-case letter and all other letters in lower-case.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
    </section>
    <section id="S-STRUCTURE-OF-AN-ABIE">
      <title>Structure of an ABIE</title>
      <blockquote role="rule" id="COM13">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM13 ABIE contents cannot be empty</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every ABIE shall contain at least one BIE.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="COM14">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>COM14 ABIE children ordering</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every ABIE shall have all of its BBIE children listed before its ASBIE children.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
  </section>
  <section id="S-XML-VALIDATION-ARTEFACTS">
    <title>XML validation artefacts</title>
    <section id="S-XML-VALIDATION-ARTEFACTS-OVERVIEW">
      <title>XML validation artefacts overview</title>
      <para>These NDR provide for expressing the semantic model of an information bundle as XML artefacts that provide for definition and validation of the structure and content of XML Documents. </para>
      <para>There are two types of validation artefacts required for XML Documents:</para>
      <orderedlist>
        <listitem>
          <para>W3C Schemas are used to define and validate <emphasis role="italic">the structure</emphasis> of elements and data content, and</para>
        </listitem>
        <listitem>
          <para>OASIS CVA expressions and OASIS genericode files are used to define and validate <emphasis role="italic">the values</emphasis> of data content. </para>
        </listitem>
      </orderedlist>
      <para>These rules do not require these artefacts to be located in any particular directory structure. </para>
    </section>
    <section id="S-XML-NAMESPACES">
      <title>XML Namespaces</title>
      <para>An important aspect of identifying and distinguishing the names used for information in XML documents is by using namespaces. Like-named constructs are distinguished by having different namespaces. </para>
      <note>
        <para>Namespace abbreviations (also used here as namespace prefixes) in these examples are not mandatory and have been selected solely for convenience and consistency. Implementations of these NDR and the documents governed by these NDR are welcome to use any namespace abbreviation or
          namespace prefix for any of the namespaces defined or referenced.</para>
      </note>
      <blockquote id="NAM01" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>NAM01 Namespaces for information found in information bundles</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>BIEs expressed in XML documents shall use the following set of namespaces:</para>
                <itemizedlist>
                  <listitem>
                    <para>one namespace for each Document ABIE</para>
                    <note>
                      <para>These namespaces are not abbreviated in these examples as they are not imported or included.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for all BBIE components</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;cbc&#x201d; for &#x201c;common basic components&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for all Library ABIE components</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;cac&#x201d; for &#x201c;common aggregate components&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for the extension collection and extension metadata elements</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;ext&#x201d;.</para>
                    </note>
                  </listitem>
                </itemizedlist>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <para>Each extension has a number of namespaces distinct from the document, library and other extensions.</para>
      <blockquote id="NAM02" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>NAM02 Namespaces for an extension</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>BIEs expressed in extensions shall use the following set of namespaces:</para>
                <itemizedlist>
                  <listitem>
                    <para>one namespace for the apex ABIE of the extension</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;myext1&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for all BBIE extension components that are not existing library components</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;mycbc1&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for all ABIE extension components that are not existing Library ABIE components</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;mycac1&#x201d;.</para>
                    </note>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>The structure of an extension parallels that of a Document ABIE with the distinct apex namespace, BBIE namespace and Library ABIE namespace. Where possible the extension should reuse existing library components that have their own namespaces. This parallel approach makes it
                    easier to consider incorporating extension elements in future versions of the library simply by changing the namespace.</para>
                </note>
                <note>
                  <para>In these abbreviations &#x201c;my&#x201d; is used as in the first-person possessive pronoun, and &#x201c;1&#x201d; implies one of multiple extension namespaces</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <para>In addition to the namespaces for the elements in XML documents, the dictionary information regarding BBIE data types is also distinguished using namespaces. </para>
      <blockquote id="NAM03" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>NAM03 Namespaces for BBIE data types</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The expression of data type information supporting BBIE definitions shall use the following set of namespaces:</para>
                <itemizedlist>
                  <listitem>
                    <para>one namespace for all qualified data types</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;qdt&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for all unqualified data types (permissible representation terms)</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;udt&#x201d;.</para>
                    </note>
                  </listitem>
                  <listitem>
                    <para>one namespace for CCTS Core Component Type definitions</para>
                    <note>
                      <para>This namespace is abbreviated in these examples as &#x201c;ccts-cct&#x201d;.</para>
                    </note>
                  </listitem>
                </itemizedlist>
                <note>
                  <para>These namespaces are used only for dictionary information definition and not for BIEs themselves. As such they never appear in the XML document and are therefore never declared in an XML artefact governed by these NDR.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <para>An implementation of these NDR may choose to have additional namespaces for the expression of type information.</para>
    </section>
    <section id="S-XSD-IMPORT-INCLUDE-TREE">
      <title>XSD import/include tree</title>
      <para>The relationships between the XSD schema fragments that are described in this section are shown in <xref linkend="F-POSSIBLE-IMPORT-INCLUDE-HIERARCHY-OF-XSD-SCHEMA-EXPRESSIONS"/>.</para>
      <para>For reference purposes each box is a schema fragment and the parenthesized name tokens identify the namespace associated with the schema fragment. </para>
      <figure id="F-POSSIBLE-IMPORT-INCLUDE-HIERARCHY-OF-XSD-SCHEMA-EXPRESSIONS">
        <title>Possible import/include hierarchy of XSD schema expressions</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="art/&dir;-v&version;-allschema.png"/>
          </imageobject>
          <textobject>
            <phrase>XSD Schema Structure</phrase>
          </textobject>
        </mediaobject>
      </figure>
      <para>In this diagram the unshaded boxes represent fragments of the common schema. Once created there is no need for implementers of the schema to modify these fragments. To ensure they are not inadvertently modified, these may be marked as read-only files in the file system. </para>
      <para>The shaded boxes represent fragments that extend the common schema. The Extension Content Data Type defines which schemas are in play for the extension point of an extension item in the extension collection. This fragment is distinguished from other fragments in that it is initially
        created by the designers of the schema and subsequently may be replaced by implementers. </para>
    </section>
    <section id="S-SCHEMA-FRAGMENT-ANNOTATIONS">
      <title>Schema fragment annotations</title>
      <para>There are no constraints regarding what annotation information may be added to the W3C Schema expressions in XSD files. </para>
      <para>Good practice suggests augmenting the schema fragments with dictionary information and governance information using W3C Schema declaration annotations and XML comments. This information may be useful to the human reader or to tools exploiting the schema information in providing
        functionality to operators, but it does not impact on the interpretation of constraints imposed on XML documents being validated with the XSD documents. </para>
      <para>W3C Schema annotations are typically defined for and with each of the many declarations in the XSD file. Good practice suggests providing a version of the published XSD files without annotations so as not to burden runtime processing. A runtime schema processor has no use of
        informational annotations and may incur unnecessary processing time ingesting and accommodating the information. </para>
      <para>Separate from the concept of W3C Schema annotations are simple XML comments that annotate schema. Such comments are ignored by schema processors and do not burden their processing. The information in these comments may be useful to implementers and, in some cases, may be required for
        intellectual property reasons imposed by the designers. Good practice suggests that such information includes module identification, module revision metadata and copyright declarations. The information in these comments may be useful to implementers and may by required by licensing
        conditions on the use of the files.</para>
      <para>The W3C Schema version annotation (the &#x201c;version&#x201d; attribute of the xsd:schema element) may be used to record the release version of the collection of schema fragments. </para>
    </section>
    <section id="S-XML-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
      <title>XML schema fragments and declarations</title>
      <section id="S-XML-SCHEMA-FRAGMENTS-FOR-DOCUMENT-ABIES">
        <title>XML schema fragments for Document ABIEs</title>
        <blockquote role="rule" id="FRG01">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG01 Document ABIE schema fragments</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one schema fragment created for each Document ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG02">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG02 Document ABIE element declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each Document ABIE schema fragment shall include a single element declaration, that being for the Document ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG03">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG03 Document ABIE type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each Document ABIE schema fragment shall include a single type declaration, that being for the content of the Document ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-FRAGMENT-FOR-LIBRARY-ABIES">
        <title>XML schema fragment for Library ABIEs</title>
        <blockquote role="rule" id="FRG04">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG04 Library ABIE schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one common schema fragment created to contain all ASBIEs (that is, from every Document ABIE and every Library ABIE) and all Library ABIEs.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonAggregateComponents-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="FRG05" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG05 Library ABIE element declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The common Library ABIE schema fragment shall include an element declaration for every ASBIE in the model (that is, from every Document ABIE and every Library ABIE) and for every Library ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="FRG06" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG06 Library ABIE type declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The common Library ABIE schema fragment shall include a type declaration for every Library ABIE, each being for the content of each Library ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <para>There are no constraints on the order of the ABIE declarations in the schema expression.</para>
        <note>
          <para>This lack of an order constraint may seem in conflict with the semantic model library constraint of alphabetical order of ABIE components. Whereas the semantic ABIE components are organized for the benefit of the human reader, the order of the schema component declarations does not
            affect the schema processor. However, using alphabetical order in the schema fragment may be a convenience for the human reader of the schema expressions.</para>
        </note>
      </section>
      <section id="S-XML-SCHEMA-FRAGMENT-FOR-BBIES">
        <title>XML schema fragment for BBIEs</title>
        <blockquote role="rule" id="FRG07">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG07 BBIE schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one common schema fragment created to describe all BBIEs in the model (that is, from every Document ABIE and every Library ABIE).</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonBasicComponents-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG08">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG08 BBIE element declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The common BBIE schema fragment shall include an element declaration for every BBIE in the model (that is, from every Document ABIE and every Library ABIE) describing the content of each BBIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG09">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG09 Library ABIE type declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The one BBIE schema fragment shall include a type declaration for every BBIE in the model (that is, from every Document ABIE and every Library ABIE), each being for the content of each BBIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <para>There are no constraints on the order of the BBIE declarations in the schema expression.</para>
        <note>
          <para>The order of the schema component declarations does not affect the schema processor. However, using alphabetical order in the schema fragment may be a convenience for the human reader of the schema expressions.</para>
        </note>
      </section>
      <section id="S-XML-SCHEMA-DECLARATIONS-FOR-ALL-BIES">
        <title>XML schema declarations for all BIEs</title>
        <blockquote role="rule" id="DCL01">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL01 Element declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BIE element declaration shall be global.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL02">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL02 Element declaration references</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BIE element in an ABIE type definition shall be declared by reference.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL03">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL03 Type declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BIE type declaration shall be global.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-DECLARATIONS-FOR-ABIES">
        <title>XML schema declarations for ABIEs</title>
        <blockquote role="rule" id="DCL04">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL04 ABIE element declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every ABIE element shall be declared with the ABIE name as the element name and the ABIE name suffixed with &#x201c;Type&#x201d; as the type.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:element name="ApplicationResponse"
             type="ApplicationResponseType"/></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL05">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL05 ABIE type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every ABIE complex type name shall be declared with the name of the ABIE suffixed with &#x201c;Type&#x201d; as the name.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="ApplicationResponseType">
 <emphasis>(... contents ...}</emphasis>
&lt;/xsd:complexType></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="DCL06" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL06 Library ABIE type declaration content order</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The members of a Library ABIE shall be ordered first with a reference to the extension collection element, followed by the sequence (in the order the BIEs appear in the semantic model of the ABIE) of all BBIE element references first, followed by all ASBIE references.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="CatalogueRequestLineType">
 &lt;xsd:sequence>
  &lt;xsd:element ref="ext:UBLExtensions"
               minOccurs="0" maxOccurs="1"/>
  &lt;xsd:element ref="cbc:ID" minOccurs="1" maxOccurs="1"/>
  &lt;xsd:element ref="cbc:ContractSubdivision"
               minOccurs="0" maxOccurs="1"/>
  &lt;xsd:element ref="cbc:Note" minOccurs="0"
               maxOccurs="unbounded"/>
  &lt;xsd:element ref="cac:LineValidityPeriod"
               minOccurs="0" maxOccurs="1"/>
  &lt;xsd:element ref="cac:RequiredItemLocationQuantity"
               minOccurs="0" maxOccurs="unbounded"/>
  &lt;xsd:element ref="cac:Item" minOccurs="1" maxOccurs="1"/>
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="DCL07" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL07 Document ABIE type declaration content order</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The members of a Document ABIE shall be ordered first with a reference to the extension collection element, followed by the sequence (in the order the BIEs appear in the semantic model of the ABIE) of all BBIE element references first, followed by all ASBIE references.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="ApplicationResponseType">
  &lt;xsd:sequence>
     &lt;xsd:element ref="ext:UBLExtensions"
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:UBLVersionID"
                      minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:CustomizationID"
                      minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:ProfileID"
                      minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:ProfileExecutionID"
                      minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:ID" 
                     minOccurs="1" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:UUID" 
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:IssueDate" 
                     minOccurs="1" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:IssueTime" 
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:ResponseDate" 
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:ResponseTime" 
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cbc:Note" 
                     minOccurs="0" maxOccurs="unbounded"/>
     &lt;xsd:element ref="cbc:VersionID" 
                     minOccurs="0" maxOccurs="1"/>
     &lt;xsd:element ref="cac:Signature" 
                     minOccurs="0" maxOccurs="unbounded"/>
     &lt;xsd:element ref="cac:SenderParty"
                      minOccurs="1" maxOccurs="1"/>
     &lt;xsd:element ref="cac:ReceiverParty" 
                     minOccurs="1" maxOccurs="1"/>
     &lt;xsd:element ref="cac:DocumentResponse" 
                     minOccurs="0" maxOccurs="unbounded"/>
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting>
                  </note>
                  <note>
                    <para>The rationale for positioning extension information at the very start of the XML instance is to allow processing applications acting sequentially on the document to consume and cache all non-modeled extension information in preparation for consuming any of the modeled
                      document information. Should extension information follow modeled information, the sequential processing of the modeled information would have passed before recognizing the need to associate extension information. In essence, such a sequential processing application would have
                      to cache the entire document, thus losing the benefit of sequential processing.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <note>
          <para>That the rules DCL06 and DCL07 now read the same is due to the evolution of this specification. The rules for Library ABIEs and for Document ABIEs historically were different. To accommodate the future case where may be distinctions, it was decided not to replace the two rules with a
            common rule for all ABIEs.</para>
        </note>
        <blockquote role="rule" id="DCL08">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL08 Document ABIE extension element cardinality</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>In the content type for every Document ABIE the extension collection element cardinality shall be declared as optional and not repeatable.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>     &lt;xsd:element ref="ext:UBLExtensions"
                     minOccurs="0" maxOccurs="1"/></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-DECLARATIONS-FOR-ASBIES">
        <title>XML schema declarations for ASBIEs</title>
        <blockquote role="rule" id="DCL09">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL09 ASBIE schema element declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every ASBIE element shall be declared with the ASBIE name as the element name and the ABIE name of the associated object class suffixed with &#x201c;Type&#x201d; as the type.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:element name="Party" type="PartyType"/></programlisting>
                  </note>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:element name="AgentParty" type="PartyType"/></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-DECLARATIONS-FOR-BBIES">
        <title>XML schema declarations for BBIEs</title>
        <blockquote role="rule" id="DCL10">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL10 BBIE element declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BBIE element shall be declared with the BBIE name as the element name and the concatenation of the BBIE name and &#x201c;Type&#x201d; as the type.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:element name="SourceCurrencyCode" 
             type="SourceCurrencyCodeType"/></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL11">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL11 BBIE unqualified type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BBIE element type with an unqualified data type shall be declared as simple content restricted from a base of the corresponding unqualified data type without the addition of any additional attributes.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="SourceCurrencyBaseRateType">
   &lt;xsd:simpleContent>
      &lt;xsd:restriction base="udt:RateType"/>
   &lt;/xsd:simpleContent>
&lt;/xsd:complexType></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL12">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL12 BBIE qualified type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every BBIE element type with a qualified data type shall be declared as simple content restricted from a base of the corresponding qualified data type without the addition of any additional attributes.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="SourceCurrencyCodeType">
   &lt;xsd:simpleContent>
      &lt;xsd:restriction base="qdt:CurrencyCodeType"/>
   &lt;/xsd:simpleContent>
&lt;/xsd:complexType></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-DECLARATIONS-FOR-QUALIFIED-DATA-TYPES">
        <title>XML schema declarations for Qualified Data Types</title>
        <blockquote role="rule" id="DCL13">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL13 Qualified data type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every qualified data type shall be declared as simple content restricted from a base of the corresponding unqualified data type without the addition of any additional attributes.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="CurrencyCodeType">
   &lt;xsd:simpleContent>
      &lt;xsd:restriction base="udt:CodeType"/>
   &lt;/xsd:simpleContent>
&lt;/xsd:complexType></programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
    </section>
    <section id="S-EXTENSION-XML-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
      <title>Extension XML schema fragments and declarations</title>
      <section id="S-EXTENSION-INFORMATION-IN-XML">
        <title>Extension information in XML</title>
        <para>The content type for a Document ABIE contains a single optional extension collection element in order to provide for the inclusion of data in the XML that is in addition to the data of the information bundle for the document. Such data may include content designed by other
          organizations (e.g. signature information) as well as augmentations of the semantic model. </para>
        <para>An extension collection element contains one or more extension elements. Each extension element has a suite of metadata elements used to describe the extension. The extension content may reuse existing ABIEs or BBIEs and may contain XML content not modeled as BIEs.</para>
        <para>The extension collection and metadata are XML elements implemented as schema fragments and constructs independent of the semantic model.</para>
        <!--<blockquote role="rule"><informaltable frame="all" border="1" width="100%"><thead><tr><td>EXT01 Document ABIE reference to extension collection element</td></tr></thead><tbody><tr><td>The first element referenced in every Document ABIE shall be to the extension collection element, followed by the declarations for the BIEs modeled for the Document ABIE.<note><title>Example</title><programlisting>&lt;xsd:complexType name="ApplicationResponseType">
  &lt;xsd:sequence>
     &lt;xsd:element ref="ext:UBLExtensions"
                     minOccurs="0" maxOccurs="1"/>
     {... content ...}
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting></note><note><para>The rationale for positioning extension information at the very start of the XML instance is to allow processing applications acting sequentially on the document to consume and cache all non-modeled extension information in preparation for consuming any of the modeled document information. Should extension information follow modeled information, the sequential processing of the modeled information would have passed before recognizing the need to associate extension information. In essence, such a sequential processing application would have to cache the entire document, thus losing the benefit of sequential processing.</para></note></td></tr></tbody></informaltable></blockquote>-->
      </section>
      <section id="S-EXTENSION-COLLECTION-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
        <title>Extension collection schema fragments and declarations</title>
        <blockquote role="rule" id="EXT01">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT01 Extension collection schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension collection schema fragment shall include the declarations of the extension collection element, the extension element, the extension content element, the extension metadata elements and any required type information for metadata elements that are not BIEs in the
                    Document ABIEs and Library ABIEs.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonExtensionComponents-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT02">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT02 Extension content element declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension collection schema fragment shall include the declaration of the mandatory extension content element, but not the type information for the extension content element.</para>
                  <note>
                    <para>The rationale for not including the type information for the extension point element is that the type is subject to change, while the extension collection, the extension item and extension item metadata element and type information is not. This separation allows the
                      extension collection and item schema fragment to be deployed as read-only, while the extension point data type schema fragment can be deployed as writable in order to be defined by users.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT03">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT03 Extension collection element content</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The document&#8217;s extension collection shall have one or more extension elements as its content.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="UBLExtensionsType">
  &lt;xsd:sequence>
    &lt;xsd:element ref="UBLExtension"
          minOccurs="1" maxOccurs="unbounded"/>
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting>
                  </note>
                  <note>
                    <para>The rationale is that different users of a document may have different extension items added to the content. Also, different extensions may be thematically distinguished (e.g. the digital signature extension is semantically separate from an extension augmenting invoice line
                      content).</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="EXT04" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT04 Extension element content ordering</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension element shall declare all available metadata elements (if any) in advance of a last mandatory single extension content element being the extension point under which the extension information is added to the document.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:complexType name="UBLExtensionType">
  &lt;xsd:sequence>
    &lt;xsd:element ref="cbc:ID"
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="cbc:Name" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionAgencyID"
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionAgencyName" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionVersionID" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionAgencyURI" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionURI" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionReasonCode" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionReason" 
                 minOccurs="0" maxOccurs="1"/>
    &lt;xsd:element ref="ExtensionContent" 
                 minOccurs="1" maxOccurs="1"/>
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting>
                  </note>
                  <note>
                    <para>There are no constraints on the selection, name, definition or cardinality of the extension metadata elements.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-XML-SCHEMA-FRAGMENT-FOR-THE-EXTENSION-CONTENT-DATA-TYPE-DECLARATION">
        <title>XML schema fragment for the extension content data type declaration</title>
        <blockquote role="rule" id="EXT05">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT05 Extension content data type schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension content element type schema fragment shall include the declaration of the content type for the extension content element and any import statements defining constraints on recognized constructs.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-ExtensionContentDataType-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="EXT06" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT06 Extension content data type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension content element type schema fragment shall contain only a single complex type declaration being a sequence of exactly one element in a namespace other than the extension namespace to be processed with lax validation.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>  &lt;xsd:complexType name="ExtensionContentType">
    &lt;xsd:sequence>
      &lt;xsd:any namespace="##other" processContents="lax"
               minOccurs="1" maxOccurs="1"/>
    &lt;/xsd:sequence>
  &lt;/xsd:complexType></programlisting>
                  </note>
                  <note>
                    <para>The rationale for the lax validation is to allow for the extension point to contain, without error, any element for which there are no constraints in any schema fragment imported or included in the validation step.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT07">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT07 Extension content data type imports</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension content element type schema fragment may contain import directives for the expected data content of an extension.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>&lt;xsd:import namespace="urn:oasis:names:specification:
ubl:schema:xsd:CommonSignatureComponents-2"
  schemaLocation="UBL-CommonSignatureComponents-2.2.xsd"/></programlisting>
                  </note>
                  <note>
                    <para>The rationale for including import directives is to validate those constructs found in an extension that are expected.</para>
                  </note>
                  <note>
                    <para>There is no order to the import directives.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
    </section>
    <section id="S-QUALIFIED-DATA-TYPES-XML-SCHEMA-FRAGMENT-AND-DECLARATIONS">
      <title>Qualified data types XML schema fragment and declarations</title>
      <blockquote role="rule" id="QDT01">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT01 Qualified data types schema fragment</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The qualified data types schema fragment shall include the declarations of any qualified data types referenced in the schema fragment for BBIEs. </para>
                <note>
                  <title>Example</title>
                  <para>In UBL 2.2 the <literal>UBL-QualifiedDataTypes-2.2.xsd</literal> fragment serves this purpose.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT02">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT02 Qualified data type declaration name</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type shall be declared using the name of the data type qualifier followed by the unqualified data type name.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT03">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT03 Qualified data type declaration basis</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type shall be based on an unqualified data type, imposing whatever qualifications are required to be expressed using XSD schema semantics. </para>
                <note>
                  <para>In UBL 2.2 there are no qualifications expressed using XSD schema semantics.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT04">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT04 Qualified data type declaration constraint</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type declaration shall be such that every possible instance of the declared type is also an instance of the base type.</para>
                <note>
                  <para>This constraint prevents additions of anything that is not part of the base type, such as the introduction of any new attributes or sub-elements, or any less-constrained element or attribute values.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-UNQUALIFIED-DATA-TYPES-XML-SCHEMA-FRAGMENT-AND-DECLARATIONS">
      <title>Unqualified data types XML schema fragment and declarations</title>
      <blockquote role="rule" id="UDT01">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT01 Unqualified data types schema fragment</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The unqualified data types schema fragment shall include the declarations of all unqualified data types referenced in the schema fragment for BBIEs. </para>
                <note>
                  <title>Example</title>
                  <para>The <ulink url="xsd/BDNDR-UnqualifiedDataTypes-1.1.xsd" conformance="skip"><literal>BDNDR-UnqualifiedDataTypes-1.1.xsd</literal></ulink> is an example fragment that serves this purpose.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="UDT02" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT02 Unqualified data types declaration inclusions</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>An unqualified data type shall be declared for every one of the permitted Primary Representation Terms and Secondary Representation Terms defined as Permissible Representation Terms in the Core Component Technical Specification <xref linkend="ccts"/>.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="UDT03">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT03 Unqualified data types declaration exclusions</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Unqualified data types shall only be declared for the permitted Primary Representation Terms and Secondary Representation Terms defined as Permissible Representation Terms in the Core Component Technical Specification <xref linkend="ccts"/>.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="UDT04" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT04 Unqualified data types declaration base</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every unqualified data type shall be either a restriction on one of the approved Core Component Types defined in the Core Component Technical Specification <xref linkend="ccts"/>, or an extension of a base XSD data type.</para>
                <note>
                  <para>This constraint may be accomplished by either restricting a declaration imported from the Core Component Types schema or by wholly replacing the corresponding Core Component Types schema declaration.</para>
                </note>
                <note>
                  <para>The rational for having UDT declarations is to impose some XSD syntax semantics on top of the more general decimal and string lexical syntax defined in the CCTS specification of Core Component Types. For example, the CCTS Core Component Type for date and time is a simple
                    string without constraint. Such lax structuring of the field value does not serve users in that no particular format is obligated. The UDT can impose, for example, the xsd:dateTime lexical syntax on all date and time values, overriding the CCTS definition.</para>
                </note>
                <note>
                  <para>This rule does allow an optional supplementary component defined in the CCTS Core Component Type not to be available in the associated unqualified data type. For example, if the UDT implements a built-in XSD data type for the component then there is no use of a format
                    supplementary component and associated attribute and so the format attribute declaration can be omitted and, thereby, be unavailable for use for that data type.</para>
                </note>
                <note>
                  <title>Example 1</title>
                  <para>In this example the unqualified data type uses the base type without change:</para>
                  <programlisting>  &lt;xsd:complexType name="NumericType">
    &lt;xsd:simpleContent>
      &lt;xsd:restriction base="ccts-cct:NumericType"/>
    &lt;/xsd:simpleContent>
  &lt;/xsd:complexType></programlisting>
                </note>
                <note>
                  <title>Example 2</title>
                  <para>In this example the unqualified data type redeclares the base type&#8217;s optional attribute as mandatory:</para>
                  <programlisting>  &lt;xsd:complexType name="MeasureType">
    &lt;xsd:simpleContent>
      &lt;xsd:restriction base="ccts-cct:MeasureType">
        &lt;xsd:attribute name="unitCode" 
                       type="xsd:normalizedString"
                       use="required"/>
      &lt;/xsd:restriction>
    &lt;/xsd:simpleContent>
  &lt;/xsd:complexType></programlisting>
                </note>
                <note>
                  <title>Example 3</title>
                  <para>In this example the unqualified data type replaces the base type with no attributes and with an XSD built-in type for content:</para>
                  <programlisting>  &lt;xsd:complexType name="DateTimeType">
    &lt;xsd:simpleContent>
      &lt;xsd:extension base="xsd:dateTime"/>
    &lt;/xsd:simpleContent>
  &lt;/xsd:complexType></programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="UDT05">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT05 Unqualified data types declaration constraint</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every unqualified data type declaration that is not a formal restriction of one of the Core Component Type declarations defined in the Core Component Technical Specification <xref linkend="ccts"/> schema fragment shall be such that every possible instance of the declared type
                  is also an instance of one of the Core Component Types as defined in CCTS.</para>
                <note>
                  <para>This constraint prevents additions of anything that is not part of the base Core Component Type, such as the introduction of any new attributes or sub-elements, or any less-constrained element or attribute values.</para>
                </note>
                <note>
                  <title>Example</title>
                  <para>In this example the unqualified data type for a date is based on the XSD data type for date and all instances of the date data type are also instances of the string-based <literal>DateTimeType</literal> data type in CCTS:</para>
                  <programlisting>  &lt;xsd:complexType name="DateType">
    &lt;xsd:simpleContent>
      &lt;xsd:extension base="xsd:date"/>
    &lt;/xsd:simpleContent>
  &lt;/xsd:complexType></programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-CCTS-CORE-COMPONENT-TYPES-XML-SCHEMA">
      <title>CCTS Core Component Types XML schema</title>
      <para>All primitive data types correspond to the 10 CCTS Primary Representation Terms defined in <xref linkend="ccts"/> Section 8-3 &#x201c;Permissible Representation Terms&#x201d;.</para>
      <blockquote id="CCT01" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>CCT01 CCTS Core Component Type schema</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The core component type schema of primitive data types for primary representation terms on which the unqualified data types are based shall be an unmodified copy of the schema fragment published by UN/CEFACT with the following embedded title and metadata:</para>
                <programlisting>CCTS Core Component Type Schema Module

Module of Core Component Type
Agency: UN/CEFACT
VersionID: 1.1
Last change: 14 January 2005</programlisting>
                <note>
                  <title>Example</title>
                  <para>The <ulink url="xsd/BDNDR-CCTS_CCT_SchemaModule-1.1.xsd" conformance="skip"><literal>BDNDR-CCTS_CCT_SchemaModule-1.1.xsd</literal></ulink> is an example fragment that serves this purpose.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-XML-ATTRIBUTE-NAMES">
      <title>XML attribute names</title>
      <blockquote role="rule" id="ATT01">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>ATT01 Leading name part in attribute names</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every attribute&#8217;s derived name shall be composed with the leading name part entirely in lower-case, even when that name part is an agreed-upon abbreviation.</para>
                <note>
                  <title>Example</title>
                  <para>The data type of the BBIE known as &#x201c;Binary Object. Uniform Resource. Identifier&#x201d; is represented with the attribute named &#x201c;uri&#x201d;</para>
                </note>
                <note>
                  <para>Terms used in attribute names of supplementary components of CCTS Table 8-2 &#x201c;Approved Core Component Type Content and Supplementary Components&#x201d; are subject to abbreviation.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="ATT02">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>ATT02 Non-leading abbreviations in attribute names</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>When an attribute&#8217;s derived name is composed with an agreed-upon abbreviation in other than the leading name part, the abbreviation shall be used unchanged.</para>
                <note>
                  <title>Examples</title>
                  <simplelist>
                    <member>The data type of the BBIE known as &#x201c;Amount Currency. Identifier&#x201d; is represented with the attribute named &#x201c;currencyID&#x201d;</member>
                    <member>The data type of the BBIE known as &#x201c;Amount Currency. Code List Version. Identifier&#x201d; is represented with the attribute named &#x201c;currencyCodeListVersionID&#x201d;</member>
                  </simplelist>
                </note>
                <note>
                  <para>Terms used in attribute names of supplementary components of CCTS Table 8-2 &#x201c;Approved Core Component Type Content and Supplementary Components&#x201d; are subject to abbreviation.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-DATA-TYPE-QUALIFICATIONS-IN-XML">
      <title>Data type qualifications in XML</title>
      <para>Data types may be qualified to define additional constraints on the possible values of the BBIEs of that data type. These constraints may be subject to change over time and so should be applied in a manner that allows modification of the data type qualifications without impacting the
        schema. </para>
      <para>Code lists and identifier lists are examples of controlled sets of values (e.g. currency codes, country codes, product identifiers, etc.).</para>
      <para>For some communities of users (e.g. those with business-oriented XML documents) the management of controlled vocabularies presents particular challenges for document modeling. While communities may standardize document structures, trading partners within the community have their own
        constraints that may change on an hourly basis yet must work within the community framework.</para>
      <para>Externalizing the list in a genericode file expresses the enumeration as a resource available to the application for data entry. However, the choice of genericode file may vary on a per-information item basis due to the item&#8217;s document context, or perhaps vary again for particular
        trading partners. Expressing the appropriate mappings in a colloquial fashion inhibits interoperability and the sharing of resources and program code. </para>
      <para>A context/value association file specifies the relationship from information items found in different document contexts to one or more external genericode files for each item. With these relationships a directed authoring environment can precisely direct the editing of individual
        information items. Different context/value association files can then be used to create instances for different purposes that have different constraints on the enumerations used therein.</para>
      <blockquote role="rule" id="DTQ01">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ01 Data type qualification CVA file</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Data type qualifications that are not expressed as qualified data types using XSD schema semantics may be expressed using the OASIS Context Value Association <xref linkend="oasiscva"/> XML vocabulary. </para>
                <note>
                  <para>The CVA file provides for users to associate value validation constraint expressions and/or coded domain value enumerations with different CVA contexts. A value validation constraint is expressed using XPath. A coded domain value enumeration is expressed using one or the
                    union of more than one OASIS genericode file.</para>
                </note>
                <note>
                  <para>The CVA expressions typically are not used at runtime. More likely the CVA expressions and their associated genericode files would be processed or compiled into a runtime validation artefact. These rules do not constrain where this runtime artefact would be kept, but good
                    practice suggests a location separate from the XSD schemas.</para>
                </note>
                <note>
                  <title>Example</title>
                  <para>In UBL 2.2 the CVA expression is the <literal>cva/UBL-DefaultDTQ-2.2.cva</literal> file, the associated runtime artefact is the <literal>val/UBL-DefaultDTQ-2.2.xsl</literal> XSLT stylesheet and the referenced genericode files are located in the <literal>cl/</literal>
                    subdirectory of each of the UBL 2.2 distribution, the UBL 2.1 distribution and the UBL 2.0 distribution.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="DTQ02" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ02 Data type element content qualifications</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A CVA context shall be created for every BBIE with a non-empty value in the CCTS dictionary information for the data type qualifier.</para>
                <note>
                  <title>Example</title>
                  <para>Entered dictionary information values:</para>
                  <simplelist>
                    <member>Name=&#x201c;ChannelCode&#x201d;</member>
                    <member>Data Type Qualifier=&#x201c;Channel&#x201d;</member>
                    <member>Representation Term=&#x201c;Code&#x201d;</member>
                    <member>Data Type=&#x201c;Channel_ Code. Type&#x201d;</member>
                  </simplelist>
                  <para>In this example the constraints on the value of the <literal>cbc:ChannelCode</literal> element are described by the union of three constraint expressions identified by &#x201c;<literal>Channel-2.0</literal>&#x201d;, &#x201c;<literal>Channel-2.1</literal>&#x201d; and
                      &#x201c;<literal>Channel-2.2</literal>&#x201d;:</para>
                  <programlisting>&lt;Context values="Channel-2.0 Channel-2.1 Channel-2.2"
         metadata="cctsV2.01-code"
         address="cbc:ChannelCode"/></programlisting>
                </note>
                <note>
                  <title>Example</title>
                  <para>In this example the constraints on the value of the <literal>cbc:PayableAmount</literal> element child of the <literal>cac:LegalMonetaryTotal</literal> element are described by the single constraint expression identified by &#x201c;maxValue&#x201d;:</para>
                  <programlisting>&lt;Context values="maxValue"
         address="cac:LegalMonetaryTotal/
                  cbc:PayableAmount"/></programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="DTQ03" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ03 Data type attribute content qualifications</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A CVA context shall be created for every CCTS supplementary component to be validated.</para>
                <note>
                  <title>Example</title>
                  <para>In this example the constraints on the value of the <literal>currencyID</literal> attribute are described by the union of two constraint expressions identified by &#x201c;<literal>Currency-2.0</literal>&#x201d;, &#x201c;<literal>Currency-2.1</literal>&#x201d; and
                      &#x201c;<literal>Currency-2.2</literal>&#x201d;:</para>
                  <programlisting>&lt;Context values="Currency-2.0 Currency-2.1 Currency-2.2"
         metadata="cctsV2.01-amount"
         address="@currencyID"/></programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="DTQ04">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ04 Value test constraints</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A CVA value test constraint shall be written as an XPath expression.</para>
                <note>
                  <title>Example</title>
                  <para>In this example the constraint on the value is that its numeric value be less than 10,000:</para>
                  <programlisting>&lt;ValueTest xml:id="maxValue"
           test=". &amp;lt; 10000"/></programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="DTQ05">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ05 Value list constraints</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A CVA value list constraint shall reference an OASIS genericode <xref linkend="gc"/> file.</para>
                <note>
                  <title>Example</title>
                  <programlisting>&lt;ValueList xml:id="Channel-2.2"
  uri="../cl/gc/default/ChannelCode-2.2.gc"/></programlisting>
                </note>
                <note>
                  <para>Each genericode file defines the metadata associated with the enumeration of values therein. Therefore, the union of multiple genericode files is required when the constraint includes values from different enumerations associated with distinctive metadata.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="DTQ06">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>DTQ06 Value metadata association</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>The CVA instance metadata sets shall identify the XML attributes used in Open-edi user data that are associated with the supplementary components of the unqualified data types.</para>
                <note>
                  <title>Example</title>
                  <para>In UBL 2.2 the <literal>UBL-DefaultDTQ-2.2.cva</literal> fragment includes such declarations.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
  </section>
  <section id="S-JSON-VALIDATION-ARTEFACTS">
    <title>JSON validation artefacts</title>
    <section id="S-JSON-VALIDATION-ARTEFACTS-OVERVIEW">
      <title>JSON validation artefacts overview</title>
      <para>These NDR provide for expressing the semantic model of an information bundle as JSON Schema <xref linkend="json-schema"/> artefacts that support the definition and validation of the structure and content of JSON documents. </para>
      <para>These rules do not require these artefacts to be located in any particular directory structure. </para>
    </section>
    <section id="S-JSON-PRESERVATION-OF-XML-NAMESPACES">
      <title>JSON preservation of XML namespaces</title>
      <para>An important aspect of identifying and distinguishing the names used for information in XML documents is by using namespaces. Like-named constructs are distinguished by having different namespaces. These NDR provide for preserving in the JSON structure namespaces from an XML document
        transliterated to JSON following these rules. Such preservation supports round-tripping, that is, converting the transliterated JSON instance back to an XML document in a lossless fashion, but without consideration for foreign extension content. See <xref
          linkend="S-SAMPLE-SCHEMA-AND-CODE-FRAGMENTS"/> for an example of an XSLT stylesheet that converts an instance of XML into JSON.</para>
      <blockquote id="NAM21" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>NAM21 Namespaces for information found in information bundles</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>A JSON instance shall provide for preserving the following XML document namespaces for BIEs:</para>
                <itemizedlist>
                  <listitem>
                    <para>one namespace for each Document ABIE</para>
                  </listitem>
                  <listitem>
                    <para>one namespace for all BBIE components</para>
                  </listitem>
                  <listitem>
                    <para>one namespace for all Library ABIE components</para>
                  </listitem>
                  <listitem>
                    <para>one namespace for the extension collection and extension metadata elements</para>
                  </listitem>
                </itemizedlist>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <para>A name used in any given group is not prohibited from also being used in another group. For example, in the UBL vocabulary there is a Library ABIE named &#x201c;Location&#x201d; and a BBIE named &#x201c;Location&#x201d;. The naming and design rules provide a mechanism, not based on
        namespace URI strings, to disambiguate names that might be sibling name/value pairs in an object.</para>
      <para>When two name/value pairs in a given JSON object have the same name but one of them is an ASBIE and the other is a BBIE, each name must be suffixed with, respectively, either &#x201c;_A&#x201d; or &#x201c;_B&#x201d; as appropriate and other names not in conflict shall not be suffixed. If
        all names of name/value pairs in a given JSON object are distinct, then all of the names shall have no suffix.</para>
      <note>
        <para>A consequence of these rules is that when a CCTS-defined business vocabulary has no ABIE where a member ASBIE and a member BBIE have the same name, every possible JSON serialization will have no name suffixes. </para>
      </note>
      <note>
        <para>Users of a CCTS-defined business vocabulary will know where these rules may come into play before writing the application and so, for any given version of the vocabulary, an application writer will know when it may be necessary to check for a given name with either a suffixed name or a
          name without a suffix. If a future version of the vocabulary introduces a potential name collision, legacy applications may not be in a position to recognize the new use of a suffix. However, from a maintenance perspective, the application developer need only look for the use of those
          names where the collision has been introduced.</para>
      </note>
    </section>
    <section id="S-JSON-SCHEMA-FILE-REFERENCES">
      <title>JSON schema file references</title>
      <para>The JSON schema expressions are fragmented in order that like-named items in each role can be declared without the use of prefixes or suffixes. This fragmentation mimics that found in the XML schemas illustrated in <xref
          linkend="F-POSSIBLE-IMPORT-INCLUDE-HIERARCHY-OF-XSD-SCHEMA-EXPRESSIONS"/>.</para>
      <figure id="F-JSON-SCHEMA-FRAGMENT-REFERENCE-TREE">
        <title>JSON schema fragment reference tree</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="art/&dir;-v&version;-jsonschema.png"/>
          </imageobject>
          <textobject>
            <phrase>JSON schema fragment reference tree</phrase>
          </textobject>
        </mediaobject>
      </figure>
    </section>
    <section id="S-JSON-SCHEMA-FRAGMENT-ANNOTATIONS">
      <title>JSON schema fragment annotations</title>
      <para>JSON schema expressions provide only for title and description annotations in addition to the value constraint properties. The top-level title and description of each fragment shall include an overall description title for that fragment and any additional global information such as
        source and copyright details.</para>
      <para>Within the fragments, these annotations shall be present only on those declarations of Document and Library ABIE definitions and each of their constituent ASBIE and BBIE members as arrays, not on the declarations of the content of the ASBIE and BBIE objects that define the members of the
        arrays. The &#x201c;<literal>title</literal>&#x201d; annotation shall be CCTS Dictionary Entry Name for the BIE. The &#x201c;<literal>description</literal>&#x201d; annotation shall be the CCTS definition value.</para>
    </section>
    <section id="S-JSON-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
      <title>JSON Schema fragments and declarations</title>
      <section id="S-JSON-SCHEMA-FRAGMENTS-FOR-DOCUMENT-ABIES">
        <title>JSON schema fragments for Document ABIEs</title>
        <blockquote role="rule" id="FRG21">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG21 Document ABIE JSON schema fragments</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one JSON schema fragment created for each Document ABIE, declared to be a &#x201c;JSON draft v4 schema&#x201d; with the appropriate &#x201c;<literal>$schema</literal>&#x201d; string property defined as
                      &#x201c;<literal>http://json-schema.org/draft-04/schema#</literal>&#x201d; in addition to the annotation title and description for the fragment.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG22">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG22 Document ABIE object namespace declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each Document ABIE JSON schema fragment shall include a root schema object declaration including declarations for four properties as string values, all optional, those being for namespaces of record providing for transliteration with XML instances if desired. The string
                    values shall be named:</para>
                  <itemizedlist>
                    <listitem>
                      <para>&#x201c;<literal>_D</literal>&#x201d; for the Document ABIE namespace</para>
                    </listitem>
                    <listitem>
                      <para>&#x201c;<literal>_A</literal>&#x201d; for the Library ABIE namespace used for ASBIEs</para>
                    </listitem>
                    <listitem>
                      <para>&#x201c;<literal>_B</literal>&#x201d; for the BBIE namespace</para>
                    </listitem>
                    <listitem>
                      <para>&#x201c;<literal>_E</literal>&#x201d; for the extension scaffolding namespace</para>
                    </listitem>
                  </itemizedlist>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG23">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG23 Document ABIE object reference declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The Document ABIE JSON schema fragment root schema object declaration shall include a single required property declaration for a array of maximum and minimum one item, named for the Document ABIE, referencing its definition locally in the file under the
                      &#x201c;<literal>definitions</literal>&#x201d; object.</para>
                  <note>
                    <para>While the prescribed referencing provides no additional facility for a Document ABIE when compared to an inline object definition, this declaration pattern mimics the declaration pattern that is required for Library ABIEs, and thus is required here simply for consistency.
                      Generation tools may find this a convenience.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG24">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG24 Document ABIE object definition declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Each Document ABIE schema fragment shall include a &#x201c;<literal>definitions</literal>&#x201d; object that contains a single object definition declaration, that being for the content of the Document ABIE.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-JSON-SCHEMA-FRAGMENT-FOR-LIBRARY-ABIES">
        <title>JSON schema fragment for Library ABIEs</title>
        <blockquote role="rule" id="FRG25">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG25 Library ABIE JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one common schema fragment created to contain all ASBIEs (that is, from every Document ABIE and every Library ABIE) and all Library ABIEs. This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only a
                      &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonAggregateComponents-2.2.json</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="FRG26" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG26 Library ABIE object reference declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The one Library ABIE schema fragment shall include in its &#x201c;<literal>definitions</literal>&#x201d; object an object reference declaration for every ASBIE in the model (that is, from every Document ABIE and every Library ABIE) that is not named the same as its
                    corresponding Library ABIE. Each such declaration shall reference its corresponding Library ABIE without any title or description properties.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="FRG27" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG27 Library ABIE object definition declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The one Library ABIE schema fragment shall include in its &#x201c;<literal>definitions</literal>&#x201d; object an object definition declaration for every Library ABIE, each being for its content.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <para>There are no constraints on the order of the ABIE declarations in the schema expression.</para>
        <note>
          <para>This lack of an order constraint may seem in conflict with the semantic model library constraint of alphabetical order of ABIE components. Whereas the semantic ABIE components are organized for the benefit of the human reader, the order of the schema component declarations does not
            affect the schema processor. However, using alphabetical order in the schema fragment may be a convenience for the human reader of the schema expressions.</para>
        </note>
      </section>
      <section id="S-JSON-SCHEMA-FRAGMENT-FOR-BBIES">
        <title>JSON schema fragment for BBIEs</title>
        <blockquote role="rule" id="FRG28">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG28 BBIE JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one common schema fragment created to describe all BBIEs in the model (that is, from every Document ABIE and every Library ABIE). This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only a
                      &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonBasicComponents-2.2.json</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="FRG29">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>FRG29 BBIE object definition declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The one BBIE schema fragment shall include a &#x201c;<literal>definitions</literal>&#x201d; object that contains an object definition declaration for every BBIE in the model (that is, from every Document ABIE and every Library ABIE). Each such declaration shall reference its
                    corresponding qualified or unqualified data type without any title or description information.</para>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <para>There are no constraints on the order of the BBIE declarations in the schema expression.</para>
        <note>
          <para>The order of the schema component declarations does not affect the schema processor. However, using alphabetical order in the schema fragment may be a convenience for the human reader of the schema expressions.</para>
        </note>
      </section>
      <!--<section id="S-JSON-SCHEMA-DECLARATIONS-FOR-ALL-BIES"><title>JSON schema declarations for all BIEs</title><blockquote role="rule" id="DCL21"><informaltable frame="all" border="1" width="100%"><thead><tr><td>DCL21 Element declarations</td></tr></thead><tbody><tr><td><para>Every BIE element declaration shall be global.</para></td></tr></tbody></informaltable></blockquote><blockquote role="rule" id="DCL22"><informaltable frame="all" border="1" width="100%"><thead><tr><td>DCL22 Element declaration references</td></tr></thead><tbody><tr><td><para>Every BIE element in an ABIE type definition shall be declared by reference.</para></td></tr></tbody></informaltable></blockquote><blockquote role="rule" id="DCL23"><informaltable frame="all" border="1" width="100%"><thead><tr><td>DCL23 Type declarations</td></tr></thead><tbody><tr><td><para>Every BIE type declaration shall be global.</para></td></tr></tbody></informaltable></blockquote></section>-->
      <section id="S-JSON-SCHEMA-DECLARATIONS-FOR-ABIES">
        <title>JSON schema declarations for ABIEs</title>
        <!--<blockquote role="rule" id="DCL24"><informaltable frame="all" border="1" width="100%"><thead><tr><td>DCL24 ABIE object reference declaration</td></tr></thead><tbody><tr><td><para>Every ABIE element shall be declared with the ABIE name as the element name and the ABIE name suffixed with &#x201c;Type&#x201d; as the type.</para><note><title>Example</title><programlisting>&lt;xsd:element name="ApplicationResponse"
             type="ApplicationResponseType"/></programlisting></note></td></tr></tbody></informaltable></blockquote>-->
        <blockquote role="rule" id="DCL21">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL21 ABIE object declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every ABIE shall be declared as an object named by the CCTS Component Name of the ABIE. It shall have as its title the CCTS Dictionary Entry Name. It shall have as its description the CCTS Definition. It shall declare as the &#x201c;<literal>required</literal>&#x201d;
                    property the names of the ASBIE and BBIE children whose model cardinality has a minimum bound of 1. Its properties shall be the ASBIE and BBIE declarations of the ABIE&#x2019;s children. It shall declare that additional properties are not permitted.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"CatalogueRequestLine": {
  "title": "Catalogue Request Line. Details",
  "description": "A class to define a line describing a
  request for a catalogue line.",
  "required": [
    "ID",
    "Item"
    ],
  "properties": {...},
  "additionalProperties": false,
  "type": "object"
  },</programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="DCL22" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL22 Library ABIE object declaration content order</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The members of a Library ABIE shall be ordered as the sequence (in the order the BIEs appear in the semantic model of the ABIE) of all BBIE children references first, followed by all ASBIE children references.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"CatalogueRequestLine": {
  "title": "Catalogue Request Line. Details",
  "description": "A class to define a line describing a
  request for a catalogue line.",
  "required": [
    "ID",
    "Item"
    ],
  "properties": {
    "UBLExtensions": {
      "title": "UBLExtensions",
      "description": 
"An optional set of extensions to the committee model",
      "items": { 
        "$ref": 
"../common/UBL-CommonExtensionComponents-2.2.json#/
definitions/UBLExtensions" },
      "maxItems": 1,
      "minItems": 1,
      "type": "array"
      },
    "ID": {..."items": {
        "$ref": 
"UBL-CommonBasicComponents-2.2.json#/definitions/ID"
        },...},
    "ContractSubdivision": {..."items": {
        "$ref": 
"UBL-CommonBasicComponents-2.2.json#/definitions/
ContractSubdivision"
        },...},
    "Note": {..."items": {
        "$ref": 
"UBL-CommonBasicComponents-2.2.json#/definitions/Note"
        },...},
    "LineValidityPeriod": {..."items": {
        "$ref": "#/definitions/Period"
        },...},
    "RequiredItemLocationQuantity": {..."items": {
        "$ref": "#/definitions/ItemLocationQuantity"
        },...},
    "Item": {..."items": {
        "$ref": "#/definitions/Item"
        },...}
    },
  "additionalProperties": false,
  "type": "object"
  },</programlisting>
                  </note>
                  <note>
                    <para>Although the order of properties of a JSON object is not relevant, ordering the properties as prescribed is consistent with both the CCTS model and the XML serialization of the model. For the human reader of the JSON schema, having this order in the schema declarations
                      should be helpful.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="DCL23" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL23 Document ABIE object declaration content order</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The members of a Document ABIE shall be ordered first with a reference to the extension collection object array, followed by the sequence (in the order the BIEs appear in the semantic model of the ABIE) of all BBIE children references first, followed by all ASBIE children
                    references. The extension collection array shall have a minimum and maximum number of items of 1 and shall not allow additional properties. The array shall not be listed in the &#x201c;<literal>required</literal>&#x201d; property.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"ApplicationResponse": {
  "title": "Application Response. Details",
  "description": "A document to indicate the 
application's response to a transaction. This may be a
business response initiated by a user or a technical 
response sent automatically by an application.",
  "required": [
    "ID",
    "IssueDate",
    "SenderParty",
    "ReceiverParty"
    ],
  "properties": {

    "UBLExtensions": {
      "title": "UBLExtensions",
      "description": 
"An optional set of extensions to the committee model",
      "items": { 
        "$ref": 
"../common/UBL-CommonExtensionComponents-2.2.json#/
definitions/UBLExtensions"
        },
      "maxItems": 1,
      "minItems": 1,
      "type": "array"
      },

    "UBLVersionID": {...},
    "CustomizationID": {...},
    "ProfileID": {...},
    "ProfileExecutionID": {...},
    "ID": {...},
    "UUID": {...},
    "IssueDate": {...},
    "IssueTime": {...},
    "ResponseDate": {...},
    "ResponseTime": {...},
    "Note": {...},
    "VersionID": {...},
    "Signature": {...},
    "SenderParty": {...},
    "ReceiverParty": {...},
    "DocumentResponse": {...}
    },
  "additionalProperties": false,
  "type": "object"
  }</programlisting>
                  </note>
                  <note>
                    <para>Although the order of properties of a JSON object is not relevant, ordering the properties as prescribed is consistent with both the CCTS model and the XML serialization of the model. For the human reader of the JSON schema, having this order in the schema declarations
                      should be helpful.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <!--<blockquote role="rule" id="DCL28"><informaltable frame="all" border="1" width="100%"><thead><tr><td>DCL28 Document ABIE extension element cardinality</td></tr></thead><tbody><tr><td><para>In the content type for every Document ABIE the extension collection element cardinality shall be declared as optional and not repeatable.</para><note><title>Example</title><programlisting>     &lt;xsd:element ref="ext:UBLExtensions"
                     minOccurs="0" maxOccurs="1"/></programlisting></note></td></tr></tbody></informaltable></blockquote>-->
      </section>
      <section id="S-JSON-SCHEMA-DECLARATIONS-FOR-ASBIES">
        <title>JSON schema declarations for ASBIEs</title>
        <blockquote role="rule" id="DCL24">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL24 ASBIE property declaration in an ABIE object</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every ASBIE child of an ABIE shall be declared as an array named by the CCTS Component Name of the ASBIE. It shall have as its title the CCTS Dictionary Entry Name. It shall have as its description the CCTS Definition. It shall have a minimum number of items as 1. If the
                    cardinality has a maximum bound of 1, then the declaration shall have a maximum number of items as 1, otherwise there shall be no constraint on the maximum number of items. It shall declare that additional properties are not permitted. The items of the array shall be declared by
                    referencing the ASBIE in the Library ABIE schema fragment.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"SenderParty": {
  "title": "Application Response. Sender_ Party. Party",
  "description": "The party sending this document.",
  "items": {
    "$ref": 
"../common/UBL-CommonAggregateComponents-2.2.json#/
definitions/SenderParty"
    },
  "maxItems": 1,
  "minItems": 1,
  "type": "array",
  },</programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL25">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL25 ASBIE declaration in the Library ABIE JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>In the Library ABIE schema fragment, every ASBIE child of an ABIE shall be declared by referencing the ASBIE&#x2019;s associated ABIE within the same fragment. There shall be no title, description or other properties.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>    "SenderParty": {
      "$ref": "#/definitions/Party"
      },</programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-JSON-SCHEMA-DECLARATIONS-FOR-BBIES">
        <title>JSON schema declarations for BBIEs</title>
        <blockquote role="rule" id="DCL26">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL26 BBIE property declaration in an ABIE object</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Every BBIE child of an ABIE shall be declared as an array named by the CCTS Component Name of the BBIE. It shall have as its title the CCTS Dictionary Entry Name. It shall have as its description the CCTS Definition. It shall have a minimum number of items as 1. If the
                  cardinality has a maximum bound of 1, then the declaration shall have a maximum number of items as 1, otherwise there shall be no constraint on the maximum number of items. It shall declare that additional properties are not permitted. The items of the array shall be declared by
                  referencing the BBIE declaration in the BBIE schema fragment using the CCTS Component Name of the BBIE.<note>
                    <title>Example</title>
                    <programlisting>"ResponseDate": {
  "title": "Application Response. Response Date. Date",
  "description": "The date on which the information in 
the response was created.",
  "items": {
    "$ref": 
"../common/UBL-CommonBasicComponents-2.2.json#/
definitions/ResponseDate"
    },
  "maxItems": 1,
  "minItems": 1,
  "type": "array",
  },</programlisting>
                  </note></td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="DCL27">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL27 BBIE declaration in the BBIE JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>In the BBIE schema fragment, every BBIE shall be declared by referencing the BBIE&#x2019;s type&#x2019;s declaration in either the qualified data type fragment or the unqualified data type fragment as required. There shall be no title, description or other properties.</para>
                  <note>
                    <title>Example of a BBIE declaration with a qualified data type</title>
                    <programlisting>"SourceCurrencyCode": {
  "$ref": 
"UBL-QualifiedDataTypes-2.2.json#/definitions/
Currency_CodeType"
  },</programlisting>
                  </note>
                  <note>
                    <title>Example of a BBIE declaration with an unqualified data type</title>
                    <programlisting>"SourceCurrencyBaseRate": {
  "$ref": 
"BDNDR-UnqualifiedDataTypes.json#/definitions/
RateType"
  },</programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-JSON-SCHEMA-DECLARATIONS-FOR-QUALIFIED-DATA-TYPES">
        <title>JSON schema declarations for Qualified Data Types</title>
        <blockquote role="rule" id="DCL28">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>DCL28 Qualified data type declaration in the qualified data type JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>Every qualified data type shall be declared with its name being the type&#x2019;s Dictionary Entry Name compressed with all periods and spaces removed. It shall have as its title the type&#x2019;s Dictionary Entry Name. It shall reference the associated unqualified data type
                    in the unqualified data type schema fragment. There shall be no description or other properties.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"Currency_CodeType": {
  "title": "Currency_ Code. Type",
  "$ref": 
"BDNDR-UnqualifiedDataTypes.json#/definitions/
CodeType"
  },</programlisting>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
    </section>
    <section id="S-EXTENSION-JSON-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
      <title>Extension JSON schema fragments and declarations</title>
      <section id="S-EXTENSION-INFORMATION-IN-JSON">
        <title>Extension information in JSON</title>
        <para>The content type for a Document ABIE contains a single optional extension collection object defined as an array of exactly one extension property in order to provide for the inclusion of data in the JSON expression that is in addition to the data of the information bundle for the
          document. Such data may include content designed by other organizations as well as augmentations of the semantic model. </para>
        <para>The extension property is declared as an array of one or more extension objects. Optionally, each extension object has a suite of metadata properties used to describe the extension. Each extension object must have a required extension content array of exactly one extension content
          object. The extension metadata and content may reuse existing ABIEs or BBIEs and may contain JSON content not modeled as BIEs.</para>
        <para>The extension scaffolding and metadata are JSON objects modeled using JSON schema fragments and constructs independent of the schema fragments created for the semantic model.</para>
        <!--<blockquote role="rule"><informaltable frame="all" border="1" width="100%"><thead><tr><td>EXT01 Document ABIE reference to extension collection element</td></tr></thead><tbody><tr><td>The first element referenced in every Document ABIE shall be to the extension collection element, followed by the declarations for the BIEs modeled for the Document ABIE.<note><title>Example</title><programlisting>&lt;xsd:complexType name="ApplicationResponseType">
  &lt;xsd:sequence>
     &lt;xsd:element ref="ext:UBLExtensions"
                     minOccurs="0" maxOccurs="1"/>
     {... content ...}
  &lt;/xsd:sequence>
&lt;/xsd:complexType></programlisting></note><note><para>The rationale for positioning extension information at the very start of the XML instance is to allow processing applications acting sequentially on the document to consume and cache all non-modeled extension information in preparation for consuming any of the modeled document information. Should extension information follow modeled information, the sequential processing of the modeled information would have passed before recognizing the need to associate extension information. In essence, such a sequential processing application would have to cache the entire document, thus losing the benefit of sequential processing.</para></note></td></tr></tbody></informaltable></blockquote>-->
      </section>
      <section id="S-EXTENSION-COLLECTION-JSON-SCHEMA-FRAGMENTS-AND-DECLARATIONS">
        <title>Extension collection JSON schema fragments and declarations</title>
        <blockquote role="rule" id="EXT21">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT21 Extension collection JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one common extension collection JSON schema fragment created to include the declarations of the extension collection object, the extension object, the extension content element, the extension metadata objects and any required type information for metadata
                    objects that are not BIEs in the Library ABIE schema fragment. The extension schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only a &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and
                    description for the fragment.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-CommonExtensionComponents-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT22">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT22 Extension content object declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension collection JSON schema fragment shall include the declaration of the mandatory extension content object, but not the definition information for the extension content object.</para>
                  <note>
                    <para>The rationale for not including the definition information for the extension point object is that the type is subject to change, while the extension collection, the extension item and extension item metadata object and type information all are not. This separation allows
                      the extension collection and item JSON schema fragment to be deployed as read-only, while the extension point data type JSON schema fragment can be deployed as writable in order to be overridden with a definition created by users.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT23">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT23 Extension collection object content</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The document&#8217;s extension collection shall be declared as having an array property of one or more extension objects as its content. The array property shall have a minimum number of items of &#x201c;1&#x201d;. It may have a &#x201c;<literal>description</literal>
                    property. It shall declare that additional properties are not permitted. The array items shall reference the extension object definition in the same schema fragment.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"UBLExtensions": {
  "description": "A container for all extensions present
in the document.",
  "required": [
    "UBLExtension"
    ],
  "properties": {
    "UBLExtension": {
      "description": 
      "A single extension for private 
use.",
      "items": {
        "$ref": "#/definitions/UBLExtension"
        },
      "minItems": 1,
      "type": "array",
      }
    },
  "additionalProperties": false,
  "type": "object"
  },</programlisting>
                  </note>
                  <note>
                    <para>The rationale for providing for multiple extensions is that different users of a document may have different extension items added to the content. Also, different extensions may be thematically distinguished (e.g. the digital signature extension is semantically separate
                      from an extension augmenting invoice line content).</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="EXT24" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT24 Extension object content ordering</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension object shall declare all available metadata objects (if any) in advance of a single extension content property listed last. The extension content property shall be listed in the &#x201c;<literal>required</literal>&#x201d; property as well as any extension
                    metadata that may be mandatory. There are no constraints on the available properties describing extension metadata, but there shall be a declaration of no additional properties.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"UBLExtension": {
  "description": "A single extension for private use.",
  "required": [
    "ExtensionContent"
    ],
  "properties": {
    "ID": {...},
    "Name": {...},
    "ExtensionAgencyID": {...},
    "ExtensionAgencyName": {...},
    "ExtensionVersionID": {...},
    "ExtensionAgencyURI": {...},
    "ExtensionURI": {...},
    "ExtensionReasonCode": {...},
    "ExtensionReason": {...},
    "ExtensionContent": {...}
    },
  "additionalProperties": false,
  "type": "object"
  }</programlisting>
                  </note>
                  <note>
                    <para>There are no constraints on the selection, name, definition or cardinality of the extension metadata elements.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote role="rule" id="EXT25">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT25 Extension object property content declarations</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The content property and each metadata property of the extension object shall be declared as an array. Each property shall declare a minimum number of items as &#x201c;1&#x201d;. The property for the content shall declare a maximum number of items as &#x201c;1&#x201d;. The
                    array for the content item shall reference the extension content data type JSON schema fragment. The properties for the metadata items with a maximum cardinality of &#x201c;1&#x201d; shall declare a maximum number of items as &#x201c;1&#x201d;.The array for each metadata property
                    shall reference a definition in one of the Library ABIE, BBIE, Qualified Data Type or Unqualified Data Type JSON schema fragments.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"ID": {
  "description": "An identifier for the Extension 
assigned by the creator of the extension.",
  "items": {
    "$ref": 
"UBL-CommonBasicComponents-2.2.json#/definitions/ID"
    },
  "maxItems": 1,
  "minItems": 1,
  "type": "array",
  "additionalProperties": false
  },
"ExtensionReason": {
  "description": "A description of the reason for the 
Extension.",
  "items": {
    "$ref": 
"UBL-UnqualifiedDataTypes-2.2.json#/definitions/
TextType"
    },
  "maxItems": 1,
  "minItems": 1,
  "type": "array",
  "additionalProperties": false
  },
"ExtensionContent": {
  "description": "The definition of the extension 
content.",
  "items": {
    "$ref": 
"UBL-ExtensionContentDataType-2.2.json#/definitions/
ExtensionContent"
    },
  "maxItems": 1,
  "minItems": 1,
  "type": "array",
  "additionalProperties": false
  }
},</programlisting>
                  </note>
                  <note>
                    <para>There are no constraints on the selection, name, definition or maximum cardinality of the extension metadata properties.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
      <section id="S-JSON-SCHEMA-FRAGMENT-FOR-THE-EXTENSION-CONTENT-DATA-TYPE-DECLARATION">
        <title>JSON schema fragment for the extension content data type declaration</title>
        <blockquote role="rule" id="EXT26">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT26 Extension content data type JSON schema fragment</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>There shall be one extension content data type schema fragment created to include the declaration of the content type for the extension content object. This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only a
                      &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                  <note>
                    <title>Example</title>
                    <para>In UBL 2.2 the <literal>UBL-ExtensionContentDataType-2.2.xsd</literal> fragment serves this purpose.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
        <blockquote id="EXT27" role="rule">
          <informaltable frame="all" border="1" width="100%">
            <thead>
              <tr>
                <td>EXT27 Extension content data type declaration</td>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <para>The extension content element type schema fragment shall contain only a single object declaration comprised of any content without constraint.</para>
                  <note>
                    <title>Example</title>
                    <programlisting>"ExtensionContent": {
  "description": 
"A user-defined repository of additional content",
  "type": "object"
  }</programlisting>
                  </note>
                  <note>
                    <para>The rationale for the lax validation is to allow for the extension point to contain, without error, any information that is supplemental to the business document but not defined by the semantic model.</para>
                  </note>
                </td>
              </tr>
            </tbody>
          </informaltable>
        </blockquote>
      </section>
    </section>
    <section id="S-QUALIFIED-DATA-TYPES-JSON-SCHEMA-FRAGMENT-AND-DECLARATIONS">
      <title>Qualified data types JSON schema fragment and declarations</title>
      <blockquote role="rule" id="QDT21">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT21 Qualified data types JSON schema fragment</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>There shall be one qualified data types schema fragment created to include the declarations of any qualified data types referenced in the schema fragment for BBIEs. This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only
                  a &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                <note>
                  <title>Example</title>
                  <para>In UBL 2.2 the <literal>UBL-QualifiedDataTypes-2.2.json</literal> fragment serves this purpose.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT22">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT22 Qualified data type JSON declaration name</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type shall be declared using the Dictionary Entry Name name of the data type compressed by removing periods and spaces. The <literal>title</literal> property of the declaration shall be the uncompressed Dictionary Entry Name.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT23">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT23 Qualified data type JSON declaration basis</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type shall be based on an unqualified data type, and may impose as additional constraints whatever qualifications are required to be expressed using JSON schema semantics. </para>
                <note>
                  <para>In UBL 2.2 there are no qualifications expressed using JSON schema semantics. Every qualified data type declaration simply makes reference to its associated unqualified data type declaration.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="QDT24">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>QDT24 Qualified data type JSON declaration constraint</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every qualified data type declaration shall be such that every possible instance of the declared type is also an instance of the base type.</para>
                <note>
                  <para>This constraint prevents additions of anything that is not part of the base unqualified data type, such as the introduction of any new properties, or any less-constrained property values than the constraints on the unqualified data type.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-UNQUALIFIED-DATA-TYPES-JSON-SCHEMA-FRAGMENT-AND-DECLARATIONS">
      <title>Unqualified data types JSON schema fragment and declarations</title>
      <blockquote role="rule" id="UDT21">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT21 Unqualified data types JSON schema fragment</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>There shall be one unqualified data types schema fragment created to include the declarations of all unqualified data types referenced in the schema fragment for BBIEs. This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include
                  only a &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                <note>
                  <title>Example</title>
                  <para>The included <ulink url="json/BDNDR-UnqualifiedDataTypes.json" conformance="skip"><literal>BDNDR-UnqualifiedDataTypes-1.1.json</literal></ulink> is an example fragment that serves this purpose.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="UDT22" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT22 Unqualified data types declaration inclusions</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>An unqualified data type shall be declared for every one of the permitted Primary Representation Terms and the Secondary Representation Terms defined as Permissible Representation Terms in the Core Component Technical Specification <xref linkend="ccts"/> Section 8-3
                  &#x201c;Permissible Representation Terms&#x201d;.</para>
                <note>
                  <para>It may be a convenience to implementers to generate this JSON schema fragment by transforming an XSD expression of all possible unqualified data types as any particular CCTS model for documents may not be comprehensively using all possible unqualified data types. For example,
                    the included BDNDR unqualified data type JSON schema fragment was generated from the included <ulink url="xsd/BDNDR-UnqualifiedDataTypes1.1.xsd" conformance="skip"><literal>BDNDR-UnqualifiedDataTypes-1.1.xsd</literal></ulink> schema fragment</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="UDT23">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT23 Unqualified data types declaration exclusions</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Unqualified data types shall only be declared for the permitted Primary Representation Terms and the Secondary Representation Terms defined as Permissible Representation Terms in the Core Component Technical Specification <xref linkend="ccts"/> Section 8-3 &#x201c;Permissible
                  Representation Terms&#x201d;.</para>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote id="UDT24" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT24 Unqualified data types declaration base</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every unqualified data type shall be either a reference to one of the approved Core Component Types defined in the Core Component Technical Specification <xref linkend="ccts"/> JSON schema fragment, or be an independent object declaration of constraints that satisfies the
                  intent of the type. The &#x201c;<literal>title</literal>&#x201d; property shall be the Dictionary Entry Name and the &#x201c;<literal>description</literal> shall include the definition. An independent declaration shall have a set of properties based on the content and supplementary
                  components of the type. The name of object properties shall be prefixed with the CCTS Dictionary Entry Name compressed by removing the word &#x201c;<literal>Type</literal>&#x201d; from the end and by removing periods and spaces. The name of the content property shall be suffixed
                  with the word &#x201c;<literal>Content</literal>&#x201d;. The names of the supplemental component properties shall be suffixed with the CCTS Dictionary Entry Name of the supplementary component compressed by removing periods and spaces. The data types of the subordinate
                  declarations shall be numbers or strings as appropriate to the corresponding XSD declared type. The object shall declare that additional properties are not permitted.</para>
                <note>
                  <para>The rational for having UDT declarations is to impose some JSON syntax semantics on top of the more general decimal and string lexical syntax defined in the CCTS specification of Core Component Types. For example, the CCTS Core Component Type for date and time is a simple
                    string without constraint. Such lax structuring of the field value does not serve users in that no particular format is obligated. The UDT can impose, for example, the JSON date primitive type lexical syntax on all date and time values, overriding the CCTS definition.</para>
                </note>
                <note>
                  <para>This rule does allow an optional supplementary component defined in the CCTS Core Component Type not to be available in the associated unqualified data type. For example, if the UDT implements a built-in JSON primitive type for the component then there is no use of a format
                    supplementary component and associated attribute and so the format attribute declaration can be omitted and, thereby, be unavailable for use for that data type.</para>
                </note>
                <note>
                  <title>Example 1</title>
                  <para>In this example the unqualified data type &#x201c;<literal>Value. Type</literal>&#x201d; uses the Core Component Type &#x201c;<literal>Numeric. Type</literal>&#x201d; without change:</para>
                  <programlisting>"ValueType": {
  "title": "Value. Type",
  "description": "Numeric information that is assigned 
or is determined by calculation, counting, or 
sequencing. It does not require a unit of quantity or 
unit of measure.",
  "$ref": 
"CCTS_CCT_SchemaModule-2.2.json#/definitions/
NumericType"
  },</programlisting>
                </note>
                <note>
                  <title>Example 2</title>
                  <para>In this example the unqualified data type &#x201c;<literal>Date Time. Type</literal>&#x201d; replaces the Core Component Type &#x201c;<literal>Date Time. Type</literal>&#x201d; with no attributes and with a JSON built-in primitive type for content:</para>
                  <programlisting>"DateTimeType": {
  "title": "Date Time. Type",
  "description": "A particular point in the progression 
of time, together with relevant supplementary 
information.",
  "properties": {
    "_": {
      "type": "string",
      "format": "date-time"
      },
    "additionalProperties": false,
    "type": "object"
    }
  },</programlisting>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="UDT25">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>UDT25 Unqualified data types declaration constraint</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>Every unqualified data type declaration that is not a reference to one of the Core Component Type declarations defined in the Core Component Technical Specification <xref linkend="ccts"/> JSON schema fragment shall be such that every possible instance of the declared type is
                  also an instance of one of the Core Component Types as defined in CCTS.</para>
                <note>
                  <para>This constraint prevents additions of anything that is not part of the base Core Component Type, such as the introduction of any new properties, or any less-constrained property values.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
    <section id="S-CCTS-CORE-COMPONENT-TYPES-JSON-SCHEMA">
      <title>CCTS Core Component Types JSON schema</title>
      <para>All data types in the Core Component Technical Specification <xref linkend="ccts"/> JSON schema fragment correspond to the 10 CCTS Primary Representation Terms defined in <xref linkend="ccts"/> Section 8-3 &#x201c;Permissible Representation Terms&#x201d;.</para>
      <blockquote id="CCT21" role="rule">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>CCT21 CCTS Core Component Type JSON schema fragment</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <para>There shall be one core component type schema fragment of primitive data types for primary representation terms on which the unqualified data types are based. This schema fragment shall not have a &#x201c;<literal>$schema</literal>&#x201d; property and shall include only a
                    &#x201c;<literal>definitions</literal>&#x201d; object in addition to the annotation title and description for the fragment.</para>
                <para>This schema fragment&#x2019;s definitions shall be derived from the XSD schema fragment published by UN/CEFACT with the following embedded title and metadata:</para>
                <programlisting>CCTS Core Component Type Schema Module

Module of Core Component Type
Agency: UN/CEFACT
VersionID: 1.1
Last change: 14 January 2005</programlisting>
                <note>
                  <title>Example</title>
                  <para>The included <ulink url="jsonschema/BDNDR-CCTS_CCT_SchemaModule-1.1.json" conformance="skip"><literal>BDNDR-CCTS_CCT_SchemaModule-1.1.json</literal></ulink> is an example of the results of such derivation from the UN/CEFACT fragment.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
      <blockquote role="rule" id="CCT22">
        <informaltable frame="all" border="1" width="100%">
          <thead>
            <tr>
              <td>CCT22 Core Component Type property declarations</td>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Every core component type shall be declared as an object named by the Dictionary Entry Name compressed by removing periods and spaces. It shall have as its title the CCTS Dictionary Entry Name. It shall have as its description the CCTS Definition. It shall have as its properties
                the content declaration as well as a declaration of each of its supplemental components. The name of these properties shall be prefixed with the CCTS Dictionary Entry Name compressed by removing the word &#x201c;<literal>Type</literal>&#x201d; from the end and by removing periods and
                spaces. The name of the content property shall be the underscore character &#x201c;<literal>_</literal>&#x201d;. The names of the supplemental component properties shall be the names of the associated XML attribute names defined in the CCTS Core Component Type Schema Module version
                1.1 dated 14 January 2005 <ulink url="CCTS_CCT_SchemaModule.xsd"><literal>CCTS_CCT_SchemaModule.xsd</literal></ulink>. The data types of the subordinate declarations shall be numbers or strings as appropriate to the corresponding XSD declared type. The object shall declare that
                additional properties are not permitted.<note>
                  <title>Example</title>
                  <programlisting>"MeasureType": {
  "title": "Measure. Type",
  "description": "A numeric value determined by 
measuring an object along with the specified unit of 
measure.",
  "properties": {
    "MeasureContent": {
      "type": "number"
      },
    "MeasureUnitCode": {
      "type": "string"
      },
    "MeasureUnitCodeListVersionIdentifier": {
      "type": "string"
      }
    },
  "additionalProperties": false,
  "type": "object"
  },</programlisting>
                </note><note>
                  <title>Example</title>
                  <para>The included <ulink url="jsonschema/BDNDR-CCTS_CCT_SchemaModule-1.1.json" conformance="skip"><literal>BDNDR-CCTS_CCT_SchemaModule-1.1.json</literal></ulink> is an example of the results of such derivation from the UN/CEFACT fragment.</para>
                </note></td>
            </tr>
          </tbody>
        </informaltable>
      </blockquote>
    </section>
  </section>
  <section id="S-ADDITIONAL-DOCUMENT-CONSTRAINTS">
    <title>Additional Document Constraints</title>
    <section id="S-ADDITIONAL-DOCUMENT-CONSTRAINTS-INTRODUCTION">
      <title>Additional Document Constraints Introduction</title>
      <para>In addition to the document constraints formally expressed by schemas created according to this specification, there are several other rules governing conforming business document instances that cannot be expressed using W3C Schema. These additional document rules, addressing XML
        instance <xref linkend="xml"/> validation, character encoding, and empty elements, are specified below.</para>
      <note>
        <para>These rules first appeared in the OASIS UBL 1.0 and UBL 1.0 NDR Standards. To aid in coordinating references between these various publications, the rules below retain their original &#8220;IND&#8221; labels. The former IND4 was removed in the revision process leading to UBL
          2.0.</para>
      </note>
      <para>Additional document constraints do not apply to the arbitrary content of extensions expressed in a business document as described in <xref linkend="S-EXTENSIONS"/>.</para>
    </section>
    <section id="S-VALIDATION">
      <title>Validation</title>
      <para>The business document library and document schemas are targeted at supporting business information exchanges. Business information exchanges require a high degree of precision to ensure that application processing and corresponding business actions are reflective of the purpose, intent,
        and information content agreed to by both trading partners. Schemas provide the base mechanism for ensuring that instance documents do in fact support these requirements.</para>
      <blockquote>
        <para><emphasis role="bold">[IND1]</emphasis> All instance documents MUST validate to a corresponding schema.</para>
      </blockquote>
      <para>The use of these NDRs favours a two-phase approach for validation of rules related to specific data content (such as to check of code list values). For XML, support for this is outlined in <xref linkend="S-DATA-TYPE-QUALIFICATIONS-IN-XML"/>.</para>
    </section>
    <section id="S-CHARACTER-ENCODING">
      <title>Character Encoding</title>
      <para>XML supports a wide variety of character encodings. Processors SHALL understand which character encoding is employed in each XML document. XML 1.0 supports a default value of UTF-8 for character encoding, but best practice is always to identify the character encoding being
        employed.</para>
      <blockquote>
        <para><emphasis role="bold">[IND2]</emphasis> All instance documents MUST identify their character encoding within the XML declaration.</para>
      </blockquote>
      <para>Example:</para>
      <blockquote>
        <para><literal>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</literal></para>
      </blockquote>
      <para>OASIS Technical Committees are obligated to conform to agreements OASIS has entered into. OASIS is a liaison member of the ISO IEC ITU UN/CEFACT <phrase lang="none">eBusiness</phrase> Memorandum of Understanding Management Group (MOUMG). Resolution 01/08 (MOU/MG01n83) requires the use of
        UTF-8.</para>
      <blockquote>
        <para><emphasis role="bold">[IND3]</emphasis> In conformance with ISO IEC ITU UN/CEFACT <phrase lang="none">eBusiness</phrase> Memorandum of Understanding Management Group (MOUMG) Resolution 01/08 (MOU/MG01n83) as agreed to by OASIS, all instance documents SHOULD be expressed using UTF-8.
        </para>
      </blockquote>
      <para>Example:</para>
      <blockquote>
        <para><literal>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</literal></para>
      </blockquote>
    </section>
    <section id="S-EMPTY-ELEMENTS">
      <title>Empty Elements</title>
      <para>Use of empty elements within XML instance documents is a source of controversy for a variety of reasons. An empty element does not simply represent data that is missing. It may express data that is not applicable for some reason, trigger the expression of an attribute, denote all
        possible values instead of just one, mark the end of a series of data, or appear as a result of an error in XML file generation. Conversely, missing data elements can also have meaning&#8212;that the trading partner does not provide that data. In information exchange environments, different
        trading partners may allow, require, or ban empty elements. These NDRs take the position that empty elements do not provide the level of assurance necessary for business information exchanges and therefore must not be used.</para>
      <blockquote>
        <para><emphasis role="bold">[IND5]</emphasis> Schema-conforming instance documents SHALL NOT contain an element devoid of content or containing null values.</para>
      </blockquote>
      <para>An important implication of this rule is that every container element must contain at least one of its possible constituents even if all of its possible constituents are declared to be optional.</para>
      <para>To ensure that no attempt is made to circumvent rule IND5, these NDRs also prohibit attempting to convey meaning by omitting an element (i.e., an optional element may be omitted, but that omission cannot carry a specific meaning upon which an action is conditioned).</para>
      <blockquote>
        <para><emphasis role="bold">[IND6]</emphasis> The absence of a construct or data in an instance document SHALL NOT carry meaning.</para>
      </blockquote>
      <para>These constraints are consistent with the principle of having manifest values, that is, that the recipient must receive all pertinent information manifest in the business document. Relying on the absence of a construct would require the recipient to know of the sender&#x2019;s intention
        with that construct being absent. For reliable communication this cannot be assumed.</para>
    </section>
    <section id="S-NATURAL-LANGUAGE-TEXT-ELEMENTS">
      <title>Natural Language Text Elements</title>
      <para>Natural language text elements such as Note and Description appear throughout business document models following these NDRs. They are of the same unstructured Text type as character data fields that are not intended for natural language prose, such as an address line.</para>
      <para>All natural language text elements in a business document following these NDRs are repeatable within some container; for example, all documentary note elements would be repeatable as adjacent siblings under a common parent. Despite appearances, these multiple text elements are not
        intended for the representation of separate paragraphs or divisions within a single parent text; rather, each note element (for example) contains the entire text of the note in one of the languages in which the note is provided. In other words, these NDRs allow 0..n for note or description
        elements in order to present the same note or description in 0..n languages, not to reflect structures such as paragraphs internal to a text in a single language. Since business document text elements are intended for unstructured sequences of character data, more complex texts should be
        located in external documents and associated with the business document using document references.</para>
      <para>These NDRs enforce this restriction with the following two rules:</para>
      <blockquote>
        <para><emphasis role="bold">[IND7]</emphasis> Where two or more sibling &#8220;Text. Type&#8221; elements of the same name exist in a document, no two can have the same &#8220;<phrase lang="none">languageID</phrase>&#8221; attribute value.</para>
      </blockquote>
      <blockquote>
        <para><emphasis role="bold">[IND8]</emphasis> Where two or more sibling &#8220;Text. Type&#8221; elements of the same name exist in a document, no two can omit the &#8220;<phrase lang="none">languageID</phrase>&#8221; attribute.</para>
      </blockquote>
    </section>
    <section id="S-EMPTY-SUPPLEMENTAL-COMPONENTS">
      <title>Empty Supplemental Components</title>
      <para>Attributes in XML and properties in JSON are used exclusively for supplemental components of the data types of basic business information entities. An empty component conveys no information but may be the source of confusion for users.</para>
      <blockquote>
        <para><emphasis role="bold">[IND9]</emphasis> BDNDR-conforming instance documents SHALL NOT contain an supplemental component devoid of content or containing null values.</para>
      </blockquote>
    </section>
  </section>
  <section id="S-CONFORMANCE">
    <title>Conformance</title>
    <para>An information bundle and its associated validation artefacts conforming to these naming and design rules do not violate any rule or requirement expressed in normative sections of this specification related to modeling (clauses 3 and 4) and one&#x2019;s choices of validation artefacts. The
      XSD and CVA artefacts (clause 5) are for documents expressed in XML syntax according to the model. The JSON schema artefacts (clause 6) are for documents expressed in JSON syntax according to the model.</para>
    &summary;
  </section>
  <appendix role="iso-informative" id="A-RELEASE-NOTES">
    <title>Release notes</title>
    <section id="S-AVAILABILITY">
      <title>Availability</title>
      <para>Online and downloadable versions of this release are available from the locations specified at the top of this document.</para>
    </section>
    <section id="S-PACKAGE-STRUCTURE">
      <title>Package structure</title>
      <para>This &standard; is published as a zip archive in the <ulink url="&this-loc;/">&this-loc;/</ulink> directory. Unzipping this archive creates a directory tree containing a number of files and subdirectories. Note that while the two XML files comprise the revisable version of this
        specification, this revisable XML may not be directly viewable in all currently available web browsers.</para>
      <para>The base directory has the following files:</para>
      <blockquote>
        <variablelist>
          <varlistentry>
            <term><emphasis role="bold"><literal>&name;-&stage;.xml</literal>
              </emphasis></term>
            <listitem>
              <para>The revisable form of the document.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>&name;-&stage;-summary.xml</literal>
              </emphasis></term>
            <listitem>
              <para>A distillation of the rules, comprising only the rule title and the section number in which the rule is found. The title is linked to the rule and the section number is linked to the section. This XML document is incorporated in the revisable form of the document by way of an
                entity reference. During the publishing process this file is first distilled from the revisable form and then subsequently incorporated in the revisable form for publishing.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>&name;-&stage;.html</literal>
              </emphasis></term>
            <listitem>
              <para>An HTML rendering of the document.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>&name;-&stage;.pdf</literal>
              </emphasis></term>
            <listitem>
              <para>A PDF rendering of the document.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </blockquote>
      <para>These are the subdirectories in the package:</para>
      <blockquote>
        <variablelist>
          <varlistentry>
            <term><emphasis role="bold"><literal>art</literal>
              </emphasis></term>
            <listitem>
              <para>Diagrams and illustrations used in this specification</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>db</literal>
              </emphasis></term>
            <listitem>
              <para>DocBook stylesheets for viewing in HTML the XML of this work product</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>jsonschema</literal>
              </emphasis></term>
            <listitem>
              <para>JSON Schema fragments supporting UN/CEFACT core component types and OASIS BDNDR unqualified data types</para>
            </listitem>
          </varlistentry>
        </variablelist>
        <variablelist>
          <varlistentry>
            <term><emphasis role="bold"><literal>sample</literal>
              </emphasis></term>
            <listitem>
              <para>Illustrative XSLT stylesheet and documentation for converting an instance of XML conforming to BDNDR XML Schema into an instance of JSON conforming to BDNDR JSON Schema.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><emphasis role="bold"><literal>xsd</literal>
              </emphasis></term>
            <listitem>
              <para>XML Schema fragments supporting UN/CEFACT core component types and OASIS BDNDR unqualified data types</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </blockquote>
    </section>
    <section id="S-SAMPLE-SCHEMA-AND-CODE-FRAGMENTS">
      <title>Sample schema and code fragments</title>
      <para>The release includes the following sample schema and code fragments for the convenience of some technical users:</para>
      <itemizedlist>
        <listitem>
          <para><ulink url="sample/CCTSXML2JSON.xsl"><literal>sample/CCTSXML2JSON.xsl</literal></ulink> - XSLT stylesheet to convert an instance of XML conforming to BDNDR XML Schema into an instance of JSON conforming to BDNDR JSON Schema</para>
        </listitem>
        <listitem>
          <para><ulink url="sample/readme-CCTSXML2JSON.html"><literal>sample/readme-CCTSXML2JSON.html</literal></ulink> - documentation generated from the embedded constructs, including invocation details</para>
        </listitem>
        <listitem>
          <para><ulink url="xsd/BDNDR-CCTS_CCT_SchemaModule-1.1.xsd"><literal>xsd/BDNDR-CCTS_CCT_SchemaModule-1.1.xsd</literal></ulink> - copy of the UN/CEFACT core component type XML Schema file</para>
        </listitem>
        <listitem>
          <para><ulink url="xsd/BDNDR-UnqualifiedDataTypes-1.1.xsd"><literal>xsd/BDNDR-UnqualifiedDataTypes-1.1.xsd</literal></ulink> - example interpretation in XML Schema of the permissible representation terms of the UN/CEFACT core component types as unqualified data types</para>
        </listitem>
        <listitem>
          <para><ulink url="jsonschema/BDNDR-CCTS_CCT_SchemaModule-1.1.json"><literal>jsonschema/BDNDR-CCTS_CCT_SchemaModule-1.1.json</literal></ulink> - JSON interpretation of the UN/CEFACT core component type XML Schema file</para>
        </listitem>
        <listitem>
          <para><ulink url="jsonschema/BDNDR-UnqualifiedDataTypes-1.1.json"><literal>jsonschema/BDNDR-UnqualifiedDataTypes-1.1.json</literal></ulink> - JSON interpretation of the XML Schema of the permissible representation terms of the UN/CEFACT core component types as unqualified data types</para>
        </listitem>
      </itemizedlist>
    </section>
    <section id="S-RELEASE-HISTORY">
      <title>Release history</title>
      <section id="S-VERSION-1.0-RELEASE">
        <title>Version 1.0 release</title>
        <para>Version 1.0 of the Business Document Naming and Design Rules describes the constraints on the CCTS modeling <xref linkend="ccts"/> of XML interchange documents <xref linkend="xml"/> and the creation of corresponding W3C schema [<xref linkend="xsd"/>] and OASIS Context/Value Association
          documents <xref linkend="oasiscva"/>.</para>
      </section>
      <section id="S-DIFFERENCES-BETWEEN-VERSION-1.1-AND-VERSION-1.0">
        <title>Differences between version 1.1 and version 1.0</title>
        <para>Version 1.1 introduces the specification of JSON schemas to govern JSON serializations of Open-edi user data, not available in version 1.0.</para>
        <para>Version 1.1 also modifies the availability of extension content in 1.1 also to be available for all Library ABIEs in addition to the 1.0 availability only on Document ABIEs (see <xref linkend="S-XML-SCHEMA-DECLARATIONS-FOR-ABIES"/>).</para>
      </section>
      <section id="S-DIFFERENCES-BETWEEN-VERSION-1.1-CSD03-AND-1.1-CSD01">
        <title>Differences between version 1.1 csd03 and 1.1 csd01</title>
        <para>Version 1.1 csd02 modified the availability of extension content in csd02 also to be available for all Library ABIEs in addition to the csd01 availability only on Document ABIEs (see <xref linkend="S-XML-SCHEMA-DECLARATIONS-FOR-ABIES"/>).</para>
        <para>Version 1.1 csd02 repaired some faults in the specification of JSON schema identified during the public review. Specifically, the inappropriate specifications of &#x201c;<literal>additionalProperties</literal>&#x201d; in rules DCL23, DCL24, DCL26, and EXT23 have been removed.
          Additionally, in UDT25 the need for co-constraints on date-time values in order to express individual date and time constraints in Draft-04 of JSON Schema is removed due to the availability in Draft-07 of JSON Schema of individual date and time constraints.</para>
        <para>Based on community feedback, version 1.1 csd03 makes some wholesale changes to the JSON serialization in csd02 in order to promote ease of transliteration of instances with the XML serialization. Before the changes were made it was necessary to have some foreknowledge of the document
          model. With these changes, transliteration results can be inferred entirely from manifest content. These benefits were deemed important enough to use different naming conventions in the JSON serialization as follows:</para>
        <itemizedlist>
          <listitem>
            <para>the aggregate namespace property name is changed from &#x201c;_S&#x201d; (for ASBIE) to &#x201c;_A&#x201d; (for ABIE), </para>
          </listitem>
          <listitem>
            <para>the BBIE content property name is changed from a concatenation of the type and the word &#x201c;Content&#x201d; to be the single character &#x201c;_&#x201d;, and</para>
          </listitem>
          <listitem>
            <para>the BBIE supplementary component property names are changed from their CCTS name to be the XML attribute name as dictated by the published UN/CEFACT Core Component Type schema fragment.</para>
          </listitem>
        </itemizedlist>
        <para>The sample JSON Schema and XML Schema versions of the BDNDR unqualified data types and UN/CEFACT core component types is added to the package for the convenience of some technical users.</para>
        <para>The sample CCTSXML2JSON.xsl XSLT stylesheet is added to the package for the convenience of some technical users.</para>
      </section>
    </section>
  </appendix>
  <appendix id="A-ACKNOWLEDGEMENTS" role="iso-informative">
    <title>Acknowledgements</title>
    <para>The following individuals have participated in the creation of this specification and are gratefully acknowledged:</para>
    <simplelist>
      <member>Todd Albers, Federal Reserve Bank of Minneapolis</member>
      <member>Rui Barros, Individual</member>
      <member>Oriol Bausa Peris, Individual</member>
      <member>Kenneth Bengtsson, Individual</member>
      <member>Erlend Klakegg Bergheim, Norwegian Digitalisation Agency</member>
      <member>Peter Borresen, ClearView Trade</member>
      <member>Andrea Caccia, Individual</member>
      <member>Ger Clancy, IBM</member>
      <member>Kees Duvekot, RFS Holland Holding B.V.</member>
      <member>Martin Forsberg, Swedish Association of Local Authorities &amp; Regions</member>
      <member>Cecile Guasch, Individual</member>
      <member>Philip Helger, Individual</member>
      <member>Ken Holman, Crane Softwrights Ltd.</member>
      <member>Yves Jordan, Publications Office of the European Union</member>
      <member>Kari Korpela, Individual</member>
      <member>Ole Madsen, Danish Business Authority</member>
      <member>Natalie Muric, Publications Office of the European Union</member>
      <member>Levine Naidoo, IBM</member>
      <member>Enric Torregrosa, everis, S.L.U.</member>
      <member>Matt Vickers, Xero</member>
    </simplelist>
  </appendix>
  <appendix id="A-ADDITIONAL-PRODUCTION-PROCESSES" role="iso-informative">
    <title>Additional production processes</title>
    <section id="S-CCTS-SERIALIZATION">
      <title>CCTS serialization</title>
      <para>An implementation of these naming and design rules may choose to create a serialization of the CCTS information. This can be a useful convenience when processing the CCTS information as a whole. The CCTS collaboration tool is not required to produce a serialization if such is not needed
        to fulfill its obligation to produce validation artefacts. </para>
      <para>There are no formal rules for CCTS serialization.</para>
    </section>
    <section id="S-REPORTING">
      <title>Reporting</title>
      <para>An implementation of these naming and design rules is not required to produce any supplementary reports. These reports can be useful reference materials for review of the CCTS information maintained for the information bundles. </para>
      <para>There are no formal rules for reporting. </para>
    </section>
  </appendix>
<!--  <appendix role="non-normative" id="A-TEMPORARY-ANNEX-\-\-CHANGE-LOG">
    <title>Temporary Annex - Change Log</title>
    <note>
      <para>This temporary appendix will be removed in the final version of the committee specification.</para>
    </note>
    <informaltable>
      <tgroup cols="4">
        <colspec colwidth="1*"/>
        <colspec colwidth="2*"/>
        <colspec colwidth="1*"/>
        <colspec colwidth="8*"/>
        <thead>
          <row>
            <entry>Revision</entry>
            <entry>Date</entry>
            <entry>Editor</entry>
            <entry>Changes made</entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry>csd03wd02</entry>
            <entry>11 June 2020</entry>
            <entry>GKH</entry>
            <entry>JIRA ticket 289 regarding Unicode code point ordering</entry>
          </row>
          <row>
            <entry>csd03wd01</entry>
            <entry>14 April 2020</entry>
            <entry>GKH</entry>
            <entry>JIRA ticket 273 with new JSON serialization</entry>
          </row>
          <row>
            <entry>csd02wd01</entry>
            <entry>12 November 2018</entry>
            <entry>GKH</entry>
            <entry>Addressed JIRA tickets and move to JSON Schema Draft 07</entry>
          </row>
          <row>
            <entry>csprd01</entry>
            <entry>11 January 2017</entry>
            <entry>GKH</entry>
            <entry>Cover page changes for public review; copy-fitting code samples</entry>
          </row>
          <row>
            <entry>csd01wd01</entry>
            <entry>04 January 2017</entry>
            <entry>GKH</entry>
            <entry>Initial version of 1.1</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>
  </appendix>-->
</article>
