Skip to content

Version announcement #207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 6, 2025
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions spec/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,10 @@ <h3>RDF Version Announcement</h3>
Location: http://example.com/document.ttl
</pre>

<p>Servers are also expected to announce the version in-line,
when the format supports in-line version announcement
(such as [[[RDF12-TURTLE]]] [[RDF12-TURTLE]]).</p>

<p>When requesting an RDF document from an HTTP server, a client
can use the <code>version</code> parameter
during <a data-cite="webarch#frag-coneg">content negotiation</a> [[WEBARCH]],
Expand All @@ -549,6 +553,13 @@ <h3>RDF Version Announcement</h3>
Section <a href="#defined-version-labels" class="sectionRef"></a> defines <a>version labels</a>
to be used with the <code>version</code> parameter and in <a>concrete RDF syntax</a>.
</p>

<p class="note">As HTTP <a data-cite="webarch#frag-coneg">content negotiation</a> is advisory,
clients receiving a document should be prepared to properly handle a document
of the requested media type but potentially having a `version` other than what was
requested.
Clients may consider down-grading the content to an appropriate version themselves
as discussed in <a href="#server-considerations" class="sectionRef"></a>.</p>
</section>
</section>

Expand Down Expand Up @@ -612,6 +623,49 @@ <h3>Version Labels</h3>
</tr>
</tbody>
</table>

<p>For serializations supporting in-line version announcement,
the version announcement SHOULD be made early in the document
and certainly before serializing any feature depending on that version.</p>

<section id="server-considerations" class="informative">
<h4>Server Considerations</h4>
<p>When serializing a graph or dataset which uses features incompatible
with a requested version, servers can consider different alternatives:</p>

<ol>
<li>Eliminate <a>triple terms</a> by using an algorithm such
as <em>Unstar</em> (downgrading from version "1.2" to "1.2-basic" or to "1.1").
<div class="ednote">Fix this when such an algorithmm is defined.</div></li>
<li>Replace <a>directional language-tagged strings</a>
by <a>literals</a> with a <a>datatype IRI</a> that
uses the <a data-cite="JSON-LD11#the-i18n-namespace">`i18n` namespace</a>, as defined in [[JSON-LD11]]
("1.2" or "1.2-basic" to "1.1").</li>
<li>Return `406 "Not Acceptable"`.</li>
<li>Ignore the requested version and return a native representation.</li>
</ol>

<p class="note">The suggestion here is to follow the
<a href="https://en.wikipedia.org/wiki/Robustness_principle">Robustness principle</a>
(also known as Postel's Law):
servers should be conservative in what they send, be liberal in what they accept.</p>
</section>

<section id="client-considerations" class="informative">
<h4>Client Considerations</h4>
<p>If a document has no stated `version` (either by HTTP header or internal),
systems can assume the version is `"1.2"`, which is compatible
with all RDF versions.</p>
<p>When parsing a document with conflicting versions,
or when parsing a document using unsupported versions, a parser
may:</p>
<ul>
<li>Ignore the version directive.</li>
<li>Raise an error and abort.</li>
<li>Issue a warning and ignore the triple.</li>
<li>Parse the structure and only emit triples consistent with the declared version.</li>
</ul>
</section>
</section>

<section id="rdf-strings">
Expand Down Expand Up @@ -703,7 +757,7 @@ <h3>RDF Terms</h3>
<span id="dfn-rdf-terms"><!-- obsolete term--></span><dfn data-lt="rdf term">RDF terms</dfn>.</p>

<p>
[=IRIs=], [=literals=] and [=blank nodes=] are said to be <dfn data-lt-no-plural>atomic</dfn> [=RDF terms=].
[=IRIs=], [=literals=] and [=blank nodes=] are said to be <dfn class="export" data-lt-no-plural>atomic</dfn> [=RDF terms=].
</p>

<p><dfn>RDF term equality</dfn>:
Expand Down Expand Up @@ -2369,7 +2423,7 @@ <h3>Acknowledgments for RDF 1.2</h3>
<h2>Changes between RDF 1.1 and RDF 1.2</h2>

<ul>
<li>Added <a href="#section-version-announcement"class="sectionRef"></a>
<li>Added <a href="#section-version-announcement" class="sectionRef"></a>
for announcing RDF versions in RDF documents via the HTTP Content-Type header and/or syntax.</li>
<li>Added <a href="#section-basic-full-interop" class="sectionRef"></a>
for informative mappings between RDF [=Full=] and RDF [=Basic=].</li>
Expand Down
Loading