<?xml version='1.0' encoding='UTF-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-le-structured-value-model-00" ipr="trust200902" submissionType="IETF" tocInclude="true" sortRefs="false" symRefs="true">
  <front>
    <title abbrev="Structured Value Model">A Structured Value Model for Derived Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-le-structured-value-model-00"/>
    <author fullname="Thanh Le" initials="T." surname="Le">
      <address>
        <postal>
          <country>VN</country>
        </postal>
        <email>vnlemanhthanh@gmail.com</email>
      </address>
    </author>
    <date/>
    <keyword>derived identifiers</keyword>
    <keyword>identifier comparison</keyword>
    <keyword>structured value</keyword>
    <keyword>scoped identifier</keyword>
    <keyword>comparison domain</keyword>
    <keyword>exact equivalence</keyword>
    <abstract>
      <t>This document defines a structured value model independent of serialization for use by derived identifier constructions and profiles. A Value consists of exact context octets, exact content octets, and a finite set of scoped opaque identifiers. The model defines structural admission, exact equivalence, placement of distinctions that affect comparison, and rules for importing identifiers from independently governed systems.</t>
      <t>The model does not define a wire representation, canonicalization procedure, cryptographic hash, identifier syntax, application profile, resolver, registry, or trust model. Source mappings and concrete derived identifier profiles are defined by surrounding specifications.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" toc="include">
      <name>Introduction</name>
      <t>This specification defines a structured value model independent of serialization for use by derived identifier constructions and profiles. It defines the comparison domain, the distinctions that participate in value equivalence, and how identifiers imported from independently governed schemes participate in comparison.</t>
      <t>This model is intended for profiles in which the complete membership of imported identifiers participates jointly in comparison. It is not a generic container for every protocol that carries multiple identifiers. Scoped identifiers, composite values, exact octet comparison, and finite-set membership are established techniques; the specification choice here is their combination into one representation-independent comparison domain with exact conjunctive membership semantics for imported identifiers. Other Internet and Web specifications use multiple identifiers with materially different combination semantics, including aliases that identify the same subject <xref target="RFC9493"/>, lists in which any acceptable reference identifier can match a presented identifier <xref target="RFC9525"/>, alias and verification relationships in Controlled Identifiers <xref target="W3C-CID-1.0"/>, and controller relationships in DIDs <xref target="W3C-DID-1.1"/>. A surrounding specification that needs alias, alternative, capability, controller, succession, authorization, graph-edge, or other relationship semantics resolves those semantics before admission or represents every comparison-relevant distinction explicitly in the admitted Value. Bare co-membership in <tt>identifiers</tt> does not preserve such a relationship; placing alternatives or relationship-bearing identifiers there without representing the relationship would instead make only the distinct members, not the relation between them, part of this model's exact comparison state.</t>
      <t>Requirements in this document apply to mappings, profiles, and implementations that adopt this model. This document does not define a concrete serialization or wire representation, canonical byte encoding, binding or framing construction, cryptographic derivation mechanism, identifier syntax, application profile, transparency service, resolver, registry, or trust model. It also does not define a generic semantic projection across source formats. A companion profile can map concrete representations into this model and can define a deterministic identifier derivation from admitted values.</t>
      <t>A surrounding mapping can project richer or heterogeneous source objects into this model. Any equivalence introduced by that projection is part of the mapping before model admission, not of this model. For a fixed mapping from source material to <tt>Value</tt>, accepted source material and every explicit input that can change the result MUST determine one admitted <tt>Value</tt>. Inputs that can change the result MUST NOT be left to implementation discretion or ambient mutable state.</t>
      <t>The comparison principles in <xref target="I-D.le-comparing-derived-identifiers"/> provide architectural guidance for the semantics defined here.</t>
    </section>
    <section anchor="conventions" toc="include">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t><t>An octet string is a finite sequence of octets. This document defines <tt>ScopedIdentifier</tt> in <xref target="scoped-identifiers"/> and <tt>Value</tt> in <xref target="structured-value"/>.</t></section>
    <section anchor="scoped-identifiers" toc="include">
      <name>Scoped Identifiers</name>
      <t>A scoped identifier is the pair:</t>
      <sourcecode type="text">ScopedIdentifier := {
  scope      : finite octet string,
  identifier : finite octet string
}</sourcecode>
      <t>Both components are opaque octet strings at this model boundary. Either component can be empty. An empty scope or identifier is still an exact value and is distinct from absence of the <tt>ScopedIdentifier</tt> from the set. A surrounding profile may impose a non-empty requirement when required by the imported identifier system; this model does not impose that restriction on every future system. This specification does not impose a namespace syntax on imported identifier systems, require a registry lookup, require resolution, or interpret the semantics associated with an imported scope.</t>
      <t>Imported scope semantics are interpreted relative to the <tt>context</tt> of the containing value. A specification or interoperability profile that imports an identifier system MUST define, for each context value it uses, the exact mapping from scope octets to imported identifier semantics and the exact identifier octets carried for that system. Within one context value, incompatible imported semantics MUST NOT use the same scope octets. The same scope octets can be reused under different context values because context itself affects comparison.</t>
      <t>Because this model compares each complete <tt>ScopedIdentifier</tt> exactly, a mapping also has to adapt any native comparison semantics of an imported identifier system to that exact boundary. Exact equality represents an equivalence relation. A profile that claims to preserve an imported identifier comparison unchanged therefore MUST identify an equivalence relation to be represented. If, after the applicable imported interpretation is fixed, that matching behavior is not an equivalence relation, the surrounding mapping MUST first define the equivalence being projected into this model; any additional collapse introduced by that projection occurs before model admission.</t>
      <t>Under one context and applicable mapping, accepted imported instances equivalent under the fixed interpretation MUST produce the same <tt>(scope, identifier)</tt> pair before admission. A profile claiming to import that comparison unchanged MUST also reflect equivalence: with that interpretation fixed, accepted instances produce the same exact pair if and only if they are equivalent under the imported relation. Direct copying is sufficient only when the relevant equality is already exact octet equality and the selected scope is stable for that comparison. For aliases, the mapping MUST deterministically select or derive the exact pair for the equivalence class under the imported relation under the fixed interpretation. Under the same mapping and interpretation, that pair MUST NOT vary with implementation preference, time, or ambient mutable state; changing representative selection changes the import mapping. Merging imported identifiers that the imported comparison considers different is upstream loss and cannot be reversed by preserving the resulting pair.</t>
      <t>At this model boundary, <tt>scope</tt> participates in fixing the interpretation of that imported identifier within the containing Value, not necessarily only the public name of the imported identifier scheme. A distinction that changes the imported identifier interpretation or imported comparison relation MUST be fixed by the imported identifier octets, the containing context, or the scope octets; it MUST NOT exist only in <tt>content</tt> or ambient mapping state if that would let the same <tt>(context, scope, identifier)</tt> tuple carry incompatible imported meanings. A separate application-specific distinction, such as a role, relationship class, position, or occurrence label that changes only how the imported identifier participates in this Value, MUST be made observable under the placement rule in <xref target="comparison-relevant-placement"/> and can be carried in <tt>scope</tt> or <tt>content</tt>. A context mapping can define a whole family of scope encodings; this model still treats every resulting scope as opaque octets and defines no scope grammar.</t>
      <t>Conceptually, an imported identifier is qualified by:</t>
      <sourcecode type="text">(context, scope, identifier)</sourcecode>
      <t>The context is represented once at the level of the containing Value. A <tt>ScopedIdentifier</tt> copied out of a Value does not carry that context. A consumer MUST NOT assume that the same <tt>(scope, identifier)</tt> pair has the same imported meaning under another context unless a surrounding specification defines it.</t>
      <t>A profile may use an allocated name, self-certifying value, Uniform Resource Identifier (URI), including a Uniform Resource Name (URN), an identifier defined by another standard, or another stable octet string as a scope. This specification does not prefer or require one such mechanism.</t>
      <t>Equality of scoped identifiers is exact equality of both scope octets and identifier octets. This is the model-level equality relation for the pair. The pair is not self-interpreting: its imported meaning is determined by the containing context and the applicable mapping described above.</t>
    </section>
    <section anchor="structured-value" toc="include">
      <name>Structured Value</name>
      <t>The comparison domain consists of records of the following form:</t>
      <sourcecode type="text">Value := {
  context      : finite octet string,
  content      : finite octet string,
  identifiers  : finite set of ScopedIdentifier
}</sourcecode>
      <t>Emptiness is typed. The empty octet string is a valid value of <tt>context</tt>, <tt>content</tt>, <tt>scope</tt>, or <tt>identifier</tt>, and the empty mathematical set is a valid value of <tt>identifiers</tt>. Absence and source representation sentinel or exceptional values are not additional model values and MUST NOT be silently treated as those empty values. A surrounding source mapping can intentionally define how such source states map into this model, but the result MUST be an explicit admitted <tt>Value</tt> before model comparison.</t>
      <t>The record is deliberately small. It provides exact local material and a set of identifiers imported from this or other identifier systems. It does not define an application grammar, resolver, graph language, provenance model, serialization, or trust model.</t>
      <t>A profile is not required to admit a non-empty <tt>identifiers</tt> set. When no imported identifiers participate in comparison, <tt>identifiers</tt> is the empty mathematical set and <tt>context</tt> and <tt>content</tt> carry the remaining comparison-relevant material. The empty-set case remains the same <tt>Value</tt> type and equivalence relation; it does not define a second core model or an extension variant.</t>
      <section anchor="context" toc="include">
        <name>Context</name>
        <t><tt>context</tt> carries exact octets that select the interpretation used for comparison. A surrounding specification or interoperability profile defines the exact context octets and their interpretation.</t>
        <t>The context can distinguish identical content and identifiers when their application or protocol meaning is intentionally different. When identifier systems are imported, context also provides the interpretation domain under which identifier scope octets are understood.</t>
        <t>This specification assigns no global meaning to context values and requires no registry, resolver, network lookup, global authority, or distribution mechanism. Exact <tt>context</tt> equality is required for model equivalence but does not prove that independently governed environments use compatible definitions; such interpretation depends on agreement about applicable context and scope semantics outside this model.</t>
        <t><tt>context</tt> octets participate directly in <tt>Value</tt> equivalence and select the interpretation domain used for comparison. The same context octets MUST NOT be reused for an incompatible interpretation of the <tt>Value</tt> as a whole. Within a fixed context, the same <tt>(context, scope)</tt> combination MUST NOT acquire an incompatible imported-identifier meaning. Adding a new distinct scope meaning under an existing context does not by itself require new context octets when existing <tt>(context, scope)</tt> meanings remain unchanged. Selection, distribution, authentication, or agreement on surrounding definitions is outside this model and is not an additional <tt>Value</tt> field or input to model equality.</t>
      </section>
      <section anchor="content" toc="include">
        <name>Content</name>
        <t><tt>content</tt> is exact local material that participates in comparison. This model does not perform Unicode normalization, character set conversion, media type processing, decompression, canonicalization, or any other transformation.</t>
        <t>An application starting from a richer source object is responsible for defining any mapping from source material to content before admission to this model. Different native representations are not considered equivalent merely because an application believes they describe the same thing; a surrounding specification has to define that mapping explicitly before the resulting exact octets enter <tt>content</tt>. If that mapping collapses a distinction the application later expects identifier comparison to preserve, no later encoding or cryptographic operation can restore the distinction.</t>
        <t>Accordingly, <tt>content</tt> is exact local material after any semantic projection defined by the application. It is not a universal canonical form and this model is not a substitute for canonicalization or mapping rules specific to a source format.</t>
      </section>
      <section anchor="comparison-relevant-placement" toc="include">
        <name>Placement of Comparison Distinctions</name>
        <t>This model does not define separate occurrence, nonce, revision, timestamp, sequence, role, relationship, or position fields. A surrounding specification that needs such a distinction to affect comparison MUST make the distinction observable in the admitted Value rather than leave it as ambient state that can change the result.</t>
        <t>The intended placement rule is:</t>
        <ol spacing="normal">
          <li>
            <t>a distinction that changes interpretation of the Value as a whole belongs in <tt>context</tt>;</t>
          </li>
          <li>
            <t>exact local comparison material that is not represented by an independently governed identifier belongs in <tt>content</tt>; and</t>
          </li>
          <li>
            <t>a distinction that qualifies the application-specific participation of one imported identifier belongs in that identifier's <tt>scope</tt>, unless the application deliberately represents the distinction as exact local material in <tt>content</tt>. A distinction that changes the imported identifier interpretation or imported comparison relation is governed by <xref target="scoped-identifiers"/> and is not moved only into <tt>content</tt>.</t>
          </li>
        </ol>
        <t><tt>scope</tt> is therefore not a generic metadata channel for each member. Material belongs in <tt>scope</tt> only when its comparison meaning is specific to that imported identifier's membership in the Value. Semantics of the whole Value remain in <tt>context</tt>, and independently meaningful local structure remains in <tt>content</tt>.</t>
        <t>For example, if the same imported identifier can participate once as a "subject" and once as an "input", and that role changes Value equality, a profile can define two distinct scope octet strings that encode the role. If ordered occurrences or multiplicity matter, a profile can similarly bind an occurrence or position label into the applicable scope, or encode the relevant application structure exactly in <tt>content</tt>.</t>
        <t>A surrounding mapping specifies how source distinctions become these octets; it is not an alternative storage location for a distinction that varies between Values and is intended to affect comparison. If such a distinction is omitted from the admitted Value, this model necessarily treats source values differing only in that omitted distinction as the same Value. No later profile encoding or cryptographic operation can recover it.</t>
      </section>
      <section anchor="identifier-set" toc="include">
        <name>Identifiers</name>
        <t><tt>identifiers</tt> is a mathematical finite set of <tt>ScopedIdentifier</tt> values. Membership is relevant to comparison. For each admitted <tt>Value</tt>, the entire finite membership of this set is part of the comparison state: adding, removing, or substituting a distinct member changes the <tt>Value</tt> when <tt>context</tt> and <tt>content</tt> are unchanged. The set is not an alternatives list, capability advertisement, inventory, discovery result, history, or version-negotiation mechanism. A surrounding source mapping that constructs <tt>identifiers</tt> remains subject to the mapping-determinism requirement in <xref target="introduction"/>; fixed explicit inputs and fixed mapping semantics determine the complete admitted set rather than an implementation-selected subset. Order of presentation and duplicate occurrences are not semantic distinctions. Duplicate presentation is not a way to express multiplicity. If multiplicity or occurrence identity is relevant to comparison, the surrounding profile MUST represent that distinction explicitly under the placement rule in <xref target="comparison-relevant-placement"/>.</t>
        <t>Set membership means only that the complete scoped identifier participates in the structured value for model comparison. Membership or co-membership does not by itself assign an application-specific role or relationship between a member and the Value or another member. Co-membership is not an implicit join between identifier systems; cross-system identity or equivalence is outside this model as described in <xref target="imported-identifier-systems"/>. A source relation such as alias-of, equivalent-to, controls, authorized-for, supersedes, component-of, or alternative-to is not preserved merely by admitting both endpoint identifiers as members. If that relation is relevant to comparison, the surrounding mapping resolves it before admission or materializes the required distinction under <xref target="comparison-relevant-placement"/>; otherwise flattening the relation to bare co-membership is upstream semantic loss.</t>
        <t>Any loss relevant to comparison already embodied in an imported identifier is inherited by the Value. If the imported construction or its applicable comparison deliberately or accidentally maps two source values to the same imported identifier result, preserving that result as opaque octets cannot recover the discarded source distinction. This inherited upstream loss is distinct from a collision or loss introduced by a later derived identifier profile.</t>
        <t>If an application needs role, order, position, multiplicity, edge type, or another relationship distinction, it MUST apply the placement rule in <xref target="comparison-relevant-placement"/>. In particular, a distinction for one identifier that changes comparison cannot exist only in an external relationship table while the same Value octets are supplied to the derivation.</t>
        <t>This specification does not require the resulting relationships to form a directed acyclic graph (DAG), tree, line, or other global topology and does not traverse or resolve identifiers.</t>
      </section>
      <section anchor="separation-of-responsibilities-and-axis-independence" toc="include">
        <name>Separation of Comparison Responsibilities</name>
        <t>The three fields expose separate comparison responsibilities; this document does not claim that they are the only representation able to carry the same information. Projecting away any field can erase a distinction this model exposes:</t>
        <ul spacing="normal">
          <li>
            <t>removing <tt>context</tt> loses the explicit boundary that distinguishes otherwise identical Values interpreted under different semantics of the Value as a whole or of imported scopes;</t>
          </li>
          <li>
            <t>removing <tt>content</tt> removes the dedicated location for exact local material that affects comparison, which then has to be carried elsewhere; and</t>
          </li>
          <li>
            <t>removing <tt>identifiers</tt> removes the dedicated model-level boundary for opaque results imported from independently governed identifier systems. A surrounding specification can still encode equivalent information in <tt>content</tt>, but then has to define the per-system qualification, complete-membership, order and duplicate treatment, and imported-comparison adaptation needed for that application rather than reusing the <tt>ScopedIdentifier</tt> and mathematical-set semantics defined here.</t>
          </li>
        </ul>
        <t>The value of the <tt>identifiers</tt> field is therefore semantic factoring and reuse, not expressive completeness: it standardizes how opaque imported identifier results participate in comparison while leaving the internal identifier schemes, resolution, trust, and relationships outside the model. <tt>context</tt>, <tt>content</tt>, and <tt>identifiers</tt> expose interpretation context, exact local material, and opaque imported identifier results. Additional roles or relationships need no new primitive field, but every distinction that affects comparison MUST be represented in the admitted Value under <xref target="comparison-relevant-placement"/>.</t>
      </section>
    </section>
    <section anchor="admission" toc="include">
      <name>Admission</name>
      <t>A candidate value is structurally admitted to the model only when:</t>
      <ol spacing="normal">
        <li>
          <t><tt>context</tt> and <tt>content</tt> are finite octet strings;</t>
        </li>
        <li>
          <t>every identifier is a <tt>ScopedIdentifier</tt> whose scope and identifier are finite octet strings; and</t>
        </li>
        <li>
          <t><tt>identifiers</tt> is finite.</t>
        </li>
      </ol>
      <t>Structural admission determines the mathematical domain and is independent of external discovery or interpretation. It does not assert that arbitrary identifier octets are valid according to an imported identifier system. A surrounding profile that imports such a system defines any validation required by that identifier system as part of its mapping from source material to Value.</t>
      <t>These are conditions of the model domain, not capability limits. Local memory, time, storage, or denial-of-service limits do not redefine admission or equivalence; resource refusal does not place an otherwise admitted Value outside the mathematical domain.</t>
      <t>Model semantics are independent of implementation scale. Streaming, bounded storage, resource refusal, profile subsets, sharding, replication, or long-delay operation MUST NOT change an admitted <tt>Value</tt>, <tt>ScopedIdentifier</tt> equality, identifier set membership, or the equivalence relation in <xref target="equivalence"/>.</t>
      <t>The model requires no continuously reachable authority, synchronized clock, current ledger head, mutable global registry, network lookup, or object traversal. A surrounding profile can use such facilities, but state that changes a Value or its comparison semantics MUST be explicit rather than ambient.</t>
      <t>Implementations processing the same admitted Values MUST apply the same model equivalence semantics. Profile capability minima do not become <tt>Value</tt> fields, change equality, or turn local resource refusal into model domain rejection.</t>
    </section>
    <section anchor="equivalence" toc="include">
      <name>Equivalence</name>
      <t>Two admitted values are equivalent if and only if all of the following hold:</t>
      <ol spacing="normal">
        <li>
          <t>their <tt>context</tt> octet strings are equal;</t>
        </li>
        <li>
          <t>their <tt>content</tt> octet strings are equal; and</t>
        </li>
        <li>
          <t>their <tt>identifiers</tt> are the same mathematical set under exact <tt>ScopedIdentifier</tt> equality.</t>
        </li>
      </ol>
      <t>This relation is reflexive, symmetric, and transitive. Under any fixed applicable derivation semantics, a derived identifier profile using this model MUST treat Values equivalent under this model as equivalent derivation inputs; accepted source or wire representations MUST NOT split one model equivalence class. This requirement does not require different surrounding derivation semantics to produce equal outputs from the same Value. Any merge of non-equivalent Values belongs to the surrounding mapping or construction and its loss boundaries, not to model equality.</t>
      <t>The equivalence relation, not a wire representation, states which distinctions matter. Concrete representations do not alter this model unless the profile defines a different mapping from source material to Value.</t>
      <t>Model equivalence is an equality relation over admitted Values. Interpreting that equality under imported identifier semantics additionally requires compatible surrounding context and scope definitions. Representation equality does not establish interpretation equality.</t>
    </section>
    <section anchor="imported-identifier-systems" toc="include">
      <name>Imported Identifiers</name>
      <t>This model can represent identifiers from multiple independently governed systems in one Value without translating between their internal semantics. For example:</t>
      <sourcecode type="text">context = profile_X

identifiers = {
  (scope_A, identifier_A),
  (scope_B, identifier_B),
  (scope_C, identifier_C)
}</sourcecode>
      <t>The surrounding definition for <tt>profile_X</tt> specifies the imported meaning of each scope. Bare identifier octet equality across scopes or systems is not an implicit join. A bridge asserting identity or equivalence across systems is a separate protocol decision and is outside this model.</t>
      <t>A complete identifier produced by another system can be imported as opaque identifier octets without parsing or absorbing that system's internal canonicalization, digest, registry, or derivation semantics when its relevant comparison is already represented by the selected exact octets. Otherwise the surrounding import mapping performs the adaptation of the imported comparison rules described in <xref target="scoped-identifiers"/> before admission. The surrounding profile defines the imported identifier meaning associated with the exact <tt>(context, scope, identifier)</tt> tuple; other application-specific distinctions can be carried elsewhere in the Value under <xref target="comparison-relevant-placement"/>. This model preserves those exact materials for comparison without assigning additional semantics to them.</t>
    </section>
    <section anchor="model-boundaries" toc="include">
      <name>Model Boundaries</name>
      <section anchor="relationship-to-derived-identifiers" toc="include">
        <name>Derived Identifier Constructions</name>
        <t>This specification defines what is compared; it does not define the bytes that are hashed or the syntax of a resulting identifier.</t>
        <t>A derived identifier profile using this model is expected to make the following boundaries explicit:</t>
        <sourcecode type="text">source representation
    -&gt; profile mapping
    -&gt; admitted Value
    -&gt; deterministic profile encoding
    -&gt; optional cryptographic compression
    -&gt; identifier</sourcecode>
        <t>A derived identifier profile MAY define a derivation domain that is a proper subset of structurally admitted Values when required by its encoding or downstream operation. Membership in that profile domain MUST be determined from the admitted Value under fixed profile semantics, MUST NOT depend on which accepted source or wire representation produced the Value, and MUST NOT depend on implementation-local resource availability. The profile domain MUST be closed under this model's equivalence relation: if <tt>v1 ~ v2</tt>, either both Values are in the profile domain or neither is. Restricting a profile derivation domain does not redefine model admission or model equivalence.</t>
        <t>Loss introduced by the mapping from source material to Value or by a profile encoding is upstream of any cryptographic collision. A profile claiming independent recomputation MUST define enough information for separate implementations applying the same fixed applicable derivation semantics to produce the same identifier from equivalent admitted values without hidden state that can change the result.</t>
      </section>
      <section anchor="relationship-to-mapping-and-binding-mechanisms" toc="include">
        <name>Mapping and Binding Mechanisms</name>
        <t>This document defines a comparison model independent of serialization, not a concrete serialization or wire format and not a universal source canonicalization. The information model/data model distinction in <xref target="RFC3444"/> is an architectural analogy; <xref target="RFC8949"/> likewise separates an abstract data model from encoding choices. Concrete serializations belong to surrounding profiles.</t>
        <t>Source mappings determine which distinctions survive into an admitted Value. Imported identifier systems retain their own internal derivation and comparison semantics; the import mapping adapts the relevant comparison to this model's exact <tt>(scope, identifier)</tt> boundary. Downstream binding, graph, provenance, lifecycle, or relationship protocols can carry derived identifiers without becoming part of model equality.</t>
        <t>The model neither repairs distinctions already collapsed upstream nor assigns relationship semantics merely from membership in <tt>identifiers</tt>. W3C specifications provide contrasting examples: Controlled Identifiers <xref target="W3C-CID-1.0"/> gives explicit semantics to relationships such as <tt>alsoKnownAs</tt> and verification relationships; DIDs <xref target="W3C-DID-1.1"/> distinguish independent and group controller arrangements; and Recognized Entities <xref target="W3C-RECOGNIZED-ENTITIES-1.0"/> uses <tt>sameAs</tt> for cross-system references to the same entity. These are relationship-bearing structures, not evidence that bare exact co-membership has those meanings.</t>
        <t>Changing a representation, binding construction, or cryptographic mechanism does not by itself change an admitted Value. A change to the value domain, admission rules, <tt>ScopedIdentifier</tt> semantics, identifier set semantics, or equivalence relation changes the applicable model semantics; existing Values are not silently reinterpreted under changed semantics. A semantic change that affects comparison defines different applicable mapping, context, or model semantics rather than a change only in representation.</t>
      </section>
    </section>
    <section anchor="iana" toc="include">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="security-considerations" toc="include">
      <name>Security Considerations</name>
      <t>The primary security requirement of this model is correct preservation of distinctions that affect comparison by surrounding mappings and profiles. Ambiguous parsing, lossy preprocessing, normalization, default insertion, field exclusion, omitted role or occurrence qualification, scope remapping, or copying an unadapted imported alias or spelling into a boundary based on exact octet comparison can make intended equivalence diverge or make non-equivalent source objects enter the same model value. Later cryptography cannot repair either error or recover a distinction that has already been erased.</t>
      <t>An identifier does not authenticate or validate an object it denotes. Consumers requiring authenticity, authority, freshness, revocation, provenance, or trust evaluate those properties separately.</t>
      <t>Operational resource limits used for denial-of-service protection do not redefine the model domain.</t>
      <t>Distribution or selection of the mapping from source material to Value, context definitions, and scope definitions can be security-sensitive. Mutable locators, replaceable aliases, or partially fixed dependencies can make parties apply incompatible semantics to the same source material. When a mapping constructs <tt>identifiers</tt>, attacker-controlled member injection, omission, or substitution changes model equality unless that membership difference is explicitly part of the applicable mapping semantics. Such a change is a mapping-integrity failure before any downstream binding or cryptographic construction, not a collision in that downstream construction. A surrounding protocol MUST protect each definition that affects comparison and each attacker-controlled selection step according to its threat model.</t>
    </section>
    <section anchor="privacy-considerations" toc="include">
      <name>Privacy Considerations</name>
      <t>Values can contain stable, identifying, or low-entropy material. A deterministic profile derived from this model can therefore enable correlation or offline guessing. Placing identifiers from independently governed systems in one Value can create linkage across systems even though generic set membership asserts no identity or trust across systems. The conjunction of several members can be more identifying than any member alone because the combination can narrow the set of source objects consistent with the Value. Deriving or exposing a stable opaque identifier for the composite Value does not by itself remove that correlation risk even when the imported member octets are not directly exposed. Persistent identifiers and linkability are discussed more generally in <xref target="RFC6973"/>. Applications need to consider whether unnecessary identifying material should be omitted when resulting identifiers will be broadly observable.</t>
      <t>Opaque identifiers do not make denoted or associated values confidential.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner"/>
          <date month="March" year="1997"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba" fullname="B. Leiba"/>
          <date month="May" year="2017"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC3444" target="https://www.rfc-editor.org/info/rfc3444">
        <front>
          <title>On the Difference between Information Models and Data Models</title>
          <author initials="A." surname="Pras" fullname="A. Pras"/>
          <author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder"/>
          <date month="January" year="2003"/>
        </front>
        <seriesInfo name="RFC" value="3444"/>
        <seriesInfo name="DOI" value="10.17487/RFC3444"/>
      </reference>
      <reference anchor="I-D.le-comparing-derived-identifiers">
        <front>
          <title>Principles for Comparing Independently Derived Identifiers</title>
          <author initials="T." surname="Le" fullname="Thanh Le"/>
          <date month="August" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-le-comparing-derived-identifiers-00"/>
      </reference>
      <reference anchor="RFC9493" target="https://www.rfc-editor.org/info/rfc9493">
        <front>
          <title>Subject Identifiers for Security Event Tokens</title>
          <author initials="A." surname="Backman" fullname="A. Backman"/>
          <author initials="M." surname="Scurtescu" fullname="M. Scurtescu"/>
          <author initials="P." surname="Jain" fullname="P. Jain"/>
          <date month="December" year="2023"/>
        </front>
        <seriesInfo name="RFC" value="9493"/>
        <seriesInfo name="DOI" value="10.17487/RFC9493"/>
      </reference>
      <reference anchor="RFC9525" target="https://www.rfc-editor.org/info/rfc9525">
        <front>
          <title>Service Identity in TLS</title>
          <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre"/>
          <author initials="R." surname="Salz" fullname="R. Salz"/>
          <date month="November" year="2023"/>
        </front>
        <seriesInfo name="RFC" value="9525"/>
        <seriesInfo name="DOI" value="10.17487/RFC9525"/>
      </reference>
      <reference anchor="W3C-CID-1.0" target="https://www.w3.org/TR/controller-document/">
        <front>
          <title>Controlled Identifiers v1.0</title>
          <author><organization>World Wide Web Consortium</organization></author>
          <date month="May" year="2025"/>
        </front>
        <seriesInfo name="W3C" value="Recommendation"/>
      </reference>
      <reference anchor="W3C-DID-1.1" target="https://www.w3.org/TR/did-1.1/">
        <front>
          <title>Decentralized Identifiers (DIDs) v1.1</title>
          <author><organization>World Wide Web Consortium</organization></author>
          <date month="March" year="2026"/>
        </front>
        <seriesInfo name="W3C" value="Candidate Recommendation Snapshot"/>
      </reference>
      <reference anchor="W3C-RECOGNIZED-ENTITIES-1.0" target="https://www.w3.org/TR/vc-recognized-entities-1.0/">
        <front>
          <title>Recognized Entities v1.0</title>
          <author><organization>World Wide Web Consortium</organization></author>
          <date month="May" year="2026"/>
        </front>
        <seriesInfo name="W3C" value="First Public Working Draft"/>
      </reference>
      <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
        <front>
          <title>Concise Binary Object Representation (CBOR)</title>
          <author initials="C." surname="Bormann" fullname="C. Bormann"/>
          <author initials="P." surname="Hoffman" fullname="P. Hoffman"/>
          <date month="December" year="2020"/>
        </front>
        <seriesInfo name="STD" value="94"/>
        <seriesInfo name="RFC" value="8949"/>
        <seriesInfo name="DOI" value="10.17487/RFC8949"/>
      </reference>
      <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973"><front><title>Privacy Considerations for Internet Protocols</title><author initials="A." surname="Cooper" fullname="A. Cooper"/><author initials="H." surname="Tschofenig" fullname="H. Tschofenig"/><author initials="B." surname="Aboba" fullname="B. Aboba"/><author initials="J." surname="Peterson" fullname="J. Peterson"/><author initials="J." surname="Morris" fullname="J. Morris"/><author initials="M." surname="Hansen" fullname="M. Hansen"/><author initials="R." surname="Smith" fullname="R. Smith"/><date month="July" year="2013"/></front><seriesInfo name="RFC" value="6973"/><seriesInfo name="DOI" value="10.17487/RFC6973"/></reference></references>
  <section anchor="model-test-evidence" toc="include">
        <name>Model Test Considerations</name>
        <t>This appendix is informative.</t><t>Useful corpus cases include typed emptiness; the distinction between an empty set and an empty member; arbitrary opaque octets; duplicate and reordered presentations; scoped distinctions; leading zeros; ambiguity in tuple framing; deterministic mappings under fixed explicit inputs; stable adaptation of imported equivalence classes; and rejection rather than coercion outside the model domain. Such vectors test model semantics without imposing a wire format, normalization, hash, API shape, or resource floor.</t>
      </section>
    </back>
</rfc>
