<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-linkgenetic-linkid-uri-00"
     category="std"
     submissionType="IETF"
     version="3">
  <front>
    <title abbrev="LinkID URI">The LinkID URI Scheme and Resolution Model</title>
    <seriesInfo name="Internet-Draft" value="draft-linkgenetic-linkid-uri-00"/>
    <author initials="C." surname="Nyffenegger" fullname="Christian Nyffenegger">
      <organization>Link Genetic GmbH</organization>
      <address>
        <postal><country>CH</country></postal>
        <email>info@linkgenetic.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="22"/>
    <area>ART</area>
    <keyword>URI</keyword>
    <keyword>Persistent Identifier</keyword>
    <keyword>Web</keyword>
    <keyword>IANA</keyword>
    <keyword>LinkID</keyword>
    <abstract>
      <t>This document specifies the "linkid" URI scheme and a resolution model for persistent,
      location-independent identifiers. A LinkID identifies a resource independently of its
      current network location. Resolution maps the persistent identifier to a current actionable
      URI using one or more resolvers. The scheme is intended for Web, document, archival,
      scientific, government, enterprise, and machine-to-machine references where locations may
      change while reference identity must remain stable.</t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="include">
      <name>Introduction</name>
      <t>Hyperlinks commonly couple resource identity to a current network location. When domains,
      paths, repositories, content-management systems, or hosting infrastructure change, references
      may fail even though the referenced resource still exists.</t>
      <t>LinkID separates persistent identity from mutable location. The core invariant is that
      identity is persistent, location is mutable, and resolution is the controlled mapping between
      the two.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
      "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in BCP 14 when, and only when, they
      appear in all capitals, as shown here.</t>
      <dl>
        <dt>LinkID</dt><dd>A persistent identifier expressed using the "linkid" URI scheme.</dd>
        <dt>Resolver</dt><dd>A service or software component that maps a LinkID to an authorized resolution result.</dd>
        <dt>Actionable URI</dt><dd>A URI returned by resolution that a client can use to access or interact with the identified resource.</dd>
        <dt>Authoritative Resolution Record</dt><dd>The authorized current mapping and associated metadata for a LinkID.</dd>
      </dl>
    </section>

    <section numbered="true" toc="include">
      <name>URI Scheme Syntax</name>
      <t>The scheme name is "linkid". Producers MUST emit the scheme name in lowercase.
      The scheme-specific identifier is case-sensitive unless an applicable namespace profile
      explicitly specifies otherwise.</t>
      <sourcecode type="abnf"><![CDATA[
linkid-URI = "linkid:" linkid-id [ "?" query ] [ "#" fragment ]
linkid-id  = linkid-seg *( "/" linkid-seg )
linkid-seg = 1*( unreserved / pct-encoded / sub-delims / ":" )
]]></sourcecode>
      <t>The productions "unreserved", "pct-encoded", "sub-delims", "query", and "fragment"
      are defined by RFC 3986.</t>
      <t>Generic clients MUST treat the identifier as opaque unless a recognized LinkID namespace
      profile defines additional semantics.</t>
      <section numbered="true">
        <name>Examples</name>
        <sourcecode><![CDATA[
linkid:00c538ea-846b-47a6-a3d4-70a9ebd29d7c
linkid:doc:acme/handbook/2026/section-3
linkid:doi:10.1234/example#methods
linkid:media:images/product-42?v=2
linkid:archive:ch.admin/finrep/2026/Q4
]]></sourcecode>
      </section>
    </section>

    <section numbered="true" toc="include">
      <name>Identifier Semantics</name>
      <t>A LinkID identifies a resource; it does not directly encode the current network location
      of that resource. Once assigned, a LinkID MUST NOT be reassigned to an unrelated resource.
      The actionable URI associated with a LinkID MAY change without changing the LinkID.</t>
      <t>Successful resolution establishes the currently authorized mapping. It does not establish
      that destination content is safe, correct, trustworthy, or unchanged.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Resolution Model</name>
      <t>A client resolves a LinkID by parsing and validating the URI, selecting a trusted resolver,
      requesting the authorized resolution record, validating the result, applying local policy,
      and returning or navigating to the actionable URI.</t>
      <t>Resolver selection is intentionally separate from identifier syntax. Version 1 of this
      specification permits explicit local configuration, enterprise or application configuration,
      and implementation-defined default resolvers. A future specification may define interoperable
      resolver discovery. A LinkID MUST NOT depend semantically on a single resolver operator.</t>
      <t>Public Internet resolvers MUST provide authenticated HTTPS transport. HTTP redirection MAY
      be used for interactive Web compatibility, but LinkID resolution MUST NOT be defined solely
      as an HTTP redirect service.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Resolution States</name>
      <t>Resolvers SHOULD distinguish at least the following states: active, unknown, inactive,
      deprecated, revoked, tombstoned, temporarily-unavailable, policy-denied, and integrity-failure.</t>
      <t>An unknown LinkID MUST NOT be redirected to unrelated content. A revoked or tombstoned
      identifier MUST NOT be reassigned to an unrelated resource.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Use Cases</name>
      <t>The following use cases illustrate general utility of the scheme; they do not restrict its use.</t>
      <ul>
        <li>Web and domain migration, where a resource moves while references remain unchanged.</li>
        <li>PDF, Office, and other long-lived documents containing persistent references.</li>
        <li>Enterprise knowledge systems, including content-management, document-management, and collaboration platforms.</li>
        <li>Government, legal, policy, and public-record references that must survive infrastructure changes.</li>
        <li>Academic and scientific references to publications, datasets, and research outputs.</li>
        <li>Archives and digital preservation, including transfer of custody between organizations.</li>
        <li>Machine-to-machine and API references where software requires a stable identifier independent of endpoint location.</li>
        <li>Resource ownership or stewardship transfer between organizations without changing the persistent reference.</li>
        <li>Tombstoning, where a resource no longer exists but its identifier and historical identity are preserved.</li>
        <li>Content-integrity and content-drift workflows in which reachability and content continuity are evaluated separately.</li>
      </ul>
    </section>

    <section numbered="true" toc="include">
      <name>Interoperability</name>
      <t>LinkID is designed to coexist with HTTP, HTTPS, DNS, CDNs, archives, DOI, Handle, ARK,
      document formats, content-management systems, APIs, databases, QR codes, browser extensions,
      and native protocol handlers.</t>
      <t>An HTTPS resolver representation is a transport-compatible representation of a LinkID and
      MUST NOT be confused with either the persistent identifier itself or the final actionable URI.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Caching and Failure Handling</name>
      <t>Resolution responses MAY be cached. Authoritative responses SHOULD provide an explicit
      validity period or cache policy. Cached data MUST NOT be treated as authoritative after its
      validity period expires.</t>
      <t>Clients and resolvers MUST detect and bound resolution, delegation, and redirect loops.
      Resolution failures MUST fail safely. A client MUST NOT guess a destination for an unknown
      identifier.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Security Considerations</name>
      <t>LinkID resolution introduces an indirection layer. Unauthorized modification of a mapping
      can redirect all references using an affected LinkID. Authoritative update interfaces MUST
      therefore be strongly authenticated and access controlled.</t>
      <t>Public resolvers MUST protect against resolver impersonation, mapping hijacking, unrestricted
      open redirects, phishing, malicious destination schemes, denial of service, replay of stale
      records, identifier enumeration, and resolution loops.</t>
      <t>Resolvers that fetch or inspect destinations MUST defend against server-side request forgery,
      including requests to loopback, link-local, cloud metadata, and policy-protected internal
      addresses, and MUST account for redirects and DNS rebinding.</t>
      <t>High-assurance deployments SHOULD support cryptographic integrity protection for resolution
      records. This version does not mandate a particular signature algorithm.</t>
    </section>

    <section numbered="true" toc="include">
      <name>Privacy Considerations</name>
      <t>Resolution requests can reveal user interest in particular resources. Resolver operators
      SHOULD minimize collection and retention of personal data. Public resolution SHOULD NOT require
      user authentication unless required by the resource or applicable policy.</t>
      <t>LinkID values SHOULD NOT contain credentials, secrets, access tokens, or directly identifying
      personal information. Resolvers SHOULD avoid unnecessary forwarding of client information.</t>
    </section>

    <section numbered="true" toc="include">
      <name>IANA Considerations</name>
      <t>The "linkid" URI scheme is currently registered in the IANA Uniform Resource Identifier
      (URI) Schemes registry with Provisional status. This document specifies the syntax, semantics,
      resolution model, interoperability, security, and privacy considerations for that existing
      registration.</t>
      <t>Subject to the applicable review and approval process, this document requests that IANA
      update the existing "linkid" registration to reference this specification and change its
      status from Provisional to Permanent.</t>
      <dl>
        <dt>Scheme name</dt><dd>linkid</dd>
        <dt>Status</dt><dd>Permanent (requested)</dd>
        <dt>Applications/protocols</dt><dd>Persistent identification and resolution for Web, document, archival, scientific, government, enterprise, and machine-to-machine resources.</dd>
        <dt>Contact</dt><dd>Link Genetic GmbH &lt;info@linkgenetic.com&gt;</dd>
        <dt>Change controller</dt><dd>Link Genetic GmbH, on behalf of the LinkID specification maintainers.</dd>
        <dt>Reference</dt><dd>This document.</dd>
      </dl>
    </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"/><date year="1997" month="March"/></front>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="BCP" value="14"/>
      </reference>
      <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
        <front><title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author initials="T." surname="Berners-Lee"/><author initials="R." surname="Fielding"/>
          <author initials="L." surname="Masinter"/><date year="2005" month="January"/></front>
        <seriesInfo name="RFC" value="3986"/>
      </reference>
      <reference anchor="RFC7595" target="https://www.rfc-editor.org/info/rfc7595">
        <front><title>Guidelines and Registration Procedures for URI Schemes</title>
          <author initials="D." surname="Thaler"/><author initials="T." surname="Hansen"/>
          <author initials="T." surname="Hardie"/><date year="2015" month="June"/></front>
        <seriesInfo name="RFC" value="7595"/>
        <seriesInfo name="BCP" value="35"/>
      </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"/><date year="2017" month="May"/></front>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="BCP" value="14"/>
      </reference>
    </references>
  </back>
</rfc>
