<?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.30 (Ruby 3.4.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-sdftype-link-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="sdfType for Links">An sdfType for Links</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdftype-link-00"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2025" month="June" day="09"/>
    <area>Applications and Real-Time</area>
    <workgroup>ASDF WG</workgroup>
    <keyword>IoT</keyword>
    <keyword>Link</keyword>
    <keyword>Web Linking</keyword>
    <abstract>
      <?line 45?>

<t>This document defines and registers an sdfType "link" for the
Semantic Definition Format (SDF) for Data and Interactions of Things
(draft-ietf-asdf-sdf).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-asdf-sdftype-link/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        A Semantic Definition Format for Data and Interactions of Things Working Group mailing list (<eref target="mailto:asdf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/asdf/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/asdf/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/sdftype-link"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format for Data and Interactions of Things
(SDF, <xref target="I-D.ietf-asdf-sdf"/>) is a format for domain experts to use in the creation
and maintenance of data and interaction models in the Internet of
Things.</t>
      <t>A common data type that occurs in the modeling of IoT devices is the
<em>link</em>.
<xref target="RFC8288"/> defines the concept of Web Linking, which, apart from the
target URI that any link will contain, can provide additional parameters, such
as the "link relation type" that explains the relationship expressed
by the link, as well as "target attributes" that provide additional
information about the target of the link (without a need to
"dereference", i.e., follow, the link).</t>
      <t>This document defines and registers an sdfType "link" for the Semantic
Definition Format.
This type models an abstract "serialization" <xref target="RFC8288"/> of a link, in a
way that is compatible with the way SDF maps information models to its
data modeling language.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The definitions of <xref target="RFC6690"/>, <xref target="RFC8288"/>, and <xref target="I-D.ietf-asdf-sdf"/> apply.</t>
        <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 <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="the-sdftype-link">
      <name>The sdfType "link"</name>
      <t>The sdfType "link" is intended to be used with the SDF "type" of "object".
The members of that object are strings that are named the same as the
link parameter (attribute) names.
The special parameter name "href" is used to express the link target.
(Parameter names specific to the Constrained RESTful Environment
(CoRE) are also discussed in <xref target="RFC9423"/>.)</t>
      <t>Note that attribute names and relation type names are case-insensitive
in <xref target="RFC8288"/>.
Strings that are case-insensitive in <xref target="RFC8288"/> <bcp14>MUST</bcp14> be in their
lowercase form when used in this specification.</t>
      <t>An example for the instance of a link is provided in <xref section="5" sectionFormat="of" target="RFC6690"/>:</t>
      <sourcecode type="link-format"><![CDATA[
   </sensors/temp>;rt="temperature-c";if="sensor",
]]></sourcecode>
      <t>To hold a link like this, we could describe an SDF affordance that is
specific on the target attributes above, but does not contain
instance-specific (run-time) information on the actual URI that points
to the link target.
An sdfProperty for that could look like:</t>
      <sourcecode type="sdf"><![CDATA[
{
 "sdfProperty": {
  "temp-c-link": {
   "type": "object",
   "sdfType": "link",
   "properties": {
     "href": { "type": "string"},
     "rt": { "type": "string", "const": "temperature-c"},
     "if": { "type": "string", "const": "sensor"}
   }
  }
 }
}
]]></sourcecode>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t>Links play an important role in SDF modeling both during definition
time (for adding information to a model, such as in <tt>sdfRef</tt>) and
during run time (for making links to instances into a subject of data
and interaction modeling).
The present document is an early attempt at addressing the run-time
usage of links, in particular links that fit the Web Linking <xref target="RFC8288"/>
abstractions.
A related draft <xref target="I-D.laari-asdf-relations"/> addresses definition-time links, but does
seem to touch modeling run-time use of links as well (e.g., by
discussing "writable" link relations).</t>
      <t>Not all links used in ecosystems are based on URIs.
E.g., OMA has "object links", which are basically pairs of numbers (object/instance).
These ecosystem links may have some structure that should be modeled
in the SDF model (e.g., where the object id part of a link always has
to have a specific value).
This structure can be mapped into URI strings using some convention,
e.g., an OMA object link could be <tt>oma-object:3303:0</tt> (where
<tt>oma-object</tt> is placeholder for a URI scheme to be defined).
However, burying structural components of the ecosystem-specific link
in a string syntax makes it hard to access and control those
components from the model.</t>
      <t>TODO: Examples are needed to show how the OCF collection pattern is
addressed by the current specification.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC8288"/> apply in a general way,
although modeling a link as a datatype does not incur all of the
security considerations that will apply to actually interchanging
these links.</t>
      <t>(TODO)</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>// RFC Ed.: please replace RFC XXXX with this RFC number and remove this note.</t>
      <t>IANA is requested to register the sdfType "link" in the "sdfType Values" sub-registry in
the "SDF Parameters" registry, with the following completion for the
registration template:</t>
      <table anchor="sdftype-r">
        <name>Registration for sdfType "link"</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Description</th>
            <th align="left">type</th>
            <th align="left">JSON Representation</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">link</td>
            <td align="left">A Web Link <xref target="RFC8288"/></td>
            <td align="left">object</td>
            <td align="left">object members for link attributes</td>
            <td align="left">RFCXXXX</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-asdf-sdf">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>KTC Control AB</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="17" month="March" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is concerned with Things, namely
   physical objects that are available for interaction over a network.
   SDF is a format for domain experts to use in the creation and
   maintenance of data and interaction models that describe Things.  An
   SDF specification describes definitions of SDF Objects/SDF Things and
   their associated interactions (Events, Actions, Properties), as well
   as the Data types for the information exchanged in those
   interactions.  Tools convert this format to database formats and
   other serializations as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-23"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <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 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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="I-D.laari-asdf-relations">
          <front>
            <title>Extended relation information for Semantic Definition Format (SDF)</title>
            <author fullname="Petri Laari" initials="P." surname="Laari">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="January" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) base specification defines set
   of basic information elements that can be used for describing a large
   share of the existing data models from different ecosystems.  While
   these data models are typically very simple, such as basic sensors
   definitions, more complex models, and in particular bigger systems,
   benefit from ability to describe additional information on how
   different definitions relate to each other.  This document specifies
   an extension to SDF for describing complex relationships in class
   level descriptions.  This specification does not consider instance-
   specific information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-laari-asdf-relations-04"/>
        </reference>
        <reference anchor="RFC9423">
          <front>
            <title>Constrained RESTful Environments (CoRE) Target Attributes Registry</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="April" year="2024"/>
            <abstract>
              <t>The Constrained RESTful Environments (CoRE) specifications apply web technologies to constrained environments. One such important technology is Web Linking (RFC 8288), which CoRE specifications use as the basis for a number of discovery protocols, such as the Link Format (RFC 6690) in the Constrained Application Protocol's (CoAP's) resource discovery process (Section 7.2 of RFC 7252) and the Resource Directory (RD) (RFC 9176).</t>
              <t>Web Links can have target attributes, the names of which are not generally coordinated by the Web Linking specification (Section 2.2 of RFC 8288). This document introduces an IANA registry for coordinating names of target attributes when used in CoRE. It updates the "RD Parameters" IANA registry created by RFC 9176 to coordinate with this registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9423"/>
          <seriesInfo name="DOI" value="10.17487/RFC9423"/>
        </reference>
      </references>
    </references>
    <?line 192?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Discussions in the OneDM liaison organization shaped this proposal.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
FGrGfwExRXkRwRcAAA==

-->

</rfc>
