<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jgc-netmod-yang-path-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>YANG path format (ypath)</title>
    <seriesInfo name="Internet-Draft" value="draft-jgc-netmod-yang-path-00"/>
    <author fullname="James Cumming">
      <organization>Nokia</organization>
      <address>
        <email>james.cumming@nokia.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="13"/>
    <area>Operations and Management</area>
    <workgroup>Network Modeling</workgroup>
    <keyword>YANG</keyword>
    <keyword>path</keyword>
    <keyword>YANG path</keyword>
    <keyword>JSON instance path</keyword>
    <abstract>
      <?line 54?>

<t>This document defines ypath (YANG path), a single-line, self-describing path
format for referencing nodes in YANG schema trees, YANG instance data, and
data filters.  A ypath identifies YANG nodes using module-qualified names and
list key predicates.  The format is closely related to the YANG
<tt>instance-identifier</tt> built-in type but additionally supports schema paths,
filter wildcards, regular expression key matching, key value sets, and path
enumeration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://draft-jgc-netmod-yang-path.jgc.dev/draft-jgc-netmod-yang-path.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jgc-netmod-yang-path/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Network Modeling Working Group mailing list (<eref target="mailto:netmod@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/netmod/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/netmod/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jgcumming/draft-jgc-netmod-yang-path"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A number of path formats currently exist to describe YANG modeled information.
XPath <xref target="XPATH"/> is used for constraints and derived values within YANG modules
<xref target="RFC7950"/>.  The YANG built-in type <tt>instance-identifier</tt> <xref target="RFC7950"/> defines
a path subset for referencing data tree nodes in instance encodings.  RESTCONF
<xref target="RFC8040"/> defines URI paths for accessing data resources.  JSONPath
<xref target="RFC9535"/> provides a query language for JSON documents, including those
produced by the JSON encoding of YANG data <xref target="RFC7951"/>.</t>
      <t>These path formats serve well for their initial use cases.  However, some have
shortcomings for YANG module authors, tool implementers, and operators who need
a single, generic, human-readable path format that can refer equally to schema
locations, instance data, and filter expressions without the full expressiveness
(and complexity) of XPath or JSONPath.</t>
      <t>There is a need for a self-describing path format that can be used to describe
schema data, instance data, and filtering in a consistent manner.  Deployed
implementations already use such a format (commonly referred to as a JSON
instance path) in management interfaces; however, no IETF specification
currently defines this format.</t>
      <t>This document defines ypath (short for YANG path), a self-describing, generic
path format for referencing YANG schema, instance data, and filters.</t>
      <t>Ypath is intended for management APIs, path enumeration tools, and
filtering specifications where a compact,
human-readable representation of a YANG element is required.  Additional uses
for this path format can easily been forseen as path selection for streaming
telemetry and for YANG reference statements, such as <tt>when</tt> and <tt>must</tt> statements,
in future YANG versions.  This document specifies the ypath syntax, formal
grammar, and conformance requirements.  It does not define a protocol,
API, or encoding.  Selection based on the contents of node values
(other than list keys) is out of scope.</t>
      <section anchor="applicability">
        <name>Applicability</name>
        <t>Ypath is a string syntax for identifying locations in a YANG data tree.  It is
intended for use in specifications and implementations that need to:</t>
        <ul spacing="normal">
          <li>
            <t>enumerate or display paths in a YANG schema;</t>
          </li>
          <li>
            <t>identify specific nodes in YANG instance data;</t>
          </li>
          <li>
            <t>express filter expressions that select data subsets; and</t>
          </li>
          <li>
            <t>convey path information in management protocol error reporting.</t>
          </li>
        </ul>
        <t>This document defines the ypath format only.  It does not specify how ypaths are
carried on the wire, stored, or processed by a particular protocol such as
NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.</t>
      </section>
      <section anchor="out-of-scope">
        <name>Out of Scope</name>
        <t>Ypath identifies nodes in a YANG schema or instance tree.  Predicates in filter
paths apply only to list key values.  The following are out of scope for this
document:</t>
        <ul spacing="normal">
          <li>
            <t>selection or matching based on the value of any node other than a list key
(for example, matching a <tt>description</tt> or <tt>mtu</tt> leaf value);</t>
          </li>
          <li>
            <t>comparison operators, ranges, or expressions over leaf or leaf-list values;</t>
          </li>
          <li>
            <t>content-based queries across the datastore (for example, "all interfaces
where <tt>enabled</tt> is <tt>true</tt>"); and</t>
          </li>
          <li>
            <t>any form of value predicate attached to a non-key node in the path.</t>
          </li>
        </ul>
        <t>Such selection belongs in query languages (for example, XPath or JSONPath) or in
protocol-specific filter mechanisms, not in ypath.  A ypath <bcp14>MAY</bcp14> identify a
leaf node (for example, <tt>/.../description</tt>), but <bcp14>MUST NOT</bcp14> specify a condition on
that leaf's value.</t>
        <t>**TODO: Whilst this section is the initial position, there are use-cases such as a
short-form subtree-filter representation for NETCONF that may be useful to include,
for example, all interfaces in a YANG list where the <tt>enabled</tt> child field is
set to <tt>True</tt>.</t>
      </section>
      <section anchor="relationship-to-other-path-formats">
        <name>Relationship to Other Path Formats</name>
        <t>Ypath is closely related to, but not identical with, the lexical representation
of the YANG <tt>instance-identifier</tt> built-in type defined in <xref target="RFC7950"/>.
Instance-identifiers are used to reference data tree nodes in instance
encodings and require key values for list entries.  Ypath additionally defines
a schema path form (with key names but not values) and filter forms (including
wildcards) that are outside the scope of <tt>instance-identifier</tt>.</t>
        <t>Where ypath instance path syntax aligns with <tt>instance-identifier</tt>, the
definitions in <xref target="RFC7950"/> form the basis for interpretation unless this
document explicitly specifies otherwise.  The principal differences for instance
paths are:</t>
        <ul spacing="normal">
          <li>
            <t>module names are inherited along the path rather than repeated on every
node (see <xref target="module-qualified-names"/>), although they <bcp14>MAY</bcp14> be provided is desired;</t>
          </li>
          <li>
            <t>numeric and boolean list key values <bcp14>MAY</bcp14> appear without quotes (see
<xref target="lists-in-instance-data"/>); and</t>
          </li>
          <li>
            <t>filter paths <bcp14>MAY</bcp14> use the wildcard <tt>*</tt> in key values (see <xref target="wildcards"/>);</t>
          </li>
          <li>
            <t>filter paths <bcp14>MAY</bcp14> use regular expressions in key values (see
<xref target="regular-expressions"/>); and</t>
          </li>
          <li>
            <t>filter paths <bcp14>MAY</bcp14> use key value sets to match multiple explicit key values
(see <xref target="key-value-sets"/>).</t>
          </li>
        </ul>
        <t>Ypath is not a query language.  It does not provide the expression evaluation,
node set operations, or document traversal capabilities of XPath or JSONPath.</t>
      </section>
      <section anchor="document-structure">
        <name>Document Structure</name>
        <t><xref target="conventions"/> describes terms used in this document.  <xref target="out-of-scope"/>
states what ypath does not cover.  <xref target="format-definition"/> defines the ypath
format.  <xref target="formal-syntax"/> provides an ABNF grammar.
<xref target="conformance"/> defines conformance requirements.  <xref target="examples"/> gives worked
examples.  <xref target="security-considerations"/> discusses security implications.
<xref target="iana-considerations"/> specifies IANA actions.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used in this document:</t>
        <dl>
          <dt>ypath:</dt>
          <dd>
            <t>A path string conforming to the format defined in this document.  Short for
YANG path.</t>
          </dd>
          <dt>schema path:</dt>
          <dd>
            <t>A ypath that identifies a location in a YANG schema tree.  List key names
appear in square brackets without values (for example, <tt>[name]</tt>).</t>
          </dd>
          <dt>instance path:</dt>
          <dd>
            <t>A ypath that identifies a location in a YANG instance data tree.  List keys
and their values appear in square brackets (for example,
<tt>[name="eth0"]</tt>).</t>
          </dd>
          <dt>filter path:</dt>
          <dd>
            <t>A ypath used to select a set of instance data nodes.  Filter paths use
wildcards, regular expressions, or key value sets in one or more list key
values only.  Predicates on non-key node values are out of scope (see
<xref target="out-of-scope"/>).</t>
          </dd>
          <dt>module-qualified name:</dt>
          <dd>
            <t>A YANG node identifier prefixed with the defining module name and a colon
(for example, <tt>ietf-interfaces:interfaces</tt>).</t>
          </dd>
          <dt>path segment:</dt>
          <dd>
            <t>A single component of a ypath, consisting of a node name and optional key
predicates, separated from adjacent segments by a <tt>/</tt> character.</t>
          </dd>
        </dl>
        <t>The terminology for YANG data nodes (for example, leaf, list, container) is
defined in <xref target="RFC7950"/>.</t>
      </section>
    </section>
    <section anchor="format-definition">
      <name>Format Definition</name>
      <t>This section defines the ypath format.  The normative grammar is given in
<xref target="formal-syntax"/>.</t>
      <t>The ypath format applies to YANG schema information, YANG instance data, and
filter expressions.  Predicates in filter paths are limited to list key values;
selection based on any other node value is out of scope (see <xref target="out-of-scope"/>).</t>
      <section anchor="root-of-the-yang-path">
        <name>Root of the YANG Path</name>
        <t>A ypath is always expressed from the root of the YANG data tree.  A
specification that splits a path into a prefix and a sub-path <bcp14>MUST</bcp14> evaluate
both parts together from the root.</t>
        <t>Approach 1:</t>
        <ul spacing="normal">
          <li>
            <t>Path: <tt>/item1/item2/item3/item4</tt></t>
          </li>
        </ul>
        <t>Approach 2:</t>
        <ul spacing="normal">
          <li>
            <t>Prefix: <tt>/item1/item2</tt></t>
          </li>
          <li>
            <t>Sub-path: <tt>/item3/item4</tt></t>
          </li>
          <li>
            <t>(Yields) Path: <tt>/item1/item2/item3/item4</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="module-qualified-names">
        <name>Module-Qualified Names</name>
        <t>A ypath uses a <tt>module:identifier</tt> form where <tt>module</tt> is the name of the YANG
module that defines the node.  For example:</t>
        <t><tt>
/ietf-interfaces:interfaces
</tt></t>
        <t><strong>TODO: Do we need to handle different module versions/semantic versions in the path?</strong></t>
        <t>The module name is inherited along the path from left to right.  If the
defining module does not change (as is typical within a single module, and
unlike at augment boundaries) the module name does not need to be repeated.
For example:</t>
        <t><tt>
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets
</tt></t>
        <t>It is also valid to provide the module name on every path segment.  For example:</t>
        <t><tt>
/ietf-routing-policy:routing-policy/ietf-routing-policy:defined-sets/ietf-routing-policy:prefix-sets
</tt></t>
        <t>The first path segment of a ypath <bcp14>SHOULD</bcp14> include a module name.  This ensures
that the path is self-describing without external schema context.  A
specification that allows omission of the module name on the first segment
<bcp14>MUST</bcp14> state the default module to be assumed.</t>
        <t><strong>TODO: Is the <bcp14>SHOULD</bcp14> correct here or should it be a <bcp14>MUST</bcp14>?</strong></t>
      </section>
      <section anchor="augmentations">
        <name>Augmentations</name>
        <t>When a node is defined by an augmenting module, the module name in the path
<bcp14>MUST</bcp14> change to the augmenting module at the augmented node.  For example:</t>
        <t><tt>
/ietf-routing:routing/control-plane-protocols/ietf-ospf:ospf/address-family
</tt></t>
        <t>In this example, <tt>control-plane-protocols</tt> is defined in <tt>ietf-routing</tt> and
<tt>ospf</tt> is defined in <tt>ietf-ospf</tt>, which augments <tt>ietf-routing</tt>.</t>
        <t>The following fully qualified form is equally valid:</t>
        <t><tt>
/ietf-routing:routing/ietf-routing:control-plane-protocols/ietf-ospf:ospf/ietf-ospf:address-family
</tt></t>
      </section>
      <section anchor="deviations">
        <name>Deviations</name>
        <t>Deviations do not change the namespace of YANG nodes.  The module portion of a
ypath therefore does not change at a deviated node.</t>
      </section>
      <section anchor="importinclude">
        <name>Import/Include</name>
        <t>Imports and includes do not change the namespace of YANG nodes.  The module
portion of a ypath therefore does not change solely because a node is accessed
through an import or include relationship.</t>
      </section>
      <section anchor="containers">
        <name>Containers</name>
        <section anchor="presence-containers">
          <name>Presence Containers</name>
          <t>A ypath to a presence container references the container node directly:</t>
          <t><tt>
/module:node1/node2/container1/presence-container1
</tt></t>
          <t>In instance data, the path exists only when the presence container has been
instantiated.  In schema paths, the container is always addressable.</t>
        </section>
        <section anchor="non-presence-containers">
          <name>Non-Presence Containers</name>
          <t>A ypath to a non-presence container references the container node directly:</t>
          <t><tt>
/module:node1/node2/container1/non-presence-container1
</tt></t>
          <t>In instance data, the path exists when any child node has been instantiated.
In schema paths, the container is always addressable.</t>
        </section>
      </section>
      <section anchor="leaves">
        <name>Leaves</name>
        <t>A path to a leaf uses the same final segment in schema and instance paths.  The
parent path segments differ between schema and instance forms when lists appear
above the leaf.</t>
        <t>Schema example:</t>
        <t><tt>
/ietf-interfaces:interfaces[name]/description
</tt></t>
        <t>Instance example:</t>
        <t><tt>
/ietf-interfaces:interfaces[name="my_interface"]/description
</tt></t>
      </section>
      <section anchor="choices">
        <name>Choices</name>
        <t>YANG choice and case nodes are not instantiated in the data tree.  A ypath
therefore does not include a segment for the choice or case node when considering
instance-data.  The path proceeds directly to the node within the selected case.</t>
        <t>When walking a schema tree to enumerate paths, implementations <bcp14>MUST</bcp14> emit a
path segment for both the <tt>choice</tt> and <tt>case</tt> nodes.</t>
        <t>For example, consider the following YANG model:</t>
        <t><tt>
module example {
  yang-version 1.1;
  namespace "urn:example:example";
  prefix "ex";
  revision "2026-08-12";
  container server {
    choice protocol {
      case tcp {
        container tcp {
          leaf port {
            type uint8;
          }
        }
      }
      case udp {
        container udp {
          leaf port {
            type uint8;
          }
        }
      }
    }
  }
}
</tt></t>
        <t>Instance paths:</t>
        <t><tt>
/example:server/tcp/port
/example:server/udp/port
</tt></t>
        <t>Schema paths:</t>
        <t><tt>
/example:server/protocol/tcp/tcp/port
/example:server/protocol/udp/udp/port
</tt></t>
      </section>
      <section anchor="identities-and-identity-references-identityref">
        <name>Identities and Identity References (identityref)</name>
        <t>An <tt>identityref</tt> leaf is referenced by a path to the leaf itself.  The identity
value is not encoded in the path; it appears in the instance data value.</t>
        <t>Schema path:</t>
        <t><tt>
/ietf-routing:routing/control-plane-protocols/control-plane-protocol[type]/type
</tt></t>
        <t>Instance path:</t>
        <t><tt>
/ietf-routing:routing/control-plane-protocols/control-plane-protocol[name="main"]/type
</tt></t>
        <t>Where the leaf value uses the module-qualified identity name (for example,
<tt>ietf-ospf:ospf</tt>) in the data encoding, that value is not duplicated in the
ypath.</t>
      </section>
      <section anchor="lists">
        <name>Lists</name>
        <t>List handling differs between schema paths and instance paths.</t>
        <section anchor="lists-in-schema">
          <name>Lists in Schema</name>
          <t>A schema path to a list names the list node.  To address the list keys, each key
name appears in its own bracket pair without a value.  For example:</t>
          <t><tt>
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set[name]
</tt></t>
          <t>For multi-key lists:</t>
          <t><tt>
/module:node1/node2/list[key1][key2]
</tt></t>
          <t>When enumerating schema paths, a path to a list entry <bcp14>MUST</bcp14> include all key
names in brackets.  A path that uses the key name as a child segment is
invalid.  For example, the following is not a valid schema path:</t>
          <t><tt>
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set/name
</tt></t>
        </section>
        <section anchor="lists-in-instance-data">
          <name>Lists in Instance Data</name>
          <t>An instance path to a list entry includes each key and its value in square
brackets.  For example:</t>
          <t><tt>
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set[name="loopbacks"]
</tt></t>
          <t>A leaf under that list entry:</t>
          <t><tt>
/ietf-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set[name="loopbacks"]/mode
</tt></t>
          <t>For multi-key lists, each key appears in a separate bracket pair:</t>
          <t><tt>
/module:node1/node2/list[key1="value1"][key2="value2"]
</tt></t>
          <t>Key values that are strings <bcp14>MUST</bcp14> be enclosed in double quotes.  Key values
that are numeric or boolean <bcp14>MAY</bcp14> appear without quotes, provided that the
unquoted form is unambiguous.  For example:</t>
          <t><tt>
/openconfig-interfaces:interfaces/interface[name="1/1/1"]/subinterfaces/subinterface[index=0]
</tt></t>
        </section>
        <section anchor="keyless-lists">
          <name>Keyless lists</name>
          <t>A keyless list in schema may be referenced without providing a key in square branckets:</t>
          <t>Consider the <tt>ietf-isis@2022-10-19.yang</tt> model and the <tt>adjacency-state</tt> grouping:</t>
          <t><tt>
container adjacencies {
  config false;
  list adjacency {
    leaf neighbor-sys-type {
      type level;
      ...
    }
    leaf neighbor-sysid {
      type system-id;
      ...
    }
    ...
    description
      "List of operational adjacencies.";
  }
}
</tt></t>
          <t>In this model, <tt>adjacency</tt> is a keyless list.  Therefore, the ypath to the
<tt>neighbor-sys-type</tt> is:</t>
          <t><tt>
/ietf-routing:routing/control-plane-protocols/control-plane-protocol[name]/ietf-isis:isis/interfaces/interface[name]/adjacencies/adjacency/neighbor-sys-type
</tt></t>
          <t>A keyless list in instance data is refered to the same way:</t>
          <t><tt>
/ietf-routing:routing/control-plane-protocols/control-plane-protocol[name="isis1"]/ietf-isis:isis/interfaces/interface[name="ethernet1"]/adjacencies/adjacency/neighbor-sys-type
</tt></t>
          <t>The ability to reference a specific numeric item in a keyless list is not supported in ypath.</t>
        </section>
      </section>
      <section anchor="leaf-lists">
        <name>Leaf Lists</name>
        <t>A schema path to a leaf-list names the leaf-list node:</t>
        <t><tt>
/ietf-system:system/dns/servers
</tt></t>
        <t>An instance path to a specific leaf-list entry uses the same predicate form as
<tt>instance-identifier</tt> <xref target="RFC7950"/>:</t>
        <t><tt>
/ietf-system:system/dns/servers[.="192.0.2.1"]
</tt></t>
        <t>An instance path that references the leaf-list node without selecting a
particular entry names the leaf-list node without a predicate.</t>
        <t>A <tt>leaf-list-predicate</tt> accepts a literal value only (<tt>quoted-string</tt> or
<tt>unquoted-value</tt>).  Wildcards, regular expressions, and key value sets <bcp14>MUST
NOT</bcp14> be used in leaf-list predicates.</t>
        <t><strong>TODO: This is a first approach to this issue.  It could be considered out-of-scope
to identify specific leaf-list entries or this same approach could be used to allow for
matching of other specific values (such as leafs) as a solution to that problem</strong></t>
      </section>
      <section anchor="metadata-annotations">
        <name>Metadata Annotations</name>
        <t>Metadata annotations defined in <xref target="RFC7952"/> are not part of the ypath syntax.
A ypath identifies a data tree node only; it does not reference metadata
annotations attached to nodes.</t>
      </section>
      <section anchor="actions">
        <name>Actions</name>
        <t>A ypath to a YANG action names the action node.  For example:</t>
        <t><tt>
/example:mycontainer/do-something
</tt></t>
        <t>The action <tt>input</tt> and <tt>output</tt> nodes are not included in the path used to
invoke the action.  Input parameters are supplied separately in the protocol or
API operation that invokes the action.</t>
        <t><strong>TODO: Consider how input/output paths should be displayed.  One solution is to
add a new notation to show input and output.  This is needed as <tt>input</tt> and <tt>output</tt>
fields to an <tt>action</tt> may have name collisions, for example, the <tt>input</tt> <tt>name</tt> and the
<tt>output</tt> <tt>name</tt> which would appear as <tt>/example:mycontainer/do-something/name</tt> for both
despite being distinctly separate fields.  A proposal might be the <tt>::</tt> notation
to signify that the name before it specifies whether it is <tt>input</tt> or <tt>output</tt> with
these being the only supported options, for example,</strong></t>
        <t><tt>
/example:mycontainer/do-something/input::name
</tt>
          <strong>and</strong>
          <tt>
/example:mycontainer/do-something/output::name
</tt></t>
      </section>
      <section anchor="wildcards">
        <name>Wildcards</name>
        <t>Filter paths <bcp14>MAY</bcp14> use a wildcard, a regular expression (see
<xref target="regular-expressions"/>), or a key value set (see <xref target="key-value-sets"/>) in list
key predicates.  These forms apply only to filter paths; they are not used in
schema paths.</t>
        <t>For string-typed keys, the wildcard <bcp14>MUST</bcp14> appear inside double quotes:</t>
        <t><tt>
/ietf-interfaces:interfaces[name="*"]
</tt></t>
        <t>For numeric or boolean keys, the unquoted form <bcp14>MAY</bcp14> be used:</t>
        <t><tt>
/example:items/item[index=*]
</tt></t>
        <t><strong>TODO: Need to rethink whether <tt>*</tt> alone is sufficient or whether it needs to
be inside double-quotes for string types, or whether it would be better inside
single quotes in case <tt>*</tt> is a string value that might be confused with
a wildcard</strong></t>
        <t>If any key in a multi-key list uses a wildcard, all keys in that list entry
<bcp14>MUST</bcp14> use wildcards.  Mixing wildcards and specific values for different keys of
the same list entry is not permitted.  For example:</t>
        <t>Valid:</t>
        <t><tt>
/module:list[key1="*"][key2="*"]
</tt></t>
        <t>Not valid:</t>
        <t><tt>
/module:list[key1="foo"][key2="*"]
</tt></t>
      </section>
      <section anchor="regular-expressions">
        <name>Regular Expressions</name>
        <t>Filter paths <bcp14>MAY</bcp14> use a regular expression as a list key value to match multiple
list entries.  Regular expressions apply only to list key predicates in filter
paths.  They <bcp14>MUST NOT</bcp14> be used in schema paths or in instance paths that identify
a single known node.</t>
        <t>A regular expression key value uses the form <tt>r'pattern'</tt>, where <tt>pattern</tt> is
the regular expression body enclosed in single quotes.  For example, to select
the <tt>description</tt> leaf on all interfaces whose name begins with <tt>a</tt> or <tt>A</tt>:</t>
        <t><tt>
/ietf-interfaces:interfaces/interface[name=r'^[aA].*']/description
</tt></t>
        <t>The <tt>r</tt> prefix distinguishes a regular expression from a literal string value.
The pattern is matched against the string representation of the list key value
in the data encoding used by the implementation (for example, the JSON
encoding defined in <xref target="RFC7951"/>).</t>
        <t>Regular expression key values <bcp14>MUST</bcp14> use the <tt>r'...'</tt> form.  Double-quoted
strings <bcp14>MUST NOT</bcp14> be used to encode regular expressions.</t>
        <section anchor="regular-expression-dialect">
          <name>Regular Expression Dialect</name>
          <t>The regular expression dialect <bcp14>MUST</bcp14> be POSIX Extended Regular Expressions (ERE)
as defined in Section 9.3.6 of IEEE Std 1003.1-2008.  Implementations <bcp14>MAY</bcp14>
support additional regular expression dialects only if the enclosing
specification or API documents the dialect in use.</t>
        </section>
        <section anchor="escaping">
          <name>Escaping</name>
          <t>Within the single-quoted pattern, a single quote character is escaped as <tt>\'</tt>
and a backslash is escaped as <tt>\\</tt>.  All other characters are treated
literally.</t>
          <t><strong>TODO: Consider UTF-8 characters and if they need a special mention or special
handling</strong></t>
        </section>
        <section anchor="multi-key-lists">
          <name>Multi-Key Lists</name>
          <t>Unlike wildcards, regular expressions <bcp14>MAY</bcp14> be combined with literal key values
or other regular expressions in different key predicates of the same list entry.
For example:</t>
          <t><tt>
/module:routes/route[ip-prefix=r'^192\.0\.2\.'][route-type="unicast"]
</tt></t>
        </section>
        <section anchor="leaf-lists-1">
          <name>Leaf Lists</name>
          <t>Regular expression matching is defined for list keys only.  Leaf-list entry
selection uses literal values with the <tt>instance-identifier</tt> form (for
example, <tt>[.="value"]</tt>).</t>
        </section>
      </section>
      <section anchor="key-value-sets">
        <name>Key Value Sets</name>
        <t>Filter paths <bcp14>MAY</bcp14> use a key value set to match a list entry when the key value
equals any one of a given set of explicit values.  Key value sets apply only to
list key predicates in filter paths.  They <bcp14>MUST NOT</bcp14> be used in schema paths or
in instance paths that identify a single known node.</t>
        <t>A key value set uses curly braces enclosing a comma-separated list of key
values.  For example, to select the <tt>description</tt> leaf on interfaces named
<tt>ethernet1</tt> or <tt>ethernet3</tt>:</t>
        <t><tt>
/ietf-interfaces:interfaces/interface[name={"ethernet1", "ethernet3"}]/description
</tt></t>
        <t>An implementation matches the list entry if the key value is equal to any
member of the set.  The comparison uses the same string representation of key
values as instance paths (see <xref target="lists-in-instance-data"/>).</t>
        <section anchor="set-member-values">
          <name>Set Member Values</name>
          <t>Each member of a key value set is a literal key value.  Members <bcp14>MAY</bcp14> be
expressed as a double-quoted string or, if the value contains only characters
valid for an unquoted value, without quotes.  For example:</t>
          <t><tt>
/ietf-interfaces:interfaces/interface[name={"ethernet1", "ethernet3"}]/description
/module:items/item[id={1, 2, 3}]
/module:items/item[name={"foo", "bar"}]
</tt></t>
          <t>Wildcards, regular expressions, and nested key value sets <bcp14>MUST NOT</bcp14> appear as
set members.</t>
        </section>
        <section anchor="multi-key-lists-1">
          <name>Multi-Key Lists</name>
          <t>A key value set applies to a single key predicate.  Different keys in a
multi-key list <bcp14>MAY</bcp14> each use their own literal value, regular expression,
wildcard, or key value set independently.  For example:</t>
          <t><tt>
/module:routes/route[ip-prefix={"192.0.2.1/32", "192.0.2.2/32"}][route-type="unicast"]
</tt></t>
        </section>
        <section anchor="leaf-lists-2">
          <name>Leaf Lists</name>
          <t>Key value sets are defined for list keys only.  Leaf-list entry selection is
not defined for key value sets in this document.</t>
        </section>
      </section>
      <section anchor="relationship-to-json-encoding">
        <name>Relationship to JSON Encoding</name>
        <t>Considering the instance path
<tt>/ietf-routing:routing/control-plane-protocols/ietf-ospf:ospf/address-family</tt>
with a value of <tt>ipv4</tt>, the corresponding JSON based on <xref target="RFC7951"/> is:</t>
        <t><tt>
{
  "ietf-routing:routing": {
    "control-plane-protocols": {
      "ietf-ospf:ospf": {
        "address-family": "ipv4"
      }
    }
  }
}
</tt></t>
      </section>
    </section>
    <section anchor="formal-syntax">
      <name>Formal Syntax</name>
      <t>The grammar below uses ABNF as defined in <xref target="RFC7950"/>, Section 14.  The rules
<tt>identifier</tt>, <tt>node-identifier</tt>, <tt>quoted-string</tt>, <tt>WSP</tt>, <tt>SQUOTE</tt>, and
<tt>DIGIT</tt> are used as defined there.  Path segments and key names in
predicates use <tt>node-identifier</tt>, as in the <tt>instance-identifier</tt> type in
<xref target="RFC7950"/>, and <bcp14>MAY</bcp14> include a module prefix (for example,
<tt>/prefix:node</tt> or <tt>[prefix:key="value"]</tt>).  An <tt>unquoted-value</tt> is a numeric
or boolean key value (see <xref target="lists-in-instance-data"/>); all other key values
use <tt>quoted-string</tt>.</t>
      <sourcecode type="abnf"><![CDATA[
ypath = absolute-path

absolute-path = 1*("/" path-step)

path-step = node-identifier *predicate

predicate = schema-predicate
          / instance-predicate
          / filter-predicate
          / leaf-list-predicate

schema-predicate = "[" *WSP key-name *WSP "]"

instance-predicate = "[" *WSP key-predicate-expr *WSP "]"

filter-predicate = instance-predicate
                 ; syntactically identical; filter-specific
                 ; key-value restrictions apply only in
                 ; filter paths (see prose)

key-name = node-identifier

key-predicate-expr = key-name *WSP "=" *WSP key-value

key-value = quoted-string
          / unquoted-value
          / wildcard
          / regex-value
          / key-value-set

key-value-set = "{" *WSP set-member
              *(set-separator set-member) *WSP "}"

set-separator = *WSP "," *WSP

set-member = quoted-string / unquoted-value

boolean-value = %s"true" / %s"false"

numeric-value = ["-"] 1*DIGIT [ "." 1*DIGIT ]

unquoted-value = boolean-value / numeric-value

wildcard = "*"

regex-value = "r" SQUOTE *regex-char SQUOTE

regex-char = escaped-quote / escaped-backslash / unescaped-char

escaped-quote = "\" SQUOTE

escaped-backslash = "\" "\"

unescaped-char = %x00-26 / %x28-5B / %x5D-FF
                 ; any character except SQUOTE (0x27) and
                   backslash (0x5C)

leaf-list-key-value = quoted-string / unquoted-value

leaf-list-predicate = "[" *WSP "." *WSP "=" *WSP leaf-list-key-value
                      *WSP "]"
]]></sourcecode>
      <t>A <tt>filter-predicate</tt> is syntactically identical to an <tt>instance-predicate</tt>.
Filter-specific <tt>key-value</tt> forms (wildcards, regular expressions, and key
value sets) are defined in <xref target="wildcards"/>, <xref target="regular-expressions"/>, and
<xref target="key-value-sets"/>.  Literal key values remain valid in filter paths unless a
rule in those sections forbids them (for example, wildcard mixing in
<xref target="wildcards"/>).  A <tt>leaf-list-predicate</tt> uses <tt>leaf-list-key-value</tt>, which
permits only <tt>quoted-string</tt> or <tt>unquoted-value</tt>; filter extensions <bcp14>MUST NOT</bcp14>
be used in leaf-list predicates.</t>
    </section>
    <section anchor="conformance">
      <name>Conformance</name>
      <t>This section defines conformance requirements for specifications and
implementations that use ypath.</t>
      <section anchor="producers">
        <name>Producers</name>
        <t>A ypath producer (for example, a tool that emits schema paths or an interface
that returns the current context path) <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>generate paths that conform to the grammar in <xref target="formal-syntax"/>;</t>
          </li>
          <li>
            <t>use a leading <tt>/</tt> on every path;</t>
          </li>
          <li>
            <t>include a module name on the first path segment unless a specification
defines a default module for the context; and</t>
          </li>
          <li>
            <t>use schema predicates for schema paths and value predicates for instance
paths.</t>
          </li>
        </ul>
        <t>A producer generating filter paths <bcp14>MUST</bcp14> use <tt>*</tt> only as specified in
<xref target="wildcards"/>, regular expressions only as specified in
<xref target="regular-expressions"/>, and key value sets only as specified in
<xref target="key-value-sets"/>.</t>
      </section>
      <section anchor="consumers">
        <name>Consumers</name>
        <t>A ypath consumer (for example, a management API or path parser) <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>reject paths that do not conform to the grammar in <xref target="formal-syntax"/>;</t>
          </li>
          <li>
            <t>resolve module inheritance from left to right along the path; and</t>
          </li>
          <li>
            <t>apply module name changes at augment boundaries.</t>
          </li>
        </ul>
        <t>A consumer that does not support filter paths <bcp14>MUST</bcp14> reject paths containing the
wildcard <tt>*</tt>, a <tt>regex-value</tt>, or a <tt>key-value-set</tt> in key predicates.</t>
      </section>
      <section anchor="path-enumeration">
        <name>Path Enumeration</name>
        <t>An implementation that walks a YANG schema and returns ypaths <bcp14>MUST</bcp14> return
schema paths with list key names in bracket pairs and <bcp14>MUST NOT</bcp14> return paths
that address list keys as child node segments.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides non-normative examples of ypath usage.</t>
      <section anchor="referencing-yang-paths-in-netconf-filters">
        <name>Referencing YANG Paths in NETCONF Filters</name>
        <t>NETCONF subtree filters <xref target="RFC6241"/> select data by structure rather than by a
single path string.  A ypath can nonetheless identify the subtree root that a
filter targets.  For example, to retrieve all interfaces, a client might use
the filter path:</t>
        <t><tt>
/ietf-interfaces:interfaces[name="*"]
</tt></t>
        <t>The enclosing specification or implementation maps this ypath to the
appropriate NETCONF filter payload.</t>
      </section>
      <section anchor="filter-paths-with-regular-expressions">
        <name>Filter Paths with Regular Expressions</name>
        <t>A filter path can use a regular expression in a key predicate to match a
subset of list entries.  For example, to retrieve the <tt>description</tt> leaf for
all interfaces whose name starts with <tt>a</tt> or <tt>A</tt>:</t>
        <t><tt>
/ietf-interfaces:interfaces/interface[name=r'^[aA].*']/description
</tt></t>
        <t>An implementation evaluates the regular expression against each candidate list
key value and includes matching entries in the result set.</t>
      </section>
      <section anchor="filter-paths-with-key-value-sets">
        <name>Filter Paths with Key Value Sets</name>
        <t>A filter path can use a key value set to match multiple list entries with
explicit key values.  For example, to retrieve the <tt>description</tt> leaf for
interfaces <tt>ethernet1</tt> and <tt>ethernet3</tt>:</t>
        <t><tt>
/ietf-interfaces:interfaces/interface[name={"ethernet1", "ethernet3"}]/description
</tt></t>
        <t>An implementation includes each list entry whose key value equals any member
of the set.</t>
      </section>
      <section anchor="referencing-yang-paths-in-netconf-rpc-error-messages">
        <name>Referencing YANG Paths in NETCONF rpc-error Messages</name>
        <t>NETCONF <tt>rpc-error</tt> replies include an <tt>error-path</tt> element <xref target="RFC6241"/> that
identifies the node associated with the error.  An implementation may
populate <tt>error-path</tt> using ypath instance syntax.  For example:</t>
        <t><tt>
/ietf-interfaces:interfaces[name="eth0"]/mtu
</tt></t>
      </section>
      <section anchor="checking-existence">
        <name>Checking Existence</name>
        <t>An implementation can test whether a node exists in a datastore by resolving an
instance path.  For example, the path:</t>
        <t><tt>
/ietf-interfaces:interfaces[name="eth0"]
</tt></t>
        <t>identifies a specific list entry.  If the path resolves to an existing node,
the entry is present; if resolution fails, the entry is absent.  The mechanism
by which resolution is performed is defined by the enclosing API or protocol.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section discusses security considerations for implementations and
specifications that use ypath strings.  Ypath itself is a path syntax and does
not define authentication, authorization, or transport security; those
properties depend on the enclosing protocol or API.</t>
      <section anchor="path-parsing-and-ambiguity">
        <name>Path Parsing and Ambiguity</name>
        <t>Implementations that parse ypath strings <bcp14>MUST</bcp14> treat parsing as security
sensitive when the resulting path is used to access or modify managed data.
Ambiguous, malformed, or unexpectedly complex paths could cause an
implementation to resolve a different node than the operator or application
intended.  Specifications that use ypath <bcp14>SHOULD</bcp14> define error handling for
invalid paths and <bcp14>SHOULD NOT</bcp14> silently accept ambiguous forms (for example,
inconsistent module prefix usage that could identify more than one schema
node).</t>
      </section>
      <section anchor="wildcards-and-pattern-matching">
        <name>Wildcards and Pattern Matching</name>
        <t>Filter paths that use wildcards, regular expressions, or key value sets in key
predicates can match large sets of instance data.  An implementation that
expands such a path into concrete instance paths or data retrieval operations
<bcp14>MUST</bcp14> consider the cost of expansion and <bcp14>SHOULD</bcp14> enforce limits on the number of
matched nodes.  Implementations <bcp14>SHOULD</bcp14> enforce a reasonable upper bound on the
number of members in a key value set.</t>
        <t>Regular expression evaluation can be subject to excessive resource consumption
(including regular expression denial of service) if arbitrary patterns are
accepted from untrusted input.  Implementations <bcp14>SHOULD</bcp14> enforce limits on
evaluation time and <bcp14>SHOULD</bcp14> reject patterns that are not valid POSIX ERE
expressions.  Specifications that expose regular expression filter paths to
untrusted clients <bcp14>SHOULD</bcp14> document these limits.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>Path enumeration (for example, listing all valid ypaths for a schema or
datastore) can reveal the structure of deployed models and, for instance paths,
the values of list keys.  Interfaces that expose path lists <bcp14>SHOULD</bcp14> apply the
same access controls as the underlying data access mechanism so that a client
cannot use path enumeration to discover information it is not authorized to
retrieve directly.</t>
      </section>
      <section anchor="use-in-authorization-policies">
        <name>Use in Authorization Policies</name>
        <t>If ypaths are used to express authorization rules (for example, permitting
access only to a given subtree), care is required to ensure that equivalent
paths using different but valid module prefix forms receive consistent
treatment.  Authorization systems <bcp14>SHOULD</bcp14> define a canonical comparison rule or
<bcp14>SHOULD</bcp14> normalize paths before evaluation.</t>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <t>Instance paths embed key values that may identify subscribers, endpoints, or
other privacy-sensitive entities.  Logs, error messages, and telemetry that
include ypath strings <bcp14>SHOULD</bcp14> be protected commensurate with the sensitivity of
the referenced data.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.  Ypath is a string syntax for identifying
YANG schema and instance locations.  It does not define a URI scheme, XML
namespace, YANG module, media type, or other protocol element requiring IANA
registration.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC9535">
          <front>
            <title>JSONPath: Query Expressions for JSON</title>
            <author fullname="S. Gössner" initials="S." role="editor" surname="Gössner"/>
            <author fullname="G. Normington" initials="G." role="editor" surname="Normington"/>
            <author fullname="C. Bormann" initials="C." role="editor" surname="Bormann"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>JSONPath defines a string syntax for selecting and extracting JSON (RFC 8259) values from within a given JSON value.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9535"/>
          <seriesInfo name="DOI" value="10.17487/RFC9535"/>
        </reference>
        <reference anchor="XPATH" target="https://www.w3.org/TR/1999/REC-xpath-19991116/">
          <front>
            <title>XML Path Language (XPath) Version 1.0</title>
            <author initials="" surname="W3C" fullname="W3C">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1016?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank the Network Modeling (NETMOD) working
group for its discussion of YANG path formats and Robert Wilton for their
early review.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
CqhMVtOpdle5uZ6g4frfLm0Fd1KDAAA=

-->

</rfc>
