<?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.20 (Ruby 3.3.3) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-polli-restapi-ld-keywords-05" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title>REST API Linked Data Keywords</title>
    <seriesInfo name="Internet-Draft" value="draft-polli-restapi-ld-keywords-05"/>
    <author initials="R." surname="Polli" fullname="Roberto Polli">
      <organization>Digital Transformation Department, Italian Government</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>robipolli@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="05"/>
    <area>General</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 95?>

<t>This document defines two
keywords to provide semantic information in
OpenAPI Specification and JSON Schema documents,
and support contract-first semantic schema design.</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-polli-restapi-ld-keywords/"/>.
      </t>
      <t>
         information can be found at <eref target="https://github.com/ioggstream/draft-polli-restapi-ld-keywords"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ioggstream/draft-polli-restapi-ld-keywords/issues"/>.</t>
    </note>
  </front>
  <middle>
    <?line 102?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>API providers usually specify semantic information in text or out-of-band documents;
at best, this information is described in prose into specific sections of interface definition documents (see <xref target="prosaic-semantics"/>).</t>
      <t>This is because API providers do not always value machine-readable semantics,
or because they have no knowledge of semantic technologies -
that are perceived as unnecessarily complex.</t>
      <t>A full-semantic approach (e.g. writing RDF oriented APIs) has not become widespread
because
transferring and processing the semantics on every message
significantly increases data transfer and computation requirements.</t>
      <t>Moreover the semantic landscape do not provide easy ways of defining / constraining
the syntax of an object:
tools like <xref target="SHACL"/> and <xref target="OWL"/> restrictions are considered
computationally intensive to process and complex to use
from web and mobile developers.</t>
      <t>This document provides a simple mechanism
to attach semantic information to REST APIs
that rely on different dialects of <xref target="JSONSCHEMA"/>,
thus supporting a contract-first schema design.</t>
      <t>For example, the OpenAPI Specifications (see <xref target="OAS"/>)
allow to describe REST APIs
interactions and capabilities using a machine-readable format
based on <xref target="JSON"/> or <xref target="YAML"/>.
OAS 3.0 is based on JSON Schema draft-4
while OAS 3.1 relies on the latest JSON Schema draft.</t>
      <section anchor="goals-and-design-choices">
        <name>Goals and Design Choices</name>
        <t>This document has the following goals:</t>
        <ul spacing="normal">
          <li>
            <t>describe in a single specification document backed by <xref target="JSONSCHEMA"/>
(e.g. an OpenAPI document)
both the syntax and semantics of JSON objects.
This information can be either be provided
editing the document by hand or via automated tools;</t>
          </li>
          <li>
            <t>easy for non-semantic experts and with reduced complexity;</t>
          </li>
          <li>
            <t>support for OAS 3.0 / JSON Schema Draft4;</t>
          </li>
        </ul>
        <t>while it is not intended to:</t>
        <ul spacing="normal">
          <li>
            <t>integrate the syntax defined using <xref target="JSONSCHEMA"/>;</t>
          </li>
          <li>
            <t>infer semantic information where it is not provided;</t>
          </li>
          <li>
            <t>convert <xref target="JSONSCHEMA"/> documents to RDF Schema (see <xref target="RDFS"/>) or XML Schema.</t>
          </li>
        </ul>
        <t>Thus, the following design choices have been made:</t>
        <ul spacing="normal">
          <li>
            <t>the semantic context of a JSON object will be described
using <xref target="JSON-LD-11"/> and its keywords;</t>
          </li>
          <li>
            <t>property names are limited to characters that can be used in variable
names (e.g. excluding <tt>:</tt> and <tt>.</tt>)
to avoid interoperability issues with code-generation tools;</t>
          </li>
          <li>
            <t>privilege a deterministic behavior over automation and composability;</t>
          </li>
          <li>
            <t>interoperable with the mechanisms described in Section 6.1 of <xref target="JSON-LD-11"/>
for conveying semantic context in REST APIs.</t>
          </li>
        </ul>
      </section>
      <section anchor="prosaic-semantics">
        <name>Prosaic semantics</name>
        <t><xref target="JSONSCHEMA"/> allows to define the structure of the exchanged data using specific keywords.
Properties' semantics can be expressed in prose via the <tt>description</tt> keyword.</t>
        <figure anchor="ex-semantic-prose">
          <name>Example of JSON Schema model that provides semantic prose.</name>
          <sourcecode type="yaml"><![CDATA[
Person:
  description: A Person.
  type: object
  properties:
    givenName:
      description: The given name of a Person.
      type: string
    familyName:
      description: The family name, or surname, of a Person.
      type: string
  example:
    givenName: John
    familyName: Doe
]]></sourcecode>
        </figure>
        <t><xref target="JSON-LD-11"/> defines a way to interpret a JSON object as JSON-LD:
the example schema instance (a JSON document conformant to a given schema)
provided in the above "Person" schema can be integrated with
semantic information adding the <tt>@type</tt> and <tt>@context</tt> properties.</t>
        <figure anchor="ex-json-ld">
          <name>Example of a schema instance transformed in a JSON-LD object.</name>
          <sourcecode type="json"><![CDATA[
{
  "@context": {
    "@vocab": "https://w3.org/ns/person#"
  },
  "@type": "Person",
  "givenName": "John",
  "familyName": "Doe"
}
]]></sourcecode>
        </figure>
        <t>This document shows how
to integrate into a JSON Schema document
information that can be used
to add the <tt>@context</tt> and <tt>@type</tt>
properties to the associated JSON Schema instances.</t>
      </section>
      <section anchor="notational-conventions">
        <name>Notational Conventions</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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?>
        </t>
        <t>The terms  "content", "content negotiation", "resource",
and "user agent"
in this document are to be interpreted as in <xref target="HTTP"/>.</t>
        <t>The terms "fragment" and "fragment identifier"
in this document are to be interpreted as in <xref target="URI"/>.</t>
        <t>The terms "node", "alias node", "anchor" and "named anchor"
in this document are to be intepreded as in <xref target="YAML"/>.</t>
        <t>The terms "schema" and "schema instance"
in this document are to be intepreded as in <xref target="JSONSCHEMA"/>
draft-4 and higher.</t>
        <t>The terms "JSON object", "JSON document", "member", "member name"
in this document are to be intepreded as in <xref target="JSON"/>.
The term "property" - when referred to a JSON document
such as a schema instance -
is a synonym of "member name",
and the term "property value" is a synonym of "member value".</t>
        <t>The terms "@context", "@type", "@id", "@value" and "@language" are to be interpreted as JSON-LD keywords in <xref target="JSON-LD-11"/>,
whereas the term "context" is to be interpreted as a JSON-LD Context
defined in the same document.</t>
        <t>Since JSON-LD is a serialization format for RDF,
the document can use JSON-LD and RDF interchangeably
when it refers to the semantic interpretation of a resource.</t>
        <t>The JSON Schema keywords defined in <xref target="keywords"/>
are collectively named "semantic keywords".</t>
      </section>
    </section>
    <section anchor="keywords">
      <name>JSON Schema keywords</name>
      <t>A schema (see <xref target="JSONSCHEMA"/>) MAY
use the following JSON Schema keywords,
collectively named "semantic keywords"
to provide semantic information
for all related schema instances.</t>
      <dl>
        <dt>x-jsonld-type:</dt>
        <dd>
          <t>This keyword conveys an RDF type (see <xref target="RDF"/>)
 for the JSON schema instances described by the associate
 schema. It is defined in <xref target="keywords-type"/>.</t>
        </dd>
        <dt>x-jsonld-context:</dt>
        <dd>
          <t>This keyword conveys a JSON-LD context
 for the JSON schema instances described by the associate
 schema. It is defined in <xref target="keywords-context"/>.</t>
        </dd>
      </dl>
      <t>This specification MAY be used to:</t>
      <ul spacing="normal">
        <li>
          <t>populate the <tt>@type</tt> property along the schema instance objects;</t>
        </li>
        <li>
          <t>compose an "instance context" to populate the <tt>@context</tt>
property at the root of the schema instance.</t>
        </li>
      </ul>
      <t>The schema MUST be of type "object".
This is because <xref target="JSON-LD-11"/> does not define a way
to provide semantic information on JSON values that
are not JSON objects.</t>
      <t>The schema MUST NOT describe a JSON-LD
(e.g. of <tt>application/ld+json</tt> media type)
or conflicts will arise, such as
which is the correct <tt>@context</tt> or <tt>@type</tt>
(see <xref target="sec-conflicts"/>).</t>
      <t>Both JSON Schema keywords defined in this document
might contain URI references.
Those references MUST NOT be dereferenced automatically,
since there is no guarantee that they point to actual
locations.
Moreover they could reference unsecured resources
(e.g. using the "http://" URI scheme <xref target="HTTP"/>).</t>
      <t><xref target="ex"/> provides various examples of integrating
semantic information in schema instances.</t>
      <section anchor="keywords-type">
        <name>The x-jsonld-type JSON Schema keyword</name>
        <t>The x-jsonld-type value
provides information on the RDF type of the associate
schema instances.</t>
        <t>This value MUST be valid according to the JSON-LD <tt>@type</tt> keyword
as described in <eref target="https://www.w3.org/TR/json-ld11/#specifying-the-type">Section 3.5 of JSON-LD-11</eref>;
it is thus related to the information provided via the x-jsonld-context keyword (see <xref target="keywords-context"/>).</t>
        <t>It SHOULD NOT reference an <eref target="https://www.w3.org/TR/rdf11-concepts/#section-Datatypes">RDF Datatype</eref>
because it is not intended to provide
syntax information, but only semantic information.</t>
      </section>
      <section anchor="keywords-context">
        <name>The x-jsonld-context JSON Schema keyword</name>
        <t>The x-jsonld-context value
provides the information required to interpret the associated
schema instances as JSON-LD
according to the specification in <eref target="https://www.w3.org/TR/json-ld11/#interpreting-json-as-json-ld">Section 6.1 of JSON-LD-11</eref>.</t>
        <t>Its value MUST be a valid JSON-LD Context
(see
<eref target="https://www.w3.org/TR/json-ld11/#context-definitions">Section 9.15 of JSON-LD-11</eref>
).</t>
        <t>When context composition (see <xref target="int-composability"/>) is needed,
the context SHOULD be provided in the form of a JSON object;
in fact, if the x-jsonld-context is a URL string,
that URL needs to be dereferenced and processed
to generate the instance context.</t>
        <figure anchor="ex-url-contexts">
          <name>Composing URL contexts requires dereferencing them.</name>
          <sourcecode type="yaml"><![CDATA[
Place:
  type: object
  x-jsonld-context:
    "@vocab": "https://my.context/location.jsonld"
  properties:
    country: {type: string}

Person:
  x-jsonld-context: https://my.context/person.jsonld
  type: object
  properties:
    birthplace:
      $ref: "#/Place"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="interpreting">
        <name>Interpreting schema instances</name>
        <t>This section describes an OPTIONAL workflow
to interpret a schema instance as JSON-LD.</t>
        <ol spacing="normal" type="1"><li>
            <t>ensure that the initial schema instance does not contain
any <tt>@context</tt> or <tt>@type</tt> property.
For further information see <xref target="sec-conflicts"/>;</t>
          </li>
          <li>
            <t>add the <tt>@context</tt> property with the value of x-jsonld-context.
This will be the initial "instance context": the only one that will be mangled;</t>
          </li>
          <li>
            <t>add the <tt>@type</tt> property with the value of x-jsonld-type;</t>
          </li>
          <li>
            <t>iterate on each instance property like the following:  </t>
            <ul spacing="normal">
              <li>
                <t>identify the sub-schema associated to the property
(e.g. resolving $refs)
and check the presence of semantic keywords;</t>
              </li>
              <li>
                <t>for the x-jsonld-type, add the <tt>@type</tt> property to the sub-instance;</t>
              </li>
              <li>
                <t>for the x-jsonld-context, integrate its information in the instance context
when they are not already present;</t>
              </li>
              <li>
                <t>iterate this process in case of nested entries.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>The specific algorithm
for integrating the values of x-jsonld-context
present in sub-schemas
into the instance context (see <xref target="keywords"/>)
is an implementation detail.</t>
      </section>
    </section>
    <section anchor="int">
      <name>Interoperability Considerations</name>
      <t>See the interoperability considerations for the media types
and specifications used, including <xref target="YAML-IANA"/>, <xref target="JSON"/>, <xref target="OAS"/>,
<xref target="JSONSCHEMA"/> and <xref target="JSON-LD-11"/>.</t>
      <t>Annotating a schema with semantic keywords
containing JSON-LD keywords
(e.g. <tt>@context</tt>, <tt>@type</tt> and <tt>@language</tt>)
may hinder its ability to be interpreted as a JSON-LD document
(e.g. using the <eref target="https://www.w3.org/2019/wot/json-schema#json-ld11-ctx">JSON-LD 1.1 context for the JSON Schema vocabulary</eref>);
this can be mitigated extending that context and specifying
that Linked Data keywords are JSON Literals.</t>
      <sourcecode type="json"><![CDATA[
{ "@context": {
    "x-jsonld-context: { "@type": "@json"},
    "x-jsonld-type: { "@type": "@json"}
  }
}
]]></sourcecode>
      <t>This is generally not a problem, since a generic
<xref target="JSONSCHEMA"/> document cannot be reliably interpreted
as JSON-LD using a single context: this is because the same
JSON member keys can have different meanings depending
on their JSON Schema position (see <eref target="https://www.w3.org/2019/wot/json-schema#interpreting-json-schema-as-json-ld-1-1">the notes in the  Interpreting JSON Schema as JSON-LD 1.1</eref> section of <xref target="JSON-SCHEMA-RDF"/>).</t>
      <section anchor="int-syntax-oos">
        <name>Syntax is out of scope</name>
        <t>This specification is not designed to restrict
the syntax of a JSON value nor to support a conversion
between JSON Schema and XMLSchema
(see <xref target="keywords-type"/>).</t>
      </section>
      <section anchor="int-expressivity">
        <name>Limited expressivity</name>
        <t>Not all RDF resources can be expressed as JSON documents
annotated with <tt>@context</tt> and <tt>@type</tt>:
this specification is limited by the possibilities
of <eref target="https://www.w3.org/TR/json-ld11/#interpreting-json-as-json-ld">Section 6.1 of JSON-LD-11</eref>.
On the other hand, since this approach
delegates almost all the processing to of JSON-LD,
as long as JSON-LD evolves
it will cover further use cases.</t>
      </section>
      <section anchor="int-no-jsonld">
        <name>Disjoint with JSON-LD</name>
        <t>This specification is not designed to pre-process
or mangle JSON-LD documents
(e.g. to add a missing <tt>@type</tt> to a JSON-LD document),
but only to support schemas that do not describe JSON-LD documents.</t>
        <t>Applications exchanging JSON-LD documents
need to explicitly populate <tt>@type</tt> and <tt>@context</tt>,
and use a proper media type
since Linked Data processing and interpretation
requires further checks.</t>
        <t>If these applications describe messages using <xref target="JSONSCHEMA"/> or <xref target="OAS"/>,
they need to
process them with a JSON-LD processor
and declare all required properties
in the schema - like in the example below.</t>
        <figure anchor="ex-jsonld-schema">
          <name>A JSON-Schema describing a JSON-LD document.</name>
          <sourcecode type="yaml"><![CDATA[
PersonLD:
  type: object
  required: [ "@context", "@type", "givenName", "familyName" ]
  properties:
    "@context":
      type: object
      enum:
      - "@vocab": "https://w3.org/ns/person#"
    "@type":
      type: string
      enum:
      - Person
    givenName:
      type: string
    familyName:
      type: string
]]></sourcecode>
        </figure>
      </section>
      <section anchor="int-composability">
        <name>Composability</name>
        <t>Limited composability can be achieved applying the process described
in <xref target="interpreting"/>.
Automatic composability is not an explicit goal of this specification
because of its complexity. One of the issue is that
the meaning of a JSON-LD keyword is affected by
its position. For example, the <tt>@type</tt> keyword:</t>
        <ul spacing="normal">
          <li>
            <t>in a node object, adds an <tt>rdf:type</tt> arc to the RDF graph
(it also has a few other effects on processing, e.g. by enabling type-scoped contexts);</t>
          </li>
          <li>
            <t>in a value object, specifies the datatype of the produced literal;</t>
          </li>
          <li>
            <t>in the context, and more precisely in a term definition,
specifies <eref target="https://www.w3.org/TR/json-ld11/#type-coercion">type coercion</eref>.
It only applies when the value of the term is a string.</t>
          </li>
        </ul>
        <t>These issues can be tackled in future versions of this specifications.</t>
        <t>Moreover, well-designed schemas do not usually have
more than 3 or 4 nested levels.
This means that, when needed, it is possible
to assemble and optimize an instance context (see <xref target="keywords"/>)
at design time and use it to valorize x-jsonld-context
(see <xref target="ex-redundant-context"/>).</t>
        <t>Once a context is assembled, the RDF data can be
generated using the algorithms described in <xref target="JSONLD-11-API"/>
for example through a library.</t>
        <sourcecode type="python"><![CDATA[
from pyld import jsonld
...
jsonld_text = jsonld.expand(schema_instance, context)
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec">
      <name>Security Considerations</name>
      <t>See the interoperability considerations for the media types
and specifications used, including <xref target="YAML-IANA"/>, <xref target="JSON"/>, <xref target="OAS"/>,
<xref target="JSONSCHEMA"/> and <xref target="JSON-LD-11"/>.</t>
      <section anchor="sec-integrity">
        <name>Integrity and Authenticity</name>
        <t>Adding a semantic context to a JSON document
alters its value and, in an implementation-dependent way,
can lead to reordering of fields.
This process can thus affect the processing of digitally signed content.</t>
      </section>
      <section anchor="sec-conflicts">
        <name>Conflicts</name>
        <t>If an OAS document includes the keywords defined in <xref target="keywords"/>
the provider explicitly states that the semantic of the schema instance:</t>
        <ul spacing="normal">
          <li>
            <t>is defined at contract level;</t>
          </li>
          <li>
            <t>is the same for every message;</t>
          </li>
          <li>
            <t>and is not conveyed nor specific for each message.</t>
          </li>
        </ul>
        <t>In this case, processing the semantic conveyed in a message
might have security implications.</t>
        <t>An application that relies on this specification
might want to define separate processing streams for JSON documents
and RDF graphs, even when RDF graphs are serialized as JSON-LD documents.
For example, it might want to raise an error
when an <tt>application/json</tt> resource contains unexpected properties
impacting on the application logic
like <tt>@type</tt> and <tt>@context</tt>.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>None</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="YAML" target="https://yaml.org/spec/1.2.2/">
          <front>
            <title>YAML Ain't Markup Language Version 1.2</title>
            <author initials="" surname="Oren Ben-Kiki">
              <organization/>
            </author>
            <author initials="" surname="Clark Evans">
              <organization/>
            </author>
            <author initials="" surname="Ingy dot Net">
              <organization/>
            </author>
            <author initials="" surname="Tina Müller">
              <organization/>
            </author>
            <author initials="" surname="Pantelis Antoniou">
              <organization/>
            </author>
            <author initials="" surname="Eemeli Aro">
              <organization/>
            </author>
            <author initials="" surname="Thomas Smith">
              <organization/>
            </author>
            <date year="2021" month="October" day="01"/>
          </front>
        </reference>
        <reference anchor="OAS">
          <front>
            <title>OpenAPI Specification 3.0.0</title>
            <author initials="" surname="Darrel Miller">
              <organization/>
            </author>
            <author initials="" surname="Jeremy Whitlock">
              <organization/>
            </author>
            <author initials="" surname="Marsh Gardiner">
              <organization/>
            </author>
            <author initials="" surname="Mike Ralphson">
              <organization/>
            </author>
            <author initials="" surname="Ron Ratovsky">
              <organization/>
            </author>
            <author initials="" surname="Uri Sarid">
              <organization/>
            </author>
            <date year="2017" month="July" day="26"/>
          </front>
        </reference>
        <reference anchor="JSON-LD-11" target="https://www.w3.org/TR/json-ld11/">
          <front>
            <title>JSON-LD 1.1</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSONSCHEMA" target="https://json-schema.org/specification.html">
          <front>
            <title>JSON Schema</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSON">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="URI">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RDF" target="https://www.w3.org/TR/rdf11/">
          <front>
            <title>RDF Concepts and Abstract Syntax</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RDFS" target="https://www.w3.org/TR/rdf-schema/">
          <front>
            <title>RDF Schema 1.1</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="YAML-IANA" target="https://www.iana.org/assignments/media-types/application/yaml">
          <front>
            <title>The application/yaml Media Type</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="I-D.ietf-jsonpath-base">
          <front>
            <title>JSONPath: Query expressions for JSON</title>
            <author fullname="Stefan Gössner" initials="S." surname="Gössner">
              <organization>Fachhochschule Dortmund</organization>
            </author>
            <author fullname="Glyn Normington" initials="G." surname="Normington">
         </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="24" month="September" year="2023"/>
            <abstract>
              <t>   JSONPath defines a string syntax for selecting and extracting JSON
   (RFC 8259) values from a JSON value.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-jsonpath-base-21"/>
        </reference>
        <reference anchor="JSON-POINTER">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </reference>
        <reference anchor="JSONLD-11-API" target="https://www.w3.org/TR/json-ld11-api/">
          <front>
            <title>JSON-LD 1.1 Processing Algorithms and API</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSON-SCHEMA-RDF" target="https://www.w3.org/2019/wot/json-schema/">
          <front>
            <title>JSON Schema in RDF</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SHACL" target="https://www.w3.org/TR/shacl/">
          <front>
            <title>Shapes Constraint Language (SHACL)</title>
            <author>
              <organization/>
            </author>
            <date year="2017" month="July" day="20"/>
          </front>
        </reference>
        <reference anchor="OWL" target="https://www.w3.org/TR/owl2-overview/">
          <front>
            <title>OWL 2 Web Ontology Language Document Overview</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="XS" target="https://www.w3.org/2001/XMLSchema">
          <front>
            <title>XML Schema</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 534?>

<section anchor="ex">
      <name>Examples</name>
      <section anchor="schema-with-semantic-information">
        <name>Schema with semantic information</name>
        <t>The following example shows a
Person JSON Schema with semantic information
provided by the x-jsonld-type and x-jsonld-context.
Type information is provided as a URI reference.</t>
        <figure anchor="ex-base">
          <name>A JSON Schema data model with semantic context and type.</name>
          <sourcecode type="example"><![CDATA[
Person:
  "x-jsonld-type": "https://schema.org/Person"
  "x-jsonld-context":
     "@vocab": "https://schema.org/"
     custom_id: null  # detach this property from the @vocab
     country:
       "@id": addressCountry
       "@language": en
  type: object
  required:
  - given_name
  - family_name
  properties:
    familyName: { type: string, maxLength: 255  }
    givenName:  { type: string, maxLength: 255  }
    country:    { type: string, maxLength: 3, minLength: 3 }
    custom_id:  { type: string, maxLength: 255  }
  example:
    familyName: "Doe"
    givenName: "John"
    country: "FRA"
    custom_id: "12345"
]]></sourcecode>
        </figure>
        <t>The example object is assembled as a JSON-LD object as follows.</t>
        <sourcecode type="json"><![CDATA[
{
  "@context": {
    "@vocab": "https://schema.org/",
    "custom_id": null
  },
  "@type": "https://schema.org/Person",
  "familyName": "Doe",
  "givenName": "John",
  "country": "FRA",
  "custom_id": "12345"
}
]]></sourcecode>
        <t>The above JSON-LD can be represented as <tt>text/turtle</tt> as follows.</t>
        <sourcecode type="text"><![CDATA[
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix schema: <https://schema.org/>

_:b0 rdf:type schema:Person    ;
     schema:country     "FRA"  ;
     schema:familyName  "Doe"  ;
     schema:givenName   "John" .
]]></sourcecode>
      </section>
      <section anchor="ex-semantic-and-vocabulary">
        <name>Schema with semantic and vocabulary information</name>
        <t>The following example shows a
"Person" schema with semantic information
provided by the x-jsonld-type and x-jsonld-context.</t>
        <figure anchor="ex-complete-example">
          <name>A JSON Schema data model with semantic context and type.</name>
          <sourcecode type="example"><![CDATA[
Person:
  "x-jsonld-type": "https://schema.org/Person"
  "x-jsonld-context":
     "@vocab": "https://schema.org/"
     email: "@id"
     custom_id: null  # detach this property from the @vocab
     country:
       "@id": addressCountry
       "@type": "@id"
       "@context":
          "@base": "http://publications.europa.eu/resource/authority/country/"

  type: object
  required:
  - email
  - given_name
  - family_name
  properties:
    email: { type: string, maxLength: 255  }
    familyName: { type: string, maxLength: 255  }
    givenName:  { type: string, maxLength: 255  }
    country:    { type: string, maxLength: 3, minLength: 3 }
    custom_id:  { type: string, maxLength: 255  }
  example:
    familyName: "Doe"
    givenName: "John"
    email: "jon@doe.example"
    country: "FRA"
    custom_id: "12345"
]]></sourcecode>
        </figure>
        <t>The resulting RDF graph is</t>
        <figure anchor="ex-rdf-from-json">
          <name>An RDF graph with semantic context and type.</name>
          <sourcecode type="text"><![CDATA[
@prefix schema: <https://schema.org/> .
@prefix country: <http://publications.europa.eu/resource/authority/country/> .

<mailto:jon@doe.example>
  schema:familyName "Doe"          ;
  schema:givenName "John"          ;
  schema:addressCountry country:FRA .
]]></sourcecode>
        </figure>
      </section>
      <section anchor="ex-cyclic-schema">
        <name>Cyclic schema</name>
        <t>The following schema contains a cyclic reference.
Type information is resolved using the <tt>@vocab</tt> keyword
specified in the x-jsonld-context.</t>
        <sourcecode type="yaml"><![CDATA[
Person:
  description: Simple cyclic example.
  x-jsonld-type: Person
  x-jsonld-context:
    "email": "@id"
    "@vocab": "https://w3.org/ns/person#"
    children:
      "@container": "@set"
  type: object
  properties:
    email: { type: string }
    children:
      type: array
      items:
        $ref: '#/Person'
  example:
    email: "mailto:a@example"
    children:
    - email: "mailto:dough@example"
    - email: "mailto:son@example"
]]></sourcecode>
        <t>The example schema instance contained in the above schema
results in the following JSON-LD document.</t>
        <sourcecode type="json"><![CDATA[
{
  "email": "mailto:a@example",
  "children": [
    {
      "email": "mailto:dough@example",
      "@type": "Person"
    },
    {
      "email": "mailto:son@example",
      "@type": "Person"
    }
  ],
  "@type": "Person",
  "@context": {
    "email": "@id",
    "@vocab": "https://w3.org/ns/person#",
    "children": {
      "@container": "@set"
    }
  }
}
]]></sourcecode>
        <t>Applying the workflow described in <xref target="interpreting"/>
just recursively copying the x-jsonld-context,
the instance context could have been more complex.</t>
        <figure anchor="ex-redundant-context">
          <name>An instance context containing redundant information</name>
          <sourcecode type="json"><![CDATA[
{
  ...
  "@context": {
    "email": "@id",
    "@vocab": "https://w3.org/ns/person#",
    "children": {
      "@container": "@set",
      "@context": {
        "email": "@id",
        "@vocab": "https://w3.org/ns/person#",
        "children": {
          "@container": "@set"
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="ex-instance-context">
        <name>Composite instance context</name>
        <t>In the following schema document,
the "Citizen" schema references the "BirthPlace" schema.</t>
        <figure anchor="ex-object-contexts">
          <name>A schema with object contexts.</name>
          <sourcecode type="yaml"><![CDATA[
BirthPlace:
  x-jsonld-type: https://w3id.org/italia/onto/CLV/Feature
  x-jsonld-context:
    "@vocab": "https://w3id.org/italia/onto/CLV/"
    country:
      "@id": "hasCountry"
      "@type": "@id"
      "@context":
        "@base": "http://publications.europa.eu/resource/authority/country/"
    province:
      "@id": "hasProvince"
      "@type": "@id"
      "@context":
        "@base": "https://w3id.org/italia/data/identifiers/provinces-identifiers/vehicle-code/"
  type: object
  required:
    - province
    - country
  properties:
    province:
      description: The province where the person was born.
      type: string
    country:
      description: The iso alpha-3 code of the country where the person was born.
      type: string
  example:
    province: RM
    country: ITA
Citizen:
  x-jsonld-type: Person
  x-jsonld-context:
    "email": "@id"
    "@vocab": "https://w3.org/ns/person#"
  type: object
  properties:
    email: { type: string }
    birthplace:
      $ref: "#/BirthPlace"
  example:
    email: "mailto:a@example"
    givenName: Roberto
    familyName: Polli
    birthplace:
      province: LT
      country: ITA

]]></sourcecode>
        </figure>
        <t>The example schema instance contained in the above schema
results in the following JSON-LD document.
The instance context contains information from both
"Citizen" and "BirthPlace" semantic keywords.</t>
        <figure anchor="ex-composite-context">
          <name>A @context that includes information from different schemas.</name>
          <sourcecode type="json"><![CDATA[
{
  "email": "mailto:a@example",
  "givenName": "Roberto",
  "familyName": "Polli",
  "birthplace": {
    "province": "RM",
    "country": "ITA",
    "@type": "https://w3id.org/italia/onto/CLV/Feature"
  },
  "@type": "Person",
  "@context": {
    "email": "@id",
    "@vocab": "https://w3.org/ns/person#",
    "birthplace": {
      "@context": {
        "@vocab": "https://w3id.org/italia/onto/CLV/",
        "city": "hasCity",
        "country": {
          "@id": "hasCountry",
          "@type": "@id",
          "@context": {
            "@base": "http://publications.europa.eu/resource/authority/country/"
          }
        },
        "province": {
          "@id": "hasProvince",
          "@type": "@id",
          "@context": {
            "@base": "https://w3id.org/italia/data/identifiers/provinces-identifiers/vehicle-code/"
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>That can be serialized as <tt>text/turtle</tt> as</t>
        <figure anchor="ex-composite-context-turtle">
          <name>The above entry in text/turtle</name>
          <sourcecode type="text"><![CDATA[
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix eu: <https://w3.org/ns/person#> .
@prefix itl: <https://w3id.org/italia/onto/CLV/> .

<mailto:a@example>
  rdf:type eu:Person ;
  eu:birthplace _:b0 ;
  eu:familyName "Polli" ;
  eu:givenName  "Roberto"
.
_:b0 rdf:type itl:Feature ;
  itl:hasCountry <http://publications.europa.eu/resource/authority/country/ITA> .
  itl:hasProvince <https://w3id.org/italia/data/identifiers/provinces-identifiers/vehicle-code/RM>
.
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Giorgia Lodi, Matteo Fortini and Saverio Pulizzi for being the initial contributors of this work.</t>
      <t>In addition to the people above, this document owes a lot to the extensive discussion inside
and outside the workgroup.
The following contributors have helped improve this specification by
opening pull requests, reporting bugs, asking smart questions,
drafting or reviewing text, and evaluating open issues:</t>
      <t>Pierre-Antoine Champin,
and Vladimir Alexiev.</t>
    </section>
    <section numbered="false" removeInRFC="true" anchor="faq">
      <name>FAQ</name>
      <dl>
        <dt>Q: Why this document?</dt>
        <dd>
          <t>There's currently no standard way to provide machine-readable semantic
information in <xref target="OAS"/> / <xref target="JSONSCHEMA"/> to be used at contract time.</t>
        </dd>
        <dt>Q: Does this document support the exchange of JSON-LD resources?</dt>
        <dd>
          <t>This document is focused on annotating schemas that are used
at contract/design time, so that application can exchange compact
JSON object without dereferencing nor interpreting
external resources at runtime.
</t>
          <t>While you can use the provided semantic information to generate
JSON-LD objects, it is not the primary goal of this specification:
context information are not expected to be dereferenced at runtime
(see security considerations in JSON-LD)
and the semantics of exchanged messages is expected
to be constrained inside the application.</t>
        </dd>
        <dt>Q: Why don't use existing <xref target="JSONSCHEMA"/> keywords like <tt>externalDocs</tt> ?</dt>
        <dd>
          <t>We already tried, but this was actually squatting a keyword designed
for <eref target="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#externalDocumentationObject">human readable documents</eref>.</t>
        </dd>
        <dt>Q: Why using <tt>x-</tt> keywords?</dt>
        <dd>
          <t>OpenAPI 3.0 considers invalid unregistered keywords that don't start with <tt>x-</tt>,
and we want a solution that is valid for all OAS versions &gt;= 3.0.</t>
        </dd>
        <dt>Q: Why not using a full-semantic approach?</dt>
        <dd>
          <t>This approach allows API providers to attach metadata to their
specification without modifying their actual services nor their
implementation, since custom keywords are ignored by OpenAPI toolings
like Gateways and code generators.</t>
        </dd>
        <dt>Q: Why not defining a mechanism to attach semantic information to</dt>
        <dd>
          <t/>
        </dd>
        <dt>   non-object schemas (e.g. JSON Strings) like other implementations?</dt>
        <dd>
          <t>This is actually problematic. Look at this example that reuses
the <tt>TaxCode</tt> schema and semantic in different properties.</t>
        </dd>
        <dt>Q: Why don't use SHACL or OWL restrictions instead of JSON Schema?</dt>
        <dd>
          <t>Web and mobile developers consider JSON Schema is easier to use than SHACL.
Moreover, OWL restrictions are about semantics,
and are not designed to restrict the syntax.</t>
        </dd>
        <dt>Q: Why don't design for composability first?</dt>
        <dd>
          <t>JSON-LD is a complex specification.
Consider the following schemas, where <tt>Contract</tt> references <tt>TaxCode</tt>.</t>
        </dd>
      </dl>
      <sourcecode type="yaml"><![CDATA[
    TaxCode:
      type: string
      $linkedData:
        "@id": "https://w3id.org/italia/onto/CPV/taxCode"
        "term": "taxCode"
    Contract:
      ...
      properties:
        employer_tax_code:
          # Beware! TaxCode.$linkedData.term == 'taxCode'
          $ref: "#/components/schemas/TaxCode"
        employee_tax_code:
          # Here we are reusing not only the schema,
          #   but even the same term.
          $ref: "#/components/schemas/TaxCode"
]]></sourcecode>
      <t>The result will be that only one of the properties will be correctly annotated.
  For this reason, composability is limited to the object level.</t>
      <dl>
        <dt>Q: Can the value of <tt>x-jsonld-type</tt> be an <tt>rdf:Property</tt>? Would this allow to reuse the same schema in different objects without modifying the <tt>@context</tt>?</dt>
        <dd>
          <t>Under normal circumstances, i.e. when designing public or financial service APIs,
you don't want <tt>x-jsonld-type</tt> to be an <tt>rdf:Property</tt>.
The value of <tt>x-jsonld-type</tt> usually maps to a <tt>owl:Class</tt>, not an <tt>owl:DataTypeProperty</tt>;
for example a sensible value for <tt>x-jsonld-type</tt> would be <tt>rdfs:Literal</tt> (that is, the <tt>rdfs:range</tt> of <tt>CPV:taxCode</tt>),
but this would be mostly a syntactic information, which instead is provided by JSON Schema.</t>
        </dd>
      </dl>
      <figure anchor="ex-invalid-x-jsonld-type">
        <name>The above code is ambiguous, because the rdfs:range of CPV:taxCode is rdfs:Literal</name>
        <sourcecode type="yaml"><![CDATA[
    TaxCode:
      type: string
      x-jsonld-type: "https://w3id.org/italia/onto/CPV/taxCode"
      description: |-
        This example is ambiguous, because:

        1. it treats a CPV:taxCode as an owl:Class,
           while it's an owl:DataTypeProperty;
        2. the `rdfs:range` for CPV:taxCode is `rdfs:Literal`.
]]></sourcecode>
      </figure>
    </section>
    <section numbered="false" removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
