--- a/drafts/n-quads/Overview.html Wed Dec 18 07:04:35 2013 -0800
+++ b/drafts/n-quads/Overview.html Wed Dec 18 07:11:03 2013 -0800
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:CR" about="" property="dcterms:language" content="en">
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
<head>
<title>RDF 1.1 N-Quads</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
@@ -198,22 +198,22 @@
}
-</style><link href="https://www.w3.org/StyleSheets/TR/W3C-CR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><script src="https://raw.github.com/darobin/respec/gh-pages/js/ui/save-html.js" data-requiremodule="ui/save-html" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script></head>
- <body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" class="head">
+</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><style type="text/css"></style><style type="text/css"></style><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body class="h-entry" style="zoom: 1;" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
<p>
- <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>
+ <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
</p>
<h1 class="title p-name" id="title" property="dcterms:title">RDF 1.1 N-Quads</h1>
<h2 property="bibo:subtitle" id="subtitle">A line-based syntax for an RDF datasets</h2>
- <h2 id="w3c-candidate-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T08:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Candidate Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
+ <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-01-07T08:00:00.000Z" id="w3c-proposed-recommendation-07-january-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2014-01-07">07 January 2014</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a class="u-url" href="http://www.w3.org/TR/2013/CR-n-quads-20131105/">http://www.w3.org/TR/2013/CR-n-quads-20131105/</a></dd>
+ <dd><a class="u-url" href="http://www.w3.org/TR/2014/PR-n-quads-20140107/">http://www.w3.org/TR/2014/PR-n-quads-20140107/</a></dd>
<dt>Latest published version:</dt>
<dd><a href="http://www.w3.org/TR/n-quads/">http://www.w3.org/TR/n-quads/</a></dd>
@@ -226,10 +226,13 @@
<dd><a href="http://www.w3.org/2013/N-QuadsTests/">http://www.w3.org/2013/N-QuadsTests/</a></dd>
+ <dt>Implementation report:</dt>
+ <dd><a href="https://dvcs.w3.org/hg/rdf/raw-file/default/nquads/reports/index.html">https://dvcs.w3.org/hg/rdf/raw-file/default/nquads/reports/index.html</a></dd>
+
<dt>Previous version:</dt>
- <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/WD-n-quads-20130905/">http://www.w3.org/TR/2013/WD-n-quads-20130905/</a></dd>
+ <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-n-quads-20131105/">http://www.w3.org/TR/2013/CR-n-quads-20131105/</a></dd>
<dt>Editor:</dt>
@@ -246,7 +249,7 @@
<p class="copyright">
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2012-2013
+ 2012-2014
<a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
@@ -266,68 +269,76 @@
<hr>
</div>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">Abstract</h2><p>
+ <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2><p>
N-Quads is a line-based, plain text format for encoding an RDF dataset.
-</p></section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">Status of This Document</h2>
+</p></section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
<p>
- <em>This section describes the status of this document at the time of its publication. Other
- documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
- of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
- index</a> at http://www.w3.org/TR/.</em>
+ <em>This section describes the status of this document at the time of its publication.
+ Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
+ latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
+ http://www.w3.org/TR/.</em>
</p>
<p>The N-Quads format has a similar flavor as N-Triples
-[<cite><a href="#bib-N-TRIPLES" class="bibref">N-TRIPLES</a></cite>]. The main distinction is that N-Quads allows encoding
+[<cite><a class="bibref" href="#bib-N-TRIPLES">N-TRIPLES</a></cite>]. The main distinction is that N-Quads allows encoding
multiple graphs. In a change from previous publication, this document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.</p>
<p>
- This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Candidate Recommendation.
+ This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.
This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
- If you wish to make comments regarding this document, please send them to
- <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
- (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
- <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
- <abbr title="World Wide Web Consortium">W3C</abbr> publishes a Candidate Recommendation to indicate that the document is believed
- to be stable and to encourage implementation by the developer community. This
- Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than
- 26 November 2013.
+ The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited to review the document and
+ send comments to
+ <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
+ (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>)
+ through 04 February 2013. Advisory Committee Representatives should consult their
+ <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+ Note that substantive technical comments were expected during the Last Call review
+ period that ended 14 October 2013.
-
- All comments are welcome.</p>
-
+ </p>
<p>
- Publication as a Candidate Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
- This is a draft document and may be updated, replaced or obsoleted by other documents at
- any time. It is inappropriate to cite this document as other than work in progress.
+ Please see the Working Group's <a href="https://dvcs.w3.org/hg/rdf/raw-file/default/nquads/reports/index.html">implementation
+ report</a>.
+ </p>
+
+
+ <p>
+ Publication as a Proposed Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
+ Membership. This is a draft document and may be updated, replaced or obsoleted by other
+ documents at any time. It is inappropriate to cite this document as other than work in
+ progress.
</p>
<p>
This document was produced by a group operating under the
-
- <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
+ <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent
+ Policy</a>.
- <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent
+ disclosures</a>
- made in connection with the deliverables of the group; that page also includes instructions for
- disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
- information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ made in connection with the deliverables of the group; that page also includes
+ instructions for disclosing a patent. An individual who has actual knowledge of a patent
+ which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
+ Claim(s)</a> must disclose the information in accordance with
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
@@ -336,13 +347,20 @@
-</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#sec-intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#n-quads-language"><span class="secno">2. </span>N-Quads Language</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#simple-triples"><span class="secno">2.1 </span>Simple Statements</a></li><li class="tocline"><a class="tocxref" href="#sec-iri"><span class="secno">2.2 </span>IRIs</a></li><li class="tocline"><a class="tocxref" href="#sec-literals"><span class="secno">2.3 </span>RDF Literals</a></li><li class="tocline"><a class="tocxref" href="#BNodes"><span class="secno">2.4 </span>RDF Blank Nodes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">3. </span>Conformance</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-mediatype"><span class="secno">3.1 </span>Media Type and Content Encoding</a></li></ul></li><li class="tocline"><a class="tocxref" href="#sec-grammar"><span class="secno">4. </span>Grammar</a></li><li class="tocline"><a class="tocxref" href="#sec-parsing"><span class="secno">5. </span>Parsing</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-parsing-terms"><span class="secno">5.1 </span>RDF Term Constructors</a></li><li class="tocline"><a class="tocxref" href="#rdf-dataset-construction"><span class="secno">5.2 </span>RDF Dataset Construction</a></li></ul></li><li class="tocline"><a class="tocxref" href="#section-ack"><span class="secno">6. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#sec-changes"><span class="secno">A. </span>Changes to this document</a></li><li class="tocline"><a class="tocxref" href="#sec-mediaReg"><span class="secno">B. </span>N-Quads Internet Media Type, File Extension and Macintosh File Type </a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#sec-intro" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#n-quads-language" class="tocxref"><span class="secno">2. </span>N-Quads Language</a><ul class="toc"><li class="tocline"><a href="#simple-triples" class="tocxref"><span class="secno">2.1 </span>Simple Statements</a></li><li class="tocline"><a href="#sec-iri" class="tocxref"><span class="secno">2.2 </span>IRIs</a></li><li class="tocline"><a href="#sec-literals" class="tocxref"><span class="secno">2.3 </span>RDF Literals</a></li><li class="tocline"><a href="#BNodes" class="tocxref"><span class="secno">2.4 </span>RDF Blank Nodes</a></li></ul></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">3. </span>Conformance</a><ul class="toc"><li class="tocline"><a href="#sec-mediatype" class="tocxref"><span class="secno">3.1 </span>Media Type and Content Encoding</a><ul class="toc"><li class="tocline"><a href="#sec-other-media-types" class="tocxref"><span class="secno">3.1.1 </span>Other Media Types</a></li></ul></li></ul></li><li class="tocline"><a href="#sec-grammar" class="tocxref"><span class="secno">4. </span>Grammar</a></li><li class="tocline"><a href="#sec-parsing" class="tocxref"><span class="secno">5. </span>Parsing</a><ul class="toc"><li class="tocline"><a href="#sec-parsing-terms" class="tocxref"><span class="secno">5.1 </span>RDF Term Constructors</a></li><li class="tocline"><a href="#rdf-dataset-construction" class="tocxref"><span class="secno">5.2 </span>RDF Dataset Construction</a></li></ul></li><li class="tocline"><a href="#section-ack" class="tocxref"><span class="secno">6. </span>Acknowledgements</a></li><li class="tocline"><a href="#sec-changes" class="tocxref"><span class="secno">A. </span>Change Log</a><ul class="toc"><li class="tocline"><a href="#changes-between-candidate-recommendation-05-november-2013-and-this-proposed-recommendation" class="tocxref"><span class="secno">A.1 </span>Changes between <span class="formerLink">Candidate Recommendation 05 November 2013</span> and this Proposed Recommendation</a></li><li class="tocline"><a href="#changes-between-last-call-working-draft-05-september-2013-and-candidate-recommendation-05-november-2013" class="tocxref"><span class="secno">A.2 </span>Changes between <span class="formerLink">Last Call Working Draft 05 September 2013</span> and <span class="formerLink">Candidate Recommendation 05 November 2013</span></a></li><li class="tocline"><a href="#changes-since-original-publication-as-note" class="tocxref"><span class="secno">A.3 </span>Changes since original publication as Note</a></li></ul></li><li class="tocline"><a href="#sec-mediaReg" class="tocxref"><span class="secno">B. </span>N-Quads Internet Media Type, File Extension and Macintosh File Type </a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-intro">
- <!--OddPage--><h2 id="h2_sec-intro" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2>
- <p>This document defines an easy to parse line-based language named N-Quads.</p>
+ <section id="sec-intro" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-intro"><span class="secno">1. </span>Introduction</h2>
+
+ <p>
+ This document defines N-Quads, an easy to parse, line-based,
+ concrete syntax for
+ <a href="http://www.w3.org/TR/rdf11-concepts/#section-dataset">RDF Datasets</a>
+ [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].
+ </p>
+
<p>N-quads statements are a sequence of RDF terms representing the subject, predicate, object and graph label of an RDF Triple and the graph it is part of in a dataset. These may be separated by white space (spaces <code>#x20</code> or tabs <code>#x9</code>). This sequence is terminated by a '<code>.</code>' and a new line (optional at the end of a document).
</p>
@@ -355,23 +373,23 @@
</section>
<section id="n-quads-language">
- <!--OddPage--><h2 id="h2_n-quads-language" role="heading" aria-level="1"><span class="secno">2. </span>N-Quads Language</h2>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="simple-triples">
- <h3 id="h3_simple-triples" role="heading" aria-level="2"><span class="secno">2.1 </span>Simple Statements</h3>
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-quads-language"><span class="secno">2. </span>N-Quads Language</h2>
+ <section id="simple-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_simple-triples"><span class="secno">2.1 </span>Simple Statements</h3>
<p>The simplest statement is a sequence of (subject, predicate, object) terms forming an RDF triple and an optional blank node label or IRI labeling what graph in a dataset the triple belongs to, all are separated by whitespace and terminated by '<code>.</code>' after each statement.</p>
<div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><script type="application/n-quads"><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> <http://example.org/graphs/spiderman> .</script></pre></div>
<p>The graph label IRI can be omitted, in which case the triples are considered part of the default graph of the RDF dataset.</p><p>
</p></section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-iri">
- <h3 id="h3_sec-iri" role="heading" aria-level="2"><span class="secno">2.2 </span>IRIs</h3>
+ <section id="sec-iri" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-iri"><span class="secno">2.2 </span>IRIs</h3>
<p>
<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> may be written only as absolute IRIs.
IRIs are enclosed in '<' and '>' and may contain numeric escape sequences (described below). For example <code><http://example.org/#green-goblin></code>.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-literals">
- <h3 id="h3_sec-literals" role="heading" aria-level="2"><span class="secno">2.3 </span>RDF Literals</h3>
+ <section id="sec-literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-literals"><span class="secno">2.3 </span>RDF Literals</h3>
<p><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</a> are used to identify values such as strings, numbers, dates.</p>
@@ -384,8 +402,8 @@
If there is no language tag, there may be a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</a>, preceeded by '<code>^^</code>' (<span class="codepoint">U+005E</span> <span class="codepoint">U+005E</span>). If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="BNodes">
- <h3 id="h3_BNodes" role="heading" aria-level="2"><span class="secno">2.4 </span>RDF Blank Nodes</h3>
+ <section id="BNodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_BNodes"><span class="secno">2.4 </span>RDF Blank Nodes</h3>
<p>
<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">RDF blank nodes</a> in N-Quads are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized as follows:
@@ -405,51 +423,61 @@
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="conformance"><!--OddPage--><h2 id="h2_conformance" role="heading" aria-level="1"><span class="secno">3. </span>Conformance</h2>
+ <section id="conformance" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_conformance"><span class="secno">3. </span>Conformance</h2>
<p>
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
and notes in this specification are non-normative. Everything else in this specification is
normative.
</p>
<p>
- The key words <em title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>, <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>, <em title="MAY" class="rfc2119">MAY</em>,
- and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].
+ The key words <em class="rfc2119" title="MUST">MUST</em>, <em class="rfc2119" title="MUST NOT">MUST NOT</em>, <em class="rfc2119" title="REQUIRED">REQUIRED</em>, <em class="rfc2119" title="SHOULD">SHOULD</em>, <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em>, <em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em>, <em class="rfc2119" title="MAY">MAY</em>,
+ and <em class="rfc2119" title="OPTIONAL">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].
</p>
<p>This specification defines conformance criteria for:</p>
<ul>
- <li>N-Quad documents
- </li><li>N-Quad parsers
+ <li>N-Quads documents
+ </li><li>N-Quads parsers
</li></ul>
- <p>A conforming <strong>N-Quad document</strong> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#sec-grammar" class="sectionRef sec-ref">section <span class="secno">4.</span> <span class="sec-title">Grammar</span></a>, starting with the <a href="#grammar-production-nquadsDoc"><code>nquadsDoc</code> production</a>. A N-Quad document serializes an RDF dataset.</p>
+ <p>A conforming <strong>N-Quads document</strong> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#sec-grammar" class="sectionRef sec-ref">section <span class="secno">4.</span> <span class="sec-title">Grammar</span></a>, starting with the <a href="#grammar-production-nquadsDoc"><code>nquadsDoc</code> production</a>. An N-Quad document serializes an RDF dataset.</p>
- <div class="note"><div id="h_note_1" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">N-Quad documents do not provide a way of serializing empty graphs that may be part of an RDF dataset.</p></div>
-
- <p>A conforming <strong>N-Quad parser</strong> is a system capable of reading N-Quad documents on behalf of an application. It makes the serialized RDF graph, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">5.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
+ <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_1"><span>Note</span></div><p class="">N-Quads documents do not provide a way of serializing empty graphs that may be part of an RDF dataset.</p></div>
- <p>The IRI that identifies the N-Quad language is: <code>http://www.w3.org/ns/formats/N-Quads</code></p>
+ <p>A conforming <strong>N-Quads parser</strong> is a system capable of reading N-Quads documents on behalf of an application. It makes the serialized RDF graph, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">5.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-mediatype">
- <h3 id="h3_sec-mediatype" role="heading" aria-level="2"><span class="secno">3.1 </span>Media Type and Content Encoding</h3>
+ <p>The IRI that identifies the N-Quads language is: <code>http://www.w3.org/ns/formats/N-Quads</code></p>
+
+ <section id="sec-mediatype" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-mediatype"><span class="secno">3.1 </span>Media Type and Content Encoding</h3>
<p>The media type of N-Quads is <code>application/n-quads</code>.
The content encoding of N-Quads is always UTF-8.
See <a href="#sec-mediaReg">N-Quads Media Type</a> for the media type
registration form.
</p>
+
+ <section id="sec-other-media-types" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h4 aria-level="3" role="heading" id="h4_sec-other-media-types"><span class="secno">3.1.1 </span>Other Media Types</h4>
+ <p>The original specification,
+ <a href="http://sw.deri.org/2008/07/n-quads/">N-Quads: Extending N-Triples with Context</a>,
+ proposed the use of media type <code>text/x-nquads</code> with an encoding
+ using 7-bit US-ASCII.</p>
+ </section>
+
+
</section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-grammar">
- <!--OddPage--><h2 id="h2_sec-grammar" role="heading" aria-level="1"><span class="secno">4. </span>Grammar</h2>
- <p>A N-Quads document is a Unicode[<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>] character string encoded in UTF-8.
+ <section id="sec-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-grammar"><span class="secno">4. </span>Grammar</h2>
+ <p>An N-Quads document is a Unicode[<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>] character string encoded in UTF-8.
Unicode code points only in the range U+0 to U+10FFFF inclusive are allowed.</p>
<p>White space (tab <code>U+0009</code> or space <code>U+0020</code>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. White space is significant in the production <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>.</p>
<p>Comments in N-Quads take the form of '<code>#</code>', outside an <code>IRIREF</code> or <code>STRING_LITERAL_QUOTE</code>, and continue to the end of line (<code>EOL</code>) or end of file if there is no end of line after the comment marker. Comments are treated as white space.</p>
<p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0
- [<cite><a href="#bib-EBNF-NOTATION" class="bibref">EBNF-NOTATION</a></cite>].</p>
+ [<cite><a class="bibref" href="#bib-EBNF-NOTATION">EBNF-NOTATION</a></cite>].</p>
<p>Escape sequence rules are the same as Turtle
- [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. However, as only the <a href="#grammar-production-STRING_LITERAL_QUOTE"><code>STRING_LITERAL_QUOTE</code></a> production is allowed new lines in literals <em title="MUST" class="rfc2119">MUST</em> be escaped.</p>
+ [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. However, as only the <a href="#grammar-production-STRING_LITERAL_QUOTE"><code>STRING_LITERAL_QUOTE</code></a> production is allowed new lines in literals <em class="rfc2119" title="MUST">MUST</em> be escaped.</p>
<div><table class="grammar">
<tbody class="grammar-productions">
<tr id="grammar-production-nquadsDoc" data-grammar-original="[1] nquadsDoc ::= statement? (EOL statement)* EOL?" data-grammar-expression="(',', [('?', ('id', 'statement')), ('*', (',', [('id', 'EOL'), ('id', 'statement')])), ('?', ('id', 'EOL'))])">
@@ -507,7 +535,7 @@
<td>::=</td>
<td>[<code class="grammar-chars">#xD#xA</code>]<code class="grammar-plus">+</code></td>
</tr>
- <tr id="grammar-production-IRIREF" data-grammar-original="[10] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
+ <tr id="grammar-production-IRIREF" data-grammar-original="[10] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
<td>[10]</td>
<td><code>IRIREF</code></td>
<td>::=</td>
@@ -531,11 +559,11 @@
<td>::=</td>
<td>'<code class="grammar-literal">\u</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <code>| </code> '<code class="grammar-literal">\U</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
</tr>
- <tr id="grammar-production-ECHAR" data-grammar-original="[153s] ECHAR ::= "\" [tbnrf"']" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf"\'')])" class="grammar-token">
+ <tr id="grammar-production-ECHAR" data-grammar-original="[153s] ECHAR ::= "\" [tbnrf"\]" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf"\'')])" class="grammar-token">
<td>[153s]</td>
<td><code>ECHAR</code></td>
<td>::=</td>
- <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'</code>]</td>
+ <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'\</code>]</td>
</tr>
<tr id="grammar-production-PN_CHARS_BASE" data-grammar-original="[157s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#x00C0-#x00D6]| [#x00D8-#x00F6]| [#x00F8-#x02FF]| [#x0370-#x037D]| [#x037F-#x1FFF]| [#x200C-#x200D]| [#x2070-#x218F]| [#x2C00-#x2FEF]| [#x3001-#xD7FF]| [#xF900-#xFDCF]| [#xFDF0-#xFFFD]| [#x10000-#xEFFFF]" data-grammar-expression="('|', [('[', 'A-Z'), ('[', 'a-z'), ('[', '#x00C0-#x00D6'), ('[', '#x00D8-#x00F6'), ('[', '#x00F8-#x02FF'), ('[', '#x0370-#x037D'), ('[', '#x037F-#x1FFF'), ('[', '#x200C-#x200D'), ('[', '#x2070-#x218F'), ('[', '#x2C00-#x2FEF'), ('[', '#x3001-#xD7FF'), ('[', '#xF900-#xFDCF'), ('[', '#xFDF0-#xFFFD'), ('[', '#x10000-#xEFFFF')])" class="grammar-token">
<td>[157s]</td>
@@ -564,15 +592,15 @@
</tbody></table>
</div>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing">
- <!--OddPage--><h2 id="h2_sec-parsing" role="heading" aria-level="1"><span class="secno">5. </span>Parsing</h2>
+ <section id="sec-parsing" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-parsing"><span class="secno">5. </span>Parsing</h2>
<p>Parsing N-Quads requires a state of one item:</p>
<ul>
<li id="bnodeLabels">Map[string -> <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node.</li>
</ul>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing-terms">
- <h3 id="h3_sec-parsing-terms" role="heading" aria-level="2"><span class="secno">5.1 </span>RDF Term Constructors</h3>
+ <section id="sec-parsing-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">5.1 </span>RDF Term Constructors</h3>
<p>This table maps productions and lexical tokens to <code>RDF terms</code> or components of <code>RDF terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">5.</span> <span class="sec-title">Parsing</span></a>:</p>
<table class="simple">
<thead>
@@ -588,34 +616,45 @@
</table>
</section>
<section id="rdf-dataset-construction">
- <h3 id="h3_rdf-dataset-construction" role="heading" aria-level="2"><span class="secno">5.2 </span>RDF Dataset Construction</h3>
- <p>A N-Quad document defines an RDF dataset composed of RDF graphs composed of a set of RDF triples. The <code><a href="#grammar-production-statement">statement</a></code> production produces a triple defined by the terms constructed for <code><a href="#grammar-production-subject">subject</a></code>, <code><a href="#grammar-production-predicate">predicate</a></code> and <code><a href="#grammar-production-object">object</a></code>. This RDF triple is added to the graph labeled by the production <code><a href="#grammar-production-graphLabel">graphLabel</a></code>, if no <code>graphLabel</code> is present the triple is added to the RDF datasets default graph.</p>
+ <h3 aria-level="2" role="heading" id="h3_rdf-dataset-construction"><span class="secno">5.2 </span>RDF Dataset Construction</h3>
+ <p>An N-Quads document defines an RDF dataset composed of RDF graphs composed of a set of RDF triples. The <code><a href="#grammar-production-statement">statement</a></code> production produces a triple defined by the terms constructed for <code><a href="#grammar-production-subject">subject</a></code>, <code><a href="#grammar-production-predicate">predicate</a></code> and <code><a href="#grammar-production-object">object</a></code>. This RDF triple is added to the graph labeled by the production <code><a href="#grammar-production-graphLabel">graphLabel</a></code>, if no <code>graphLabel</code> is present the triple is added to the RDF datasets default graph.</p>
</section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="section-ack" class="informative">
- <!--OddPage--><h2 id="h2_section-ack" role="heading" aria-level="1"><span class="secno">6. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
- <p>The editor of the 2013 edition acknowledges valuable contributions from Gregg Kellogg, Andy Seaborn, Eric Prud'hommeaux, Dave Beckett, David Robillard, Gregory Williams, Antoine Zimmermann, Sandro Hawke, Richard Cyganiak, Pat Hayes, Henry S. Thompson, Bob Ferris, Henry Story, Andreas Harth, Lee Feigenbaum, Peter Ansell, and David Booth.</p>
+ <section id="section-ack" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_section-ack"><span class="secno">6. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+ <p>The editor of the RDF 1.1 edition acknowledges valuable contributions from Gregg Kellogg, Andy Seaborne, Eric Prud'hommeaux, Dave Beckett, David Robillard, Gregory Williams, Antoine Zimmermann, Sandro Hawke, Richard Cyganiak, Pat Hayes, Henry S. Thompson, Bob Ferris, Henry Story, Andreas Harth, Lee Feigenbaum, Peter Ansell, and David Booth.</p>
<p>This specification is a product of extended deliberations by the
<a href="http://www.w3.org/2000/09/dbwg/details?group=46168&public=1">members of the RDF Working Group</a> chaired by Guus Schreiber and David Wood. It draws upon the eariler specification in <em><a href="http://sw.deri.org/2008/07/n-quads/">N-Quads: Extending N-Triples with Context</a></em>, edited by Richard Cyganiak, Andreas Harth, and Aidan Hogan.</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-changes" class="appendix">
- <!--OddPage--><h2 id="h2_sec-changes" role="heading" aria-level="1"><span class="secno">A. </span>Changes to this document</h2><h2 id="generatedID">
- </h2><h2 id="changes-since-last-publication-as-last-call-working-draft">Changes since last publication as Last Call Working Draft</h2>
- <p>No substitutive changes.</p>
- <h2 id="changes-since-original-publication-as-note">Changes since original publication as Note</h2>
+ <section id="sec-changes" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-changes"><span class="secno">A. </span>Change Log</h2>
+ <section id="changes-between-candidate-recommendation-05-november-2013-and-this-proposed-recommendation">
+ <h3 aria-level="2" role="heading" id="h3_changes-between-candidate-recommendation-05-november-2013-and-this-proposed-recommendation"><span class="secno">A.1 </span>Changes between <a href="http://www.w3.org/TR/2013/CR-n-quads-20131105/">Candidate Recommendation 05 November 2013</a> and this Proposed Recommendation</h3>
+ <ul>
+ <li>A normative reference to RDF Concepts has been added.</li>
+ <li>Informative note about <code>text/x-nquads</code> historical media type added.</li>
+ </ul>
+ </section>
+ <section id="changes-between-last-call-working-draft-05-september-2013-and-candidate-recommendation-05-november-2013">
+ <h3 aria-level="2" role="heading" id="h3_changes-between-last-call-working-draft-05-september-2013-and-candidate-recommendation-05-november-2013"><span class="secno">A.2 </span>Changes between <a href="http://www.w3.org/TR/2013/WD-n-quads-20130905/">Last Call Working Draft 05 September 2013</a> and <a href="http://www.w3.org/TR/2013/CR-n-quads-20131105/">Candidate Recommendation 05 November 2013</a></h3>
+ <p>No substitutive changes.</p>
+ </section>
+ <section id="changes-since-original-publication-as-note">
+ <h3 aria-level="2" role="heading" id="h3_changes-since-original-publication-as-note"><span class="secno">A.3 </span>Changes since original publication as Note</h3>
<ul>
<li>White space rules defined outside of grammar, as in Turtle.
</li><li>Comment processing defined.
</li><li>Parsing is defined.
- </li><li>Recomendation track, not a working group Note.
+ </li><li>Recommendation track, not a working group Note.
</li></ul>
+ </section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-mediaReg" class="appendix">
- <!--OddPage--><h2 id="h2_sec-mediaReg" role="heading" aria-level="1"><span class="secno">B. </span>N-Quads Internet Media Type, File Extension and Macintosh File Type </h2>
+ <section id="sec-mediaReg" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-mediaReg"><span class="secno">B. </span>N-Quads Internet Media Type, File Extension and Macintosh File Type </h2>
<dl>
<dt>Contact:</dt>
<dd>Eric Prud'hommeaux</dd>
@@ -641,16 +680,16 @@
<dd>None</dd>
<dt>Encoding considerations:</dt>
- <dd>The syntax of N-Quads is expressed over code points in Unicode [<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a href="#bib-UTF-8" class="bibref">UTF-8</a></cite>].</dd>
+ <dd>The syntax of N-Quads is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd>
<dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]</dd>
<dt>Security considerations:</dt>
- <dd>N-Quads is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
+ <dd>N-Quads is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
<dd>N-Quads is used to express arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on N-Quads documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information.</dd>
- <dd>N-Quads can express data which is presented to the user, for example, RDF Schema labels. Application rendering strings retrieved from untrusted N-Quads documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
+ <dd>N-Quads can express data which is presented to the user, for example, RDF Schema labels. Application rendering strings retrieved from untrusted N-Quads documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
<dd>N-Quads uses IRIs as term identifiers. Applications interpreting data expressed in N-Quads should address the security issues of
- <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8, as well as
- <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>] Section 7.</dd>
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8, as well as
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] Section 7.</dd>
<dd>Multiple IRIs may have the same appearance. Characters in different scripts may
look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed
@@ -661,9 +700,9 @@
Any person or application that is writing or interpreting data in Turtle must take care to use the IRI that matches the intended semantics, and avoid IRIs that make look similar.
Further information about matching of similar characters can be found
in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security
- Considerations</a> [<cite><a href="#bib-UNICODE-SECURITY" class="bibref">UNICODE-SECURITY</a></cite>] and
+ Considerations</a> [<cite><a class="bibref" href="#bib-UNICODE-SECURITY">UNICODE-SECURITY</a></cite>] and
<a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
- Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8.
+ Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8.
</dd>
<dt>Interoperability considerations:</dt>
@@ -696,14 +735,15 @@
-<section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="references" class="appendix"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">C. </span>References</h2><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">C.1 </span>Normative references</h3><dl about="" class="bibliography"><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">C. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
+</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-RFC3023">[RFC3023]</dt><dd rel="dcterms:requires">M. Murata; S. St.Laurent; D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types (RFC 3023)</cite></a>. January 2001. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a>
</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:requires">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
</dd><dt id="bib-UNICODE">[UNICODE]</dt><dd rel="dcterms:requires"><a href="http://www.unicode.org/versions/latest/"><cite>The Unicode Standard</cite></a>. URL: <a href="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</a>
</dd><dt id="bib-UTF-8">[UTF-8]</dt><dd rel="dcterms:requires">F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a>
-</dd></dl></section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">C.2 </span>Informative references</h3><dl about="" class="bibliography"><dt id="bib-N-TRIPLES">[N-TRIPLES]</dt><dd rel="dcterms:references">Gavin Carothers, Editor. <cite><a href="http://www.w3.org/TR/2013/CR-n-triples-20131105/">RDF 1.1 N-Triples</a></cite>. 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-n-triples-20131105/">http://www.w3.org/TR/2013/CR-n-triples-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/n-triples/">http://www.w3.org/TR/n-triples/</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-N-TRIPLES">[N-TRIPLES]</dt><dd rel="dcterms:references">Gavin Carothers, Andy Seabourne. <cite><a href="http://www.w3.org/TR/2013/CR-n-triples-20131105/">RDF 1.1 N-Triples</a></cite>. 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-n-triples-20131105/">http://www.w3.org/TR/2013/CR-n-triples-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/n-triples/">http://www.w3.org/TR/n-triples/</a>
</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">RDF 1.1 Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
</dd><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
</dd></dl></section></section></body></html>
\ No newline at end of file
--- a/drafts/n-triples/Overview.html Wed Dec 18 07:04:35 2013 -0800
+++ b/drafts/n-triples/Overview.html Wed Dec 18 07:11:03 2013 -0800
@@ -1,10 +1,10 @@
<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:CR" about="" property="dcterms:language" content="en">
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
<head>
<title>RDF 1.1 N-Triples</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-
+ <style type="text/css"></style><style type="text/css"></style>
<style type="text/css">
/* Style Turtle script blocks to be visable */
@@ -159,22 +159,22 @@
aside.example div.example div.example-title {
color: #999;
}
-</style><link href="https://www.w3.org/StyleSheets/TR/W3C-CR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><script src="https://raw.github.com/darobin/respec/gh-pages/js/ui/save-html.js" data-requiremodule="ui/save-html" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script></head>
- <body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" class="head">
+</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body style="zoom: 1;" class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
<p>
- <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>
+ <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
</p>
<h1 class="title p-name" id="title" property="dcterms:title">RDF 1.1 N-Triples</h1>
<h2 property="bibo:subtitle" id="subtitle">A line-based syntax for an RDF graph</h2>
- <h2 id="w3c-candidate-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T08:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Candidate Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
+ <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T08:00:00.000Z" id="w3c-proposed-recommendation-05-november-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a class="u-url" href="http://www.w3.org/TR/2013/CR-n-triples-20131105/">http://www.w3.org/TR/2013/CR-n-triples-20131105/</a></dd>
+ <dd><a class="u-url" href="http://www.w3.org/TR/2013/PR-n-triples-20131105/">http://www.w3.org/TR/2013/PR-n-triples-20131105/</a></dd>
<dt>Latest published version:</dt>
<dd><a href="http://www.w3.org/TR/n-triples/">http://www.w3.org/TR/n-triples/</a></dd>
@@ -187,15 +187,20 @@
<dd><a href="http://www.w3.org/2013/N-TriplesTests/">http://www.w3.org/2013/N-TriplesTests/</a></dd>
+ <dt>Implementation report:</dt>
+ <dd><a href="https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html">https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html</a></dd>
+
<dt>Previous version:</dt>
- <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/WD-n-triples-20130905/">http://www.w3.org/TR/2013/WD-n-triples-20130905/</a></dd>
+ <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-n-triples-20130905/">http://www.w3.org/TR/2013/CR-n-triples-20130905/</a></dd>
- <dt>Editor:</dt>
+ <dt>Editors:</dt>
<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Gavin Carothers</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="https://lexmachina.com/">Lex Machina, Inc</a></span>
</dd>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Andy Seaborne</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.apache.org/">The Apache Software Foundation</a></span>
+</dd>
<dt>Author:</dt>
@@ -232,70 +237,78 @@
<hr>
</div>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">Abstract</h2><p>
+ <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2><p>
N-Triples is a line-based, plain text format for encoding an RDF graph.
-</p></section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">Status of This Document</h2>
+</p></section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
<p>
- <em>This section describes the status of this document at the time of its publication. Other
- documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
- of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
- index</a> at http://www.w3.org/TR/.</em>
+ <em>This section describes the status of this document at the time of its publication.
+ Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
+ latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
+ http://www.w3.org/TR/.</em>
</p>
N-Triples was originally defined as a syntax for
-the RDF Test Cases [<cite><a href="#bib-RDF-TESTCASES" class="bibref">RDF-TESTCASES</a></cite>] document. Due to its popularity
+the RDF Test Cases [<cite><a class="bibref" href="#bib-RDF-TESTCASES">RDF-TESTCASES</a></cite>] document. Due to its popularity
as an exchange format the <a href="http://www.w3.org/2011/rdf-wg/">RDF
Working Group</a> decided to publish an updated
version. In a change from previous publication, this document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
<p>
- This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Candidate Recommendation.
+ This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.
This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
- If you wish to make comments regarding this document, please send them to
- <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
- (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
- <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
- <abbr title="World Wide Web Consortium">W3C</abbr> publishes a Candidate Recommendation to indicate that the document is believed
- to be stable and to encourage implementation by the developer community. This
- Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than
- 26 November 2013.
+ The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited to review the document and
+ send comments to
+ <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
+ (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>)
+ through 01 December 2013. Advisory Committee Representatives should consult their
+ <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+ Note that substantive technical comments were expected during the Last Call review
+ period that ended 14 October 2013.
-
- All comments are welcome.</p>
-
+ </p>
<p>
- Publication as a Candidate Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
- This is a draft document and may be updated, replaced or obsoleted by other documents at
- any time. It is inappropriate to cite this document as other than work in progress.
+ Please see the Working Group's <a href="https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html">implementation
+ report</a>.
+ </p>
+
+
+ <p>
+ Publication as a Proposed Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
+ Membership. This is a draft document and may be updated, replaced or obsoleted by other
+ documents at any time. It is inappropriate to cite this document as other than work in
+ progress.
</p>
<p>
This document was produced by a group operating under the
-
- <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
+ <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent
+ Policy</a>.
- <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent
+ disclosures</a>
- made in connection with the deliverables of the group; that page also includes instructions for
- disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
- information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ made in connection with the deliverables of the group; that page also includes
+ instructions for disclosing a patent. An individual who has actual knowledge of a patent
+ which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
+ Claim(s)</a> must disclose the information in accordance with
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
@@ -304,16 +317,21 @@
-</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#sec-introduction"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#sec-n-triples-language"><span class="secno">2. </span>N-Triples Language</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#simple-triples"><span class="secno">2.1 </span>Simple Triples</a></li><li class="tocline"><a class="tocxref" href="#sec-iri"><span class="secno">2.2 </span>IRIs</a></li><li class="tocline"><a class="tocxref" href="#sec-literals"><span class="secno">2.3 </span>RDF Literals</a></li><li class="tocline"><a class="tocxref" href="#BNodes"><span class="secno">2.4 </span>RDF Blank Nodes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#n-triple-changes"><span class="secno">3. </span>Changes from RDF Test Cases format</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">4. </span>Conformance</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#n-triples-mediatype"><span class="secno">4.1 </span>Media Type and Content Encoding</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-other-media-types"><span class="secno">4.1.1 </span>Other Media Types</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#n-triples-grammar"><span class="secno">5. </span>Grammar</a></li><li class="tocline"><a class="tocxref" href="#sec-parsing"><span class="secno">6. </span>Parsing</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-parsing-terms"><span class="secno">6.1 </span>RDF Term Constructors</a></li><li class="tocline"><a class="tocxref" href="#rdf-triple-construction"><span class="secno">6.2 </span>RDF Triple Construction</a></li></ul></li><li class="tocline"><a class="tocxref" href="#section-ack"><span class="secno">7. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#sec-changes"><span class="secno">A. </span>Changes to this document</a></li><li class="tocline"><a class="tocxref" href="#sec-mediaReg-n-triples"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#sec-introduction" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#sec-n-triples-language" class="tocxref"><span class="secno">2. </span>N-Triples Language</a><ul class="toc"><li class="tocline"><a href="#simple-triples" class="tocxref"><span class="secno">2.1 </span>Simple Triples</a></li><li class="tocline"><a href="#sec-iri" class="tocxref"><span class="secno">2.2 </span>IRIs</a></li><li class="tocline"><a href="#sec-literals" class="tocxref"><span class="secno">2.3 </span>RDF Literals</a></li><li class="tocline"><a href="#BNodes" class="tocxref"><span class="secno">2.4 </span>RDF Blank Nodes</a></li></ul></li><li class="tocline"><a href="#n-triples-changes" class="tocxref"><span class="secno">3. </span>Changes from RDF Test Cases format</a></li><li class="tocline"><a href="#canonical-ntriples" class="tocxref"><span class="secno">4. </span>A Canonical form of N-Triples</a></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">5. </span>Conformance</a></li><li class="tocline"><a href="#n-triples-mediatype" class="tocxref"><span class="secno">6. </span>Media Type and Content Encoding</a><ul class="toc"><li class="tocline"><a href="#sec-other-media-types" class="tocxref"><span class="secno">6.1 </span>Other Media Types</a></li></ul></li><li class="tocline"><a href="#n-triples-grammar" class="tocxref"><span class="secno">7. </span>Grammar</a></li><li class="tocline"><a href="#sec-parsing" class="tocxref"><span class="secno">8. </span>Parsing</a><ul class="toc"><li class="tocline"><a href="#sec-parsing-terms" class="tocxref"><span class="secno">8.1 </span>RDF Term Constructors</a></li><li class="tocline"><a href="#rdf-triple-construction" class="tocxref"><span class="secno">8.2 </span>RDF Triple Construction</a></li></ul></li><li class="tocline"><a href="#section-ack" class="tocxref"><span class="secno">9. </span>Acknowledgements</a></li><li class="tocline"><a href="#sec-changes" class="tocxref"><span class="secno">A. </span>Changes to this document</a></li><li class="tocline"><a href="#sec-mediaReg-n-triples" class="tocxref"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
<!-- BEGIN N-TRIPLES SPEC -->
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-introduction">
- <!--OddPage--><h2 id="h2_sec-introduction" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2>
- <p>This document defines an easy to parse line-based subset of
- Turtle [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>] named N-Triples.</p>
- <p>The syntax is a revised version of N-Triples as originally defined in the RDF Test Cases [<cite><a href="#bib-RDF-TESTCASES" class="bibref">RDF-TESTCASES</a></cite>] document. Its original intent was for writing test cases, but it has proven to be popular as an exchange format for RDF data.</p>
+ <section id="sec-introduction" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-introduction"><span class="secno">1. </span>Introduction</h2>
+ <p>
+ This document defines N-Triples, a concrete syntax for
+ <a href="http://www.w3.org/TR/rdf11-concepts/">RDF</a> [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].
+ N-Triples is an easy to parse line-based subset of
+ Turtle [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>].
+ </p>
+
+ <p>The syntax is a revised version of N-Triples as originally defined in the RDF Test Cases [<cite><a class="bibref" href="#bib-RDF-TESTCASES">RDF-TESTCASES</a></cite>] document. Its original intent was for writing test cases, but it has proven to be popular as an exchange format for RDF data.</p>
<p>An N-Triples document contains no parsing directives.
</p>
<p>N-Triples triples are a sequence of RDF terms representing the subject, predicate and object of an RDF Triple. These may be separated by white space (spaces <code>U+0020</code> or tabs <code>U+0009</code>). This sequence is terminated by a '<code>.</code>' and a new line (optional at the end of a document).
@@ -329,33 +347,33 @@
N-Triples triples are also Turtle <a href="#simple-triples">simple triples</a>, but Turtle includes other representations of RDF terms and <a href="http://www.w3.org/TR/turtle/#predicate-lists">abbreviations of RDF Triples</a>. When parsed by a Turtle parser, data in the N-Triples format will produce exactly the same triples as a parser for the N-triples language.
</p>
<p>The RDF graph represented by an N-Triples document contains
- exactly each triple matching the N-Triples <a href="#grammar-production-triple"><code>triple</code></a>
+ exactly each triple matching the N-Triples
+ <a href="#grammar-production-triple"><code>triple</code></a>
production.
</p></section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-n-triples-language">
- <!--OddPage--><h2 id="h2_sec-n-triples-language" role="heading" aria-level="1"><span class="secno">2. </span>N-Triples Language</h2>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="simple-triples">
- <h3 id="h3_simple-triples" role="heading" aria-level="2"><span class="secno">2.1 </span>Simple Triples</h3>
+ <section id="sec-n-triples-language" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-n-triples-language"><span class="secno">2. </span>N-Triples Language</h2>
+ <section id="simple-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_simple-triples"><span class="secno">2.1 </span>Simple Triples</h3>
<p>The simplest triple statement is a sequence of (subject, predicate, object) terms, separated by whitespace and terminated by '<code>.</code>' after each triple.</p>
<div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><script type="application/n-triples"><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .</script></pre></div>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-iri">
- <h3 id="h3_sec-iri" role="heading" aria-level="2"><span class="secno">2.2 </span>IRIs</h3>
+ <section id="sec-iri" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-iri"><span class="secno">2.2 </span>IRIs</h3>
<p>
<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> may be written only as absolute IRIs.
IRIs are enclosed in '<code><</code>' and '<code>></code>' and may contain numeric escape sequences (described below). For example <code><http://example.org/#green-goblin></code>.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-literals">
- <h3 id="h3_sec-literals" role="heading" aria-level="2"><span class="secno">2.3 </span>RDF Literals</h3>
+ <section id="sec-literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-literals"><span class="secno">2.3 </span>RDF Literals</h3>
<p><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</a>
are used to identify values such as strings, numbers,
dates.</p>
-
<p>
Literals (Grammar production <a href="#grammar-production-literal">Literal</a>) have a lexical form followed by a language tag, a datatype IRI, or neither.
The representation of the lexical form consists of an
@@ -374,8 +392,8 @@
<http://en.wikipedia.org/wiki/Helium> <http://example.org/elements/specificGravity> "1.663E-4"^^<http://www.w3.org/2001/XMLSchema#double> . # xsd:double
</script></pre></div>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="BNodes">
- <h3 id="h3_BNodes" role="heading" aria-level="2"><span class="secno">2.4 </span>RDF Blank Nodes</h3>
+ <section id="BNodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_BNodes"><span class="secno">2.4 </span>RDF Blank Nodes</h3>
<p>
<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">RDF blank nodes</a> in N-Triples are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized as follows:
@@ -395,55 +413,77 @@
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="n-triple-changes" class="informative">
- <!--OddPage--><h2 id="h2_n-triple-changes" role="heading" aria-level="1"><span class="secno">3. </span>Changes from RDF Test Cases format</h2><p><em>This section is non-normative.</em></p>
- <ul>
- <li>Encoding is UTF-8 rather than US-ASCII
- </li><li>Uses IRIs rather than RDF URI References
- </li><li>Defines a unique media type <code>application/n-triples</code>
- </li><li>Subset of Turtle rather than Notation 3
- </li><li>Comments may occur after a triple production
- </li><li>Allows <code>\b</code> and <code>\f</code> for backspace and form feed
- </li><li>More than one way to represent a single character
- </li><li>Blank node labels may start with a digit
- </li></ul>
- </section>
+ <section id="n-triples-changes" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-changes"><span class="secno">3. </span>Changes from RDF Test Cases format</h2><p><em>This section is non-normative.</em></p>
+ <ul>
+ <li>Encoding is UTF-8 rather than US-ASCII
+ </li><li>Uses IRIs rather than RDF URI References
+ </li><li>Defines a unique media type <code>application/n-triples</code>
+ </li><li>Subset of Turtle rather than Notation 3
+ </li><li>Comments may occur after a triple production
+ </li><li>Allows <code>\b</code> and <code>\f</code> for backspace and form feed
+ </li><li>More than one way to represent a single character
+ </li><li>Blank node labels may start with a digit
+ </li></ul>
+ </section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="conformance"><!--OddPage--><h2 id="h2_conformance" role="heading" aria-level="1"><span class="secno">4. </span>Conformance</h2>
+ <section id="canonical-ntriples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_canonical-ntriples"><span class="secno">4. </span>A Canonical form of N-Triples</h2>
+ <p>This section defined a canonical form of N-Triples which has
+ less variability in layout. The grammar for the language is the
+ same. Implementers are encouraged to produce this form.</p>
+ <p>Canonical N-Triples has the following additional constraints on layout:</p>
+ <ul>
+ <li>The whitespace following <code>subject</code>,
+ <code>predicate</code>,
+ and <code>object</code> <em class="rfc2119" title="MUST">MUST</em> be a single space,
+ (<code>U+0020</code>). All other locations that allow
+ whitespace <em class="rfc2119" title="MUST">MUST</em> be empty.</li>
+ <li>There <em class="rfc2119" title="MUST">MUST</em> be no comments.</li>
+ <li><code>HEX</code> <em class="rfc2119" title="MUST">MUST</em> use only uppercase letters (<code>[A-F]</code>).</li>
+ <li>Characters <em class="rfc2119" title="MUST NOT">MUST NOT</em> be represented by <code>UCHAR</code>.</li>
+ <li>Within <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>,
+ only the characters
+ <code>U+0022</code>, <code>U+005C</code>, <code>U+000A</code>, <code>U+000D</code>
+ are encoded using <code>ECHAR</code>.
+ <code>ECHAR</code> <em class="rfc2119" title="MUST NOT">MUST NOT</em> be used for characters that are
+ allowed directly in
+ <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>. </li>
+ </ul>
+ </section>
+
+ <section id="conformance" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_conformance"><span class="secno">5. </span>Conformance</h2>
<p>
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
and notes in this specification are non-normative. Everything else in this specification is
normative.
</p>
<p>
- The key words <em title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>, <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>, <em title="MAY" class="rfc2119">MAY</em>,
- and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].
+ The key words <em class="rfc2119" title="MUST">MUST</em>, <em class="rfc2119" title="MUST NOT">MUST NOT</em>, <em class="rfc2119" title="REQUIRED">REQUIRED</em>, <em class="rfc2119" title="SHOULD">SHOULD</em>, <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em>, <em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em>, <em class="rfc2119" title="MAY">MAY</em>,
+ and <em class="rfc2119" title="OPTIONAL">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].
</p>
- <p>This specification defines conformance criteria for:</p>
- <ul>
- <li>N-Triple documents
- </li><li>Canonical N-Triple documents
- </li><li>N-Triple parsers
- </li></ul>
- <p>A conforming <dfn id="dfn-n-triple-document">N-Triple document</dfn> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#n-triples-grammar" class="sectionRef sec-ref">section <span class="secno">5.</span> <span class="sec-title">Grammar</span></a>, starting with the <a href="#grammar-production-ntriplesDoc"><code>ntriplesDoc</code> production</a>. A N-Triple document serializes an RDF graph.</p>
-
- <p>A <dfn id="dfn-canonical-n-triple-document">canonical N-Triple document</dfn> is a <strong>N-Triple document</strong> with additional constraints:</p><p>
+ <p>This specification defines conformance criteria for:</p>
+ <ul>
+ <li>N-Triples documents
+ </li><li>Canonical N-Triples documents
+ </li><li>N-Triples parsers
+ </li></ul>
- </p><ul>
- <li>Whitespace following <code>subject</code>, <code>predicate</code>, and <code>object</code> <em title="MUST" class="rfc2119">MUST</em> be a single space, (<code>U+0020</code>) all other locations that allow whitespace <em title="MUST" class="rfc2119">MUST</em> be empty.
- </li><li>All comments <em title="MUST" class="rfc2119">MUST</em> be removed.
- </li><li><code>HEX</code> <em title="MUST" class="rfc2119">MUST</em> use only uppercase letters (<code>[A-F]</code>).
- </li><li>Characters not allowed directly in STRING_LITERAL_QUOTE (<code>U+0022</code>, <code>U+005C</code>, <code>U+000A</code>, <code>U+000D</code>) <em title="MUST" class="rfc2119">MUST</em> use <code>ECHAR</code> not <code>UCHAR</code>.
- </li><li>Characters <em title="MUST" class="rfc2119">MUST</em> be represented directly and not by <code>UCHAR</code>.
- </li></ul>
+ <p>A conforming <dfn id="dfn-n-triples-document">N-Triples document</dfn> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#n-triples-grammar" class="sectionRef sec-ref">section <span class="secno">7.</span> <span class="sec-title">Grammar</span></a>, starting with the <a href="#grammar-production-ntriplesDoc"><code>ntriplesDoc</code> production</a>. An N-Triples document serializes an RDF graph.</p>
- <p>A conforming <dfn id="dfn-n-triple-parser">N-Triple parser</dfn> is a system capable of reading N-Triple documents on behalf of an application. It makes the serialized RDF graph, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">6.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
+ <p>A conforming <dfn id="dfn-canonical-n-triples-document">Canonical N-Triples document</dfn> is an
+ <strong>N-Triples document</strong> that follows the
+ <a href="#canonical-ntriples">additional constraints</a> of Canonical N-Triples.</p>
- <p>The IRI that identifies the N-Triple language is: <code>http://www.w3.org/ns/formats/N-Triples</code></p>
+ <p>A conforming <dfn id="dfn-n-triples-parser">N-Triples parser</dfn> is a system capable of reading N-Triples documents on behalf of an application. It makes the serialized RDF graph, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">8.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="n-triples-mediatype">
- <h3 id="h3_n-triples-mediatype" role="heading" aria-level="2"><span class="secno">4.1 </span>Media Type and Content Encoding</h3>
+ <p>The IRI that identifies the N-Triples language is:
+<code>http://www.w3.org/ns/formats/N-Triples</code></p>
+ </section>
+
+ <section id="n-triples-mediatype" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-mediatype"><span class="secno">6. </span>Media Type and Content Encoding</h2>
<p>The media type of N-Triples is <code>application/n-triples</code>.
The content encoding of N-Triples is always UTF-8.
@@ -451,24 +491,31 @@
registration form.
</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-other-media-types">
- <h4 id="h4_sec-other-media-types" role="heading" aria-level="3"><span class="secno">4.1.1 </span>Other Media Types</h4>
- <p>N-Triples has been historically provided with other media types. N-Triples may also be provided as <code>text/plain</code>. When used in this way N-Triples <em title="MUST" class="rfc2119">MUST</em> use the escaped form of any character outside US-ASCII. As N-Triples is a subset of Turtle a N-Triples document <em title="MAY" class="rfc2119">MAY</em> also be provided as <code>text/turtle</code>. In both of these cases the document is not an N-Triples document as an N-Triples document is only provided as <code>application/n-triples</code>.</p>
+ <section id="sec-other-media-types" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-other-media-types"><span class="secno">6.1 </span>Other Media Types</h3>
+ <p>N-Triples has been historically provided with other media types. N-Triples may also be provided as <code>text/plain</code>. When used in this way N-Triples <em class="rfc2119" title="MUST">MUST</em> use the escaped form of any character outside US-ASCII. As N-Triples is a subset of Turtle an N-Triples document <em class="rfc2119" title="MAY">MAY</em> also be provided as <code>text/turtle</code>. In both of these cases the document is not an N-Triples document as an N-Triples document is only provided as <code>application/n-triples</code>.</p>
</section>
</section>
- </section>
+
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="n-triples-grammar">
- <!--OddPage--><h2 id="h2_n-triples-grammar" role="heading" aria-level="1"><span class="secno">5. </span>Grammar</h2>
- <p>A N-Triples document is a Unicode [<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>] character string encoded in UTF-8.
+ <section id="n-triples-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-grammar"><span class="secno">7. </span>Grammar</h2>
+ <p>An N-Triples document is a Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>] character string encoded in UTF-8.
Unicode code points only in the range U+0 to U+10FFFF inclusive are allowed.</p>
<p>White space (tab <code>U+0009</code> or space <code>U+0020</code>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. White space is significant in the production <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>.</p>
- <p>Comments in N-Triples take the form of '<code>#</code>', outside an <code>IRIREF</code> or <code>STRING_LITERAL_QUOTE</code>, and continue to the end of line (<code>EOL</code>) or end of file if there is no end of line after the comment marker. Comments are treated as white space.</p>
- <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0
- [<cite><a href="#bib-EBNF-NOTATION" class="bibref">EBNF-NOTATION</a></cite>].</p>
+ <p>Comments in N-Triples take the form of '<code>#</code>',
+ outside an <code>IRIREF</code> or <code>STRING_LITERAL_QUOTE</code>, and continue
+ upto, and excluding, the end of line (<code>EOL</code>),
+ or end of file if there is no end of line after the comment
+ marker. Comments are treated as white space.</p>
+
+ <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used
+ here is defined in XML 1.0
+ [<cite><a class="bibref" href="#bib-EBNF-NOTATION">EBNF-NOTATION</a></cite>].</p>
+
<p>Escape sequence rules are the same as Turtle
- [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. However, as only the <a href="#grammar-production-STRING_LITERAL_QUOTE"><code>STRING_LITERAL_QUOTE</code></a> production is allowed new lines in literals <em title="MUST" class="rfc2119">MUST</em> be escaped.</p>
+ [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. However, as only the <a href="#grammar-production-STRING_LITERAL_QUOTE"><code>STRING_LITERAL_QUOTE</code></a> production is allowed new lines in literals <em class="rfc2119" title="MUST">MUST</em> be escaped.</p>
<div><table class="grammar">
<tbody class="grammar-productions">
<tr id="grammar-production-ntriplesDoc" data-grammar-original="[1] ntriplesDoc ::= triple? (EOL triple)* EOL?" data-grammar-expression="(',', [('?', ('id', 'triple')), ('*', (',', [('id', 'EOL'), ('id', 'triple')])), ('?', ('id', 'EOL'))])">
@@ -520,7 +567,7 @@
<td>::=</td>
<td>[<code class="grammar-chars">#xD#xA</code>]<code class="grammar-plus">+</code></td>
</tr>
- <tr id="grammar-production-IRIREF" data-grammar-original="[8] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
+ <tr id="grammar-production-IRIREF" data-grammar-original="[8] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
<td>[8]</td>
<td><code>IRIREF</code></td>
<td>::=</td>
@@ -544,11 +591,11 @@
<td>::=</td>
<td>'<code class="grammar-literal">\u</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <code>| </code> '<code class="grammar-literal">\U</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
</tr>
- <tr id="grammar-production-ECHAR" data-grammar-original="[153s] ECHAR ::= "\" [tbnrf"']" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf"\'')])" class="grammar-token">
+ <tr id="grammar-production-ECHAR" data-grammar-original="[153s] ECHAR ::= "\" [tbnrf"\]" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf"\'')])" class="grammar-token">
<td>[153s]</td>
<td><code>ECHAR</code></td>
<td>::=</td>
- <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'</code>]</td>
+ <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'\</code>]</td>
</tr>
<tr id="grammar-production-PN_CHARS_BASE" data-grammar-original="[157s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#x00C0-#x00D6]| [#x00D8-#x00F6]| [#x00F8-#x02FF]| [#x0370-#x037D]| [#x037F-#x1FFF]| [#x200C-#x200D]| [#x2070-#x218F]| [#x2C00-#x2FEF]| [#x3001-#xD7FF]| [#xF900-#xFDCF]| [#xFDF0-#xFFFD]| [#x10000-#xEFFFF]" data-grammar-expression="('|', [('[', 'A-Z'), ('[', 'a-z'), ('[', '#x00C0-#x00D6'), ('[', '#x00D8-#x00F6'), ('[', '#x00F8-#x02FF'), ('[', '#x0370-#x037D'), ('[', '#x037F-#x1FFF'), ('[', '#x200C-#x200D'), ('[', '#x2070-#x218F'), ('[', '#x2C00-#x2FEF'), ('[', '#x3001-#xD7FF'), ('[', '#xF900-#xFDCF'), ('[', '#xFDF0-#xFFFD'), ('[', '#x10000-#xEFFFF')])" class="grammar-token">
<td>[157s]</td>
@@ -578,16 +625,16 @@
</div>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing">
- <!--OddPage--><h2 id="h2_sec-parsing" role="heading" aria-level="1"><span class="secno">6. </span>Parsing</h2>
+ <section id="sec-parsing" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-parsing"><span class="secno">8. </span>Parsing</h2>
<p>Parsing N-Triples requires a state of one item:</p>
<ul>
<li id="bnodeLabels">Map[string -> <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node.</li>
</ul>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing-terms">
- <h3 id="h3_sec-parsing-terms" role="heading" aria-level="2"><span class="secno">6.1 </span>RDF Term Constructors</h3>
- <p>This table maps productions and lexical tokens to <code>RDF terms</code> or components of <code>RDF terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">6.</span> <span class="sec-title">Parsing</span></a>:</p>
+ <section id="sec-parsing-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">8.1 </span>RDF Term Constructors</h3>
+ <p>This table maps productions and lexical tokens to <code>RDF terms</code> or components of <code>RDF terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">8.</span> <span class="sec-title">Parsing</span></a>:</p>
<table class="simple">
<thead>
<tr><th>production</th><th>type</th><th>procedure</th></tr>
@@ -602,28 +649,32 @@
</table>
</section>
<section id="rdf-triple-construction">
- <h3 id="h3_rdf-triple-construction" role="heading" aria-level="2"><span class="secno">6.2 </span>RDF Triple Construction</h3>
- <p>A N-Triple document defines an RDF graphs composed of a set of RDF triples. The <code><a href="#grammar-production-triple">triple</a></code> production produces a triple defined by the terms constructed for <code><a href="#grammar-production-subject">subject</a></code>, <code><a href="#grammar-production-predicate">predicate</a></code> and <code><a href="#grammar-production-object">object</a></code>.
+ <h3 aria-level="2" role="heading" id="h3_rdf-triple-construction"><span class="secno">8.2 </span>RDF Triple Construction</h3>
+ <p>An N-Triples document defines an RDF graphs composed of a set of RDF triples. The <code><a href="#grammar-production-triple">triple</a></code> production produces a triple defined by the terms constructed for <code><a href="#grammar-production-subject">subject</a></code>, <code><a href="#grammar-production-predicate">predicate</a></code> and <code><a href="#grammar-production-object">object</a></code>.
</p></section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="section-ack" class="informative">
- <!--OddPage--><h2 id="h2_section-ack" role="heading" aria-level="1"><span class="secno">7. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
- <p>The editor of the 2013 edition acknowledges valuable contributions from Gregg Kellogg, Andy Seaborn, Eric Prud'hommeaux, Dave Beckett, David Robillard, Gregory Williams, Pat Hayes, Richard Cyganiak, Henry S. Thompson, and David Booth.</p>
+ <section id="section-ack" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_section-ack"><span class="secno">9. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+ <p>The editor of the RDF 1.1 edition acknowledges valuable contributions from Gregg Kellogg, Eric Prud'hommeaux, Dave Beckett, David Robillard, Gregory Williams, Pat Hayes, Richard Cyganiak, Henry S. Thompson,
+Peter Ansell and David Booth.</p>
<p>This specification is a product of extended deliberations by the
<a href="http://www.w3.org/2000/09/dbwg/details?group=46168&public=1">members of the RDF Working Group</a>.
It draws upon the earlier specification in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">RDF Test Cases</a>, edited by Dave Beckett.</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-changes" class="appendix">
- <!--OddPage--><h2 id="h2_sec-changes" role="heading" aria-level="1"><span class="secno">A. </span>Changes to this document</h2><h2 id="generatedID">
+ <section id="sec-changes" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-changes"><span class="secno">A. </span>Changes to this document</h2><h2 id="generatedID">
</h2><h2 id="changes-since-last-publication-as-last-call-working-draft">Changes since last publication as Last Call Working Draft</h2>
- <p>No substitutive changes.</p>
+ <ul>
+ <li>The text for "Canonical N-Triples" has been made into a separate section.</li>
+ <li>A normative reference to RDF Concepts has been added</li>
+ </ul>
<h2 id="changes-since-original-publication-as-note">Changes since original publication as Note</h2>
<ul>
- <li>Conformance section now defines <a href="#dfn-canonical-n-triple-document">canonical N-Triple document</a>.
+ <li>Section defines <a href="#dfn-canonical-n-triples-document">canonical N-Triples document</a>.
</li><li>White space rules defined outside of grammar, as in Turtle.
</li><li>Comment processing defined.
</li><li>Parsing is defined.
@@ -632,8 +683,8 @@
</li></ul>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-mediaReg-n-triples" class="appendix">
- <!--OddPage--><h2 id="h2_sec-mediaReg-n-triples" role="heading" aria-level="1"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </h2>
+ <section id="sec-mediaReg-n-triples" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-mediaReg-n-triples"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </h2>
<dl>
<dt>Contact:</dt>
<dd>Eric Prud'hommeaux</dd>
@@ -659,16 +710,16 @@
<dd>None</dd>
<dt>Encoding considerations:</dt>
- <dd>The syntax of N-Triples is expressed over code points in Unicode [<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a href="#bib-UTF-8" class="bibref">UTF-8</a></cite>].</dd>
+ <dd>The syntax of N-Triples is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd>
<dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]</dd>
<dt>Security considerations:</dt>
- <dd>N-Triples is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
+ <dd>N-Triples is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
<dd>N-Triples is used to express arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on N-Triples documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information.</dd>
- <dd>N-Triples can express data which is presented to the user, for example, RDF Schema labels. Application rendering strings retrieved from untrusted N-Triples documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
+ <dd>N-Triples can express data which is presented to the user, for example, RDF Schema labels. Application rendering strings retrieved from untrusted N-Triples documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
<dd>N-Triples uses IRIs as term identifiers. Applications interpreting data expressed in N-Triples should address the security issues of
- <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8, as well as
- <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>] Section 7.</dd>
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8, as well as
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] Section 7.</dd>
<dd>Multiple IRIs may have the same appearance. Characters in different scripts may
look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed
@@ -679,9 +730,9 @@
Any person or application that is writing or interpreting data in Turtle must take care to use the IRI that matches the intended semantics, and avoid IRIs that make look similar.
Further information about matching of similar characters can be found
in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security
- Considerations</a> [<cite><a href="#bib-UNICODE-SECURITY" class="bibref">UNICODE-SECURITY</a></cite>] and
+ Considerations</a> [<cite><a class="bibref" href="#bib-UNICODE-SECURITY">UNICODE-SECURITY</a></cite>] and
<a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
- Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8.
+ Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8.
</dd>
<dt>Interoperability considerations:</dt>
@@ -713,8 +764,9 @@
</section>
-<section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="references" class="appendix"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">C. </span>References</h2><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">C.1 </span>Normative references</h3><dl about="" class="bibliography"><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">C. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
</dd><dt id="bib-RDF-TESTCASES">[RDF-TESTCASES]</dt><dd rel="dcterms:requires">jan grant; Dave Beckett. <a href="http://www.w3.org/TR/rdf-testcases"><cite>RDF Test Cases</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-testcases">http://www.w3.org/TR/rdf-testcases</a>
+</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-RFC3023">[RFC3023]</dt><dd rel="dcterms:requires">M. Murata; S. St.Laurent; D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types (RFC 3023)</cite></a>. January 2001. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a>
</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:requires">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
@@ -722,5 +774,5 @@
</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:requires">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">RDF 1.1 Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
</dd><dt id="bib-UNICODE">[UNICODE]</dt><dd rel="dcterms:requires"><a href="http://www.unicode.org/versions/latest/"><cite>The Unicode Standard</cite></a>. URL: <a href="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</a>
</dd><dt id="bib-UTF-8">[UTF-8]</dt><dd rel="dcterms:requires">F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a>
-</dd></dl></section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">C.2 </span>Informative references</h3><dl about="" class="bibliography"><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
</dd></dl></section></section></body></html>
\ No newline at end of file
--- a/drafts/trig/Overview.html Wed Dec 18 07:04:35 2013 -0800
+++ b/drafts/trig/Overview.html Wed Dec 18 07:11:03 2013 -0800
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:CR" about="" property="dcterms:language" content="en">
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
<head>
<title>RDF 1.1 TriG</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
@@ -222,22 +222,22 @@
}
-</style><link href="https://www.w3.org/StyleSheets/TR/W3C-CR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><script src="https://raw.github.com/darobin/respec/gh-pages/js/ui/save-html.js" data-requiremodule="ui/save-html" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script></head>
- <body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" class="head">
+</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><style type="text/css"></style><style type="text/css"></style><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body class="h-entry" style="zoom: 1;" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
<p>
- <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>
+ <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
</p>
<h1 class="title p-name" id="title" property="dcterms:title"><abbr title="Resource Description Framework">RDF</abbr> 1.1 TriG</h1>
<h2 property="bibo:subtitle" id="subtitle"><abbr title="Resource Description Framework">RDF</abbr> Dataset Language</h2>
- <h2 id="w3c-candidate-recommendation-19-september-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-09-19T07:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Candidate Recommendation <time class="dt-published" datetime="2013-09-19">19 September 2013</time></h2>
+ <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-01-07T08:00:00.000Z" id="w3c-proposed-recommendation-07-january-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2014-01-07">07 January 2014</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a class="u-url" href="http://www.w3.org/TR/2013/CR-trig-20130919/">http://www.w3.org/TR/2013/CR-trig-20130919/</a></dd>
+ <dd><a class="u-url" href="http://www.w3.org/TR/2014/PR-trig-20140107/">http://www.w3.org/TR/2014/PR-trig-20140107/</a></dd>
<dt>Latest published version:</dt>
<dd><a href="http://www.w3.org/TR/trig/">http://www.w3.org/TR/trig/</a></dd>
@@ -247,13 +247,16 @@
<dt>Test suite:</dt>
- <dd><a href="https://dvcs.w3.org/hg/rdf/file/default/trig/tests">https://dvcs.w3.org/hg/rdf/file/default/trig/tests</a></dd>
+ <dd><a href="http://www.w3.org/2013/TrigTests/">http://www.w3.org/2013/TrigTests/</a></dd>
+ <dt>Implementation report:</dt>
+ <dd><a href="https://dvcs.w3.org/hg/rdf/raw-file/default/trig/reports/index.html">https://dvcs.w3.org/hg/rdf/raw-file/default/trig/reports/index.html</a></dd>
+
<dt>Previous version:</dt>
- <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/WD-trig-20130919/">http://www.w3.org/TR/2013/WD-trig-20130919/</a></dd>
+ <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-trig-20131105/">http://www.w3.org/TR/2013/CR-trig-20131105/</a></dd>
<dt>Editors:</dt>
@@ -279,7 +282,7 @@
<p class="copyright">
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2010-2013
+ 2010-2014
<a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
@@ -299,7 +302,7 @@
<hr>
</div>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">Abstract</h2>
+ <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2>
<p>The Resource Description Framework
(<abbr title="Resource Description Framework">RDF</abbr>) is a
general-purpose language for representing information in the Web.</p>
@@ -308,72 +311,80 @@
that allows an <abbr title="Resource Description Framework">RDF</abbr> dataset to be completely written in a compact and
natural text form, with abbreviations for common usage patterns and
datatypes. TriG is an extension of the
- <a href="http://www.w3.org/TR/turtle/">Turtle</a> [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>] format.
+ <a href="http://www.w3.org/TR/turtle/">Turtle</a> [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>] format.
</p>
- </section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">Status of This Document</h2>
+ </section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
<p>
- <em>This section describes the status of this document at the time of its publication. Other
- documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
- of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
- index</a> at http://www.w3.org/TR/.</em>
+ <em>This section describes the status of this document at the time of its publication.
+ Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
+ latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
+ http://www.w3.org/TR/.</em>
</p>
<p>TriG is intended the meet the charter requirement of the
<a href="http://www.w3.org/2011/rdf-wg/"><abbr title="Resource Description Framework">RDF</abbr> Working Group</a> to
define an <abbr title="Resource Description Framework">RDF</abbr> syntax for multiple graphs. TriG is an extension of the
<a href="http://www.w3.org/TR/turtle/">Turtle</a>
-syntax for <abbr title="Resource Description Framework">RDF</abbr> [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. The current document is based on
+syntax for <abbr title="Resource Description Framework">RDF</abbr> [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. The current document is based on
the original proposal by Chris Bizer and Richard Cyganiak.</p>
<p>
- This document was published by the <a href="http://www.w3.org/2011/rdf-wg/"><abbr title="Resource Description Framework">RDF</abbr> Working Group</a> as a Candidate Recommendation.
+ This document was published by the <a href="http://www.w3.org/2011/rdf-wg/"><abbr title="Resource Description Framework">RDF</abbr> Working Group</a> as a Proposed Recommendation.
This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
- If you wish to make comments regarding this document, please send them to
- <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
- (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
- <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
- <abbr title="World Wide Web Consortium">W3C</abbr> publishes a Candidate Recommendation to indicate that the document is believed
- to be stable and to encourage implementation by the developer community. This
- Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than
- 26 November 2013.
+ The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited to review the document and
+ send comments to
+ <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
+ (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>)
+ through 04 February 2014. Advisory Committee Representatives should consult their
+ <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+ Note that substantive technical comments were expected during the Last Call review
+ period that ended 11 October 2013.
-
- All comments are welcome.</p>
-
+ </p>
<p>
- Publication as a Candidate Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
- This is a draft document and may be updated, replaced or obsoleted by other documents at
- any time. It is inappropriate to cite this document as other than work in progress.
+ Please see the Working Group's <a href="https://dvcs.w3.org/hg/rdf/raw-file/default/trig/reports/index.html">implementation
+ report</a>.
+ </p>
+
+
+ <p>
+ Publication as a Proposed Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
+ Membership. This is a draft document and may be updated, replaced or obsoleted by other
+ documents at any time. It is inappropriate to cite this document as other than work in
+ progress.
</p>
<p>
This document was produced by a group operating under the
-
- <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
+ <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent
+ Policy</a>.
- <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent
+ disclosures</a>
- made in connection with the deliverables of the group; that page also includes instructions for
- disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
- information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ made in connection with the deliverables of the group; that page also includes
+ instructions for disclosing a patent. An individual who has actual knowledge of a patent
+ which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
+ Claim(s)</a> must disclose the information in accordance with
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
@@ -382,21 +393,21 @@
-</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#sec-intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#sec-trig-intro"><span class="secno">2. </span>TriG Language</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-triple-statements"><span class="secno">2.1 </span>Triple Statements</a></li><li class="tocline"><a class="tocxref" href="#sec-graph-statements"><span class="secno">2.2 </span>Graph Statements</a></li><li class="tocline"><a class="tocxref" href="#other-terms"><span class="secno">2.3 </span>Other Terms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#terms-blanks-nodes"><span class="secno">2.3.1 </span>Special Considerations for Blank Nodes</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">3. </span>Conformance</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-mime"><span class="secno">3.1 </span>Media Type and Content Encoding</a></li></ul></li><li class="tocline"><a class="tocxref" href="#sec-grammar"><span class="secno">4. </span>TriG Grammar</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-grammar-ws"><span class="secno">4.1 </span>White Space</a></li><li class="tocline"><a class="tocxref" href="#sec-grammar-comments"><span class="secno">4.2 </span>Comments</a></li><li class="tocline"><a class="tocxref" href="#sec-iri-references"><span class="secno">4.3 </span>IRI References</a></li><li class="tocline"><a class="tocxref" href="#sec-escapes"><span class="secno">4.4 </span>Escape Sequences</a></li><li class="tocline"><a class="tocxref" href="#grammar-ebnf"><span class="secno">4.5 </span>Grammar</a></li></ul></li><li class="tocline"><a class="tocxref" href="#sec-parsing"><span class="secno">5. </span>Parsing</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#sec-parsing-state"><span class="secno">5.1 </span>Parser State</a></li><li class="tocline"><a class="tocxref" href="#sec-parsing-terms"><span class="secno">5.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</a></li><li class="tocline"><a class="tocxref" href="#sec-parsing-triples"><span class="secno">5.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Construction</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#output-graph"><span class="secno">5.3.1 </span>Output Graph</a></li><li class="tocline"><a class="tocxref" href="#triple-output"><span class="secno">5.3.2 </span>Triple Output</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#triple-production"><span class="secno">5.3.2.1 </span>Triple Production</a></li><li class="tocline"><a class="tocxref" href="#propertyList"><span class="secno">5.3.2.2 </span>Property Lists</a></li><li class="tocline"><a class="tocxref" href="#collection"><span class="secno">5.3.2.3 </span><span>Collections</span></a></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#sec-differences"><span class="secno">A. </span>Differences from Previous TriG</a></li><li class="tocline"><a class="tocxref" href="#sec-mediaReg"><span class="secno">B. </span>Media Type Registration</a></li><li class="tocline"><a class="tocxref" href="#sec-changes"><span class="secno">C. </span>Changes since the last publication of this document</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></section>
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#sec-intro" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#sec-trig-intro" class="tocxref"><span class="secno">2. </span>TriG Language</a><ul class="toc"><li class="tocline"><a href="#sec-triple-statements" class="tocxref"><span class="secno">2.1 </span>Triple Statements</a></li><li class="tocline"><a href="#sec-graph-statements" class="tocxref"><span class="secno">2.2 </span>Graph Statements</a></li><li class="tocline"><a href="#other-terms" class="tocxref"><span class="secno">2.3 </span>Other Terms</a><ul class="toc"><li class="tocline"><a href="#terms-blanks-nodes" class="tocxref"><span class="secno">2.3.1 </span>Special Considerations for Blank Nodes</a></li></ul></li></ul></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">3. </span>Conformance</a><ul class="toc"><li class="tocline"><a href="#sec-mime" class="tocxref"><span class="secno">3.1 </span>Media Type and Content Encoding</a></li></ul></li><li class="tocline"><a href="#sec-grammar" class="tocxref"><span class="secno">4. </span>TriG Grammar</a><ul class="toc"><li class="tocline"><a href="#sec-grammar-ws" class="tocxref"><span class="secno">4.1 </span>White Space</a></li><li class="tocline"><a href="#sec-grammar-comments" class="tocxref"><span class="secno">4.2 </span>Comments</a></li><li class="tocline"><a href="#sec-iri-references" class="tocxref"><span class="secno">4.3 </span>IRI References</a></li><li class="tocline"><a href="#sec-escapes" class="tocxref"><span class="secno">4.4 </span>Escape Sequences</a></li><li class="tocline"><a href="#grammar-ebnf" class="tocxref"><span class="secno">4.5 </span>Grammar</a></li></ul></li><li class="tocline"><a href="#sec-parsing" class="tocxref"><span class="secno">5. </span>Parsing</a><ul class="toc"><li class="tocline"><a href="#sec-parsing-state" class="tocxref"><span class="secno">5.1 </span>Parser State</a></li><li class="tocline"><a href="#sec-parsing-terms" class="tocxref"><span class="secno">5.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</a></li><li class="tocline"><a href="#sec-parsing-triples" class="tocxref"><span class="secno">5.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Construction</a><ul class="toc"><li class="tocline"><a href="#output-graph" class="tocxref"><span class="secno">5.3.1 </span>Output Graph</a></li><li class="tocline"><a href="#triple-output" class="tocxref"><span class="secno">5.3.2 </span>Triple Output</a><ul class="toc"><li class="tocline"><a href="#triple-production" class="tocxref"><span class="secno">5.3.2.1 </span>Triple Production</a></li><li class="tocline"><a href="#propertyList" class="tocxref"><span class="secno">5.3.2.2 </span>Property Lists</a></li><li class="tocline"><a href="#collection" class="tocxref"><span class="secno">5.3.2.3 </span><span>Collections</span></a></li></ul></li></ul></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">6. </span>Acknowledgements</a></li><li class="tocline"><a href="#sec-differences" class="tocxref"><span class="secno">A. </span>Differences from Previous TriG</a></li><li class="tocline"><a href="#sec-mediaReg" class="tocxref"><span class="secno">B. </span>Media Type Registration</a></li><li class="tocline"><a href="#sec-changes" class="tocxref"><span class="secno">C. </span>Changes since the last publication of this document</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-intro">
- <!--OddPage--><h2 id="h2_sec-intro" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2>
+ <section id="sec-intro" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-intro"><span class="secno">1. </span>Introduction</h2>
<p>This document defines TriG, a concrete syntax for <abbr title="Resource Description Framework">RDF</abbr> as defined in the
<abbr title="Resource Description Framework">RDF</abbr> Concepts and Abstract Syntax
- ([<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>]). TriG is an extension of
- <a href="http://www.w3.org/TR/turtle/">Turtle</a> ([<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]), extended
+ ([<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]). TriG is an extension of
+ <a href="http://www.w3.org/TR/turtle/">Turtle</a> ([<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]), extended
to support representing a complete <abbr title="Resource Description Framework">RDF</abbr> Dataset.
</p></section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-trig-intro" class="informative">
- <!--OddPage--><h2 id="h2_sec-trig-intro" role="heading" aria-level="1"><span class="secno">2. </span>TriG Language</h2><p><em>This section is non-normative.</em></p>
+ <section id="sec-trig-intro" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-trig-intro"><span class="secno">2. </span>TriG Language</h2><p><em>This section is non-normative.</em></p>
<p>A TriG document allows writing down an <abbr title="Resource Description Framework">RDF</abbr> Dataset in a compact
textual form. It consists of a sequence of directives, triple statements, graph statements which contain triple-generating statements and optional blank lines.
@@ -413,13 +424,13 @@
The construction of an <abbr title="Resource Description Framework">RDF</abbr> Dataset from a TriG document is defined in <a href="#sec-grammar" class="sectionRef">TriG Grammar</a> and <a href="#sec-parsing" class="sectionRef">Parsing</a>.
</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-triple-statements">
- <h3 id="h3_sec-triple-statements" role="heading" aria-level="2"><span class="secno">2.1 </span>Triple Statements</h3>
+ <section id="sec-triple-statements" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-triple-statements"><span class="secno">2.1 </span>Triple Statements</h3>
<p>As TriG is an extention of the Turtle language it allows for any constructs from the <a href="http://www.w3.org/TR/turtle/#language-features">Turtle language</a>. <a href="http://www.w3.org/TR/turtle/#simple-triples">Simple Triples</a>, <a href="http://www.w3.org/TR/turtle/#predicate-lists">Predicate Lists</a>, and <a href="http://www.w3.org/TR/turtle/#object-lists">Object Lists</a> can all be used either inside a graph statement, or on their own as in a Turtle document. When outside a graph statement, the triples are considered to be part of the default graph of the <abbr title="Resource Description Framework">RDF</abbr> Dataset.</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-graph-statements">
- <h3 id="h3_sec-graph-statements" role="heading" aria-level="2"><span class="secno">2.2 </span>Graph Statements</h3>
+ <section id="sec-graph-statements" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-graph-statements"><span class="secno">2.2 </span>Graph Statements</h3>
<p>A graph statement pairs an IRI or blank node with a <abbr title="Resource Description Framework">RDF</abbr> graph. The triple statements that make up the graph are enclosed in <code>{}</code>.</p>
@@ -496,11 +507,11 @@
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="other-terms">
- <h3 id="h3_other-terms" role="heading" aria-level="2"><span class="secno">2.3 </span>Other Terms</h3>
+ <section id="other-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_other-terms"><span class="secno">2.3 </span>Other Terms</h3>
<p>All other terms and directives come from Turtle.</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="terms-blanks-nodes">
- <h4 id="h4_terms-blanks-nodes" role="heading" aria-level="3"><span class="secno">2.3.1 </span>Special Considerations for Blank Nodes</h4>
+ <section id="terms-blanks-nodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h4 aria-level="3" role="heading" id="h4_terms-blanks-nodes"><span class="secno">2.3.1 </span>Special Considerations for Blank Nodes</h4>
<p>BlankNodes sharing the same label in differently labeled graph statements are considered to be the same BlankNode.</p>
</section>
</section>
@@ -508,15 +519,15 @@
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="conformance"><!--OddPage--><h2 id="h2_conformance" role="heading" aria-level="1"><span class="secno">3. </span>Conformance</h2>
+ <section id="conformance" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_conformance"><span class="secno">3. </span>Conformance</h2>
<p>
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
and notes in this specification are non-normative. Everything else in this specification is
normative.
</p>
<p>
- The key words <em title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>, <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>, <em title="MAY" class="rfc2119">MAY</em>,
- and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].
+ The key words <em class="rfc2119" title="MUST">MUST</em>, <em class="rfc2119" title="MUST NOT">MUST NOT</em>, <em class="rfc2119" title="REQUIRED">REQUIRED</em>, <em class="rfc2119" title="SHOULD">SHOULD</em>, <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em>, <em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em>, <em class="rfc2119" title="MAY">MAY</em>,
+ and <em class="rfc2119" title="OPTIONAL">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].
</p>
<p>This specification defines conformance criteria for:</p>
@@ -530,9 +541,9 @@
<p>The IRI that identifies the TriG language is: <code>http://www.w3.org/ns/formats/TriG</code></p>
- <div class="note"><div id="h_note_1" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">This specification does not define how TriG parsers handle non-conforming input documents.</p></div>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-mime">
- <h3 id="h3_sec-mime" role="heading" aria-level="2"><span class="secno">3.1 </span>Media Type and Content Encoding</h3>
+ <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_1"><span>Note</span></div><p class="">This specification does not define how TriG parsers handle non-conforming input documents.</p></div>
+ <section id="sec-mime" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-mime"><span class="secno">3.1 </span>Media Type and Content Encoding</h3>
<p>The media type of TriG is <code>application/trig</code>.
The content encoding of TriG content is always UTF-8.
@@ -540,23 +551,23 @@
</section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-grammar">
- <!--OddPage--><h2 id="h2_sec-grammar" role="heading" aria-level="1"><span class="secno">4. </span>TriG Grammar</h2>
+ <section id="sec-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-grammar"><span class="secno">4. </span>TriG Grammar</h2>
- <p>A TriG document is a Unicode[<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>] character string
+ <p>A TriG document is a Unicode[<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>] character string
encoded in UTF-8.
Unicode characters only in the range U+0000 to U+10FFFF inclusive are
allowed.
</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-grammar-ws">
- <h3 id="h3_sec-grammar-ws" role="heading" aria-level="2"><span class="secno">4.1 </span>White Space</h3>
+ <section id="sec-grammar-ws" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-grammar-ws"><span class="secno">4.1 </span>White Space</h3>
<p>White space (production <a href="#grammar-production-WS">WS</a>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. Rule names below in capitals indicate where white space is significant; these form a possible choice of terminals for constructing a TriG parser.</p>
<p>White space is significant in the production <a href="#grammar-production-String">String</a>.</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-grammar-comments">
- <h3 id="h3_sec-grammar-comments" role="heading" aria-level="2"><span class="secno">4.2 </span>Comments</h3>
+ <section id="sec-grammar-comments" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-grammar-comments"><span class="secno">4.2 </span>Comments</h3>
<p>Comments in TriG take the form of '#', outside an
@@ -566,12 +577,12 @@
marker. Comments are treated as white space.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-iri-references">
- <h3 id="h3_sec-iri-references" role="heading" aria-level="2"><span class="secno">4.3 </span>IRI References</h3>
+ <section id="sec-iri-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-iri-references"><span class="secno">4.3 </span>IRI References</h3>
<p>
- Relative IRIs are resolved with base IRIs as per <a href="http://www.ietf.org/rfc/rfc3986.txt" class="norm">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>] using only the basic algorithm in section 5.2.
+ Relative IRIs are resolved with base IRIs as per <a href="http://www.ietf.org/rfc/rfc3986.txt" class="norm">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] using only the basic algorithm in section 5.2.
Neither Syntax-Based Normalization nor Scheme-Based Normalization (described in sections 6.2.2 and 6.2.3 of RFC3986) are performed.
- Characters additionally allowed in IRI references are treated in the same way that unreserved characters are treated in URI references, per section 6.5 of <a href="http://www.ietf.org/rfc/rfc3987.txt" class="norm">Internationalized Resource Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>].
+ Characters additionally allowed in IRI references are treated in the same way that unreserved characters are treated in URI references, per section 6.5 of <a href="http://www.ietf.org/rfc/rfc3987.txt" class="norm">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].
</p>
<p>
The <code>@base</code> directive defines the Base IRI used to resolve relative IRIs per RFC3986 section 5.1.1, "Base URI Embedded in Content".
@@ -581,8 +592,8 @@
Each <code>@base</code> directive sets a new In-Scope Base URI, relative to the previous one.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-escapes">
- <h3 id="h3_sec-escapes" role="heading" aria-level="2"><span class="secno">4.4 </span>Escape Sequences</h3>
+ <section id="sec-escapes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-escapes"><span class="secno">4.4 </span>Escape Sequences</h3>
<p>
There are three forms of escapes used in TriG documents:
@@ -624,7 +635,7 @@
<p>where <a href="#rHEX">HEX</a> is a hexadecimal character</p>
<blockquote>
- <p><span style="font-family: monospace; font-size: 85%;">HEX
+ <p><span style="font-family: monospace; font-size: 85%;"><span id="rHEX">HEX</span>
::= [0-9] | [A-F] | [a-f]</span></p>
</blockquote>
@@ -731,16 +742,16 @@
</tr>
</tbody>
</table>
- <div class="note"><div id="h_note_2" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">%-encoded sequences are in the <a href="#grammar-production-IRIREF">character range for IRIs</a> and are <a href="#grammar-production-PERCENT">explicitly allowed</a> in local names. These appear as a '%' followed by two hex characters and represent that same sequence of three characters. These sequences are <em>not</em> decoded during processing. A term written as <code><http://a.example/%66oo-bar></code> in TriG designates the IRI <code>http://a.example/%66oo-bar</code> and not IRI <code>http://a.example/foo-bar</code>. A term written as <code>ex:%66oo-bar</code> with a prefix <code>@prefix ex: <http://a.example/></code> also designates the IRI <code>http://a.example/%66oo-bar</code>.</p></div>
+ <div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_2"><span>Note</span></div><p class="">%-encoded sequences are in the <a href="#grammar-production-IRIREF">character range for IRIs</a> and are <a href="#grammar-production-PERCENT">explicitly allowed</a> in local names. These appear as a '%' followed by two hex characters and represent that same sequence of three characters. These sequences are <em>not</em> decoded during processing. A term written as <code><http://a.example/%66oo-bar></code> in TriG designates the IRI <code>http://a.example/%66oo-bar</code> and not IRI <code>http://a.example/foo-bar</code>. A term written as <code>ex:%66oo-bar</code> with a prefix <code>@prefix ex: <http://a.example/></code> also designates the IRI <code>http://a.example/%66oo-bar</code>.</p></div>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="grammar-ebnf">
- <h3 id="h3_grammar-ebnf" role="heading" aria-level="2"><span class="secno">4.5 </span>Grammar</h3>
+ <section id="grammar-ebnf" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_grammar-ebnf"><span class="secno">4.5 </span>Grammar</h3>
<p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0
- [<cite><a href="#bib-EBNF-NOTATION" class="bibref">EBNF-NOTATION</a></cite>]. Production labels consisting of a number and a final 'g' are unique to TriG. All Production labels consisting of only a number reference the production with that number in the
+ [<cite><a class="bibref" href="#bib-EBNF-NOTATION">EBNF-NOTATION</a></cite>]. Production labels consisting of a number and a final 'g' are unique to TriG. All Production labels consisting of only a number reference the production with that number in the
<a href="http://www.w3.org/TR/turtle/">Turtle</a> grammar
-[<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/sparql11-query/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/sparql11-query/#sparqlGrammar">SPARQL Query Language for <abbr title="Resource Description Framework">RDF</abbr> grammar</a> [<cite><a href="#bib-RDF-SPARQL-QUERY" class="bibref">RDF-SPARQL-QUERY</a></cite>].
+[<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/sparql11-query/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/sparql11-query/#sparqlGrammar">SPARQL Query Language for <abbr title="Resource Description Framework">RDF</abbr> grammar</a> [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>].
</p>
@@ -820,11 +831,19 @@
<td>::=</td>
<td><a href="#grammar-production-labelOrSubject">labelOrSubject</a> (<a href="#grammar-production-wrappedGraph">wrappedGraph</a> <code>| </code> <a href="#grammar-production-predicateObjectList">predicateObjectList</a> '<code class="grammar-literal">.</code>')</td>
</tr>
- <tr id="grammar-production-triples2" data-grammar-original="[4g] triples2 ::=( blankNodePropertyList | collection ) predicateObjectList? '.'" data-grammar-expression="(',', [('|', [('id', 'blankNodePropertyList'), ('id', 'collection')]), ('?', ('id', 'predicateObjectList')), ("'", '.')])">
+<tr id="grammar-production-triples2" data-grammar-original="[4g] triples2 ::= blankNodePropertyList predicateObjectList? '.' | collection predicateObjectList '.' " data-grammar-expression="">
<td>[4g]</td>
<td><code>triples2</code></td>
<td>::=</td>
- <td>(<a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <code>| </code> <a href="#grammar-production-collection">collection</a>) <a href="#grammar-production-predicateObjectList">predicateObjectList</a>? '<code class="grammar-literal">.</code>'</td>
+
+ <td><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a>
+ <a href="#grammar-production-predicateObjectList">predicateObjectList</a>?
+ '<code class="grammar-literal">.</code>'
+ <code>| </code>
+ <a href="#grammar-production-collection">collection</a>
+ <a href="#grammar-production-predicateObjectList">predicateObjectList</a>
+ '<code class="grammar-literal">.</code>'
+ </td>
</tr>
<tr id="grammar-production-wrappedGraph" data-grammar-original="[5g] wrappedGraph ::='{' triplesBlock? '}'" data-grammar-expression="(',', [("'", '{'), ('?', ('id', 'triplesBlock')), ("'", '}')])">
<td>[5g]</td>
@@ -983,7 +1002,7 @@
<td><a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> <code>| </code> <a href="#grammar-production-ANON">ANON</a></td>
</tr>
<tr><td colspan="4"><h3 id="terminals">Productions for terminals</h3></td></tr>
- <tr id="grammar-production-IRIREF" data-grammar-original="[19] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
+ <tr id="grammar-production-IRIREF" data-grammar-original="[19] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
<td>[19]</td>
<td><code>IRIREF</code></td>
<td>::=</td>
@@ -1071,7 +1090,7 @@
<td>[159s]</td>
<td><code>ECHAR</code></td>
<td>::=</td>
- <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf\"'</code>]</td>
+ <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'\</code>]</td>
</tr>
<tr id="grammar-production-NIL" data-grammar-original="[160s] NIL ::= "(" WS* ")"" data-grammar-expression="(',', [("'", '('), ('*', ('id', 'WS')), ("'", ')')])" class="grammar-token">
<td>[160s]</td>
@@ -1151,19 +1170,19 @@
</section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing">
- <!--OddPage--><h2 id="h2_sec-parsing" role="heading" aria-level="1"><span class="secno">5. </span>Parsing</h2>
- <p>The <a href="http://www.w3.org/TR/rdf11-concepts"><abbr title="Resource Description Framework">RDF</abbr> Concepts and Abstract Syntax</a> ([<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>]) specification defines three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em>:
+ <section id="sec-parsing" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-parsing"><span class="secno">5. </span>Parsing</h2>
+ <p>The <a href="http://www.w3.org/TR/rdf11-concepts"><abbr title="Resource Description Framework">RDF</abbr> Concepts and Abstract Syntax</a> ([<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]) specification defines three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em>:
<a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri">IRIs</a>,
<a href="http://www.w3.org/TR/rdf11-concepts#dfn-literal">literals</a> and
<a href="http://www.w3.org/TR/rdf11-concepts#dfn-blank-node">blank nodes</a>.
- Literals are composed of a <a href="http://www.w3.org/TR/rdf11-concepts#dfn-lexical-form">lexical form</a> and an optional <a href="http://www.w3.org/TR/rdf11-concepts#dfn-language-tag">language tag</a> [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] or datatype IRI.
+ Literals are composed of a <a href="http://www.w3.org/TR/rdf11-concepts#dfn-lexical-form">lexical form</a> and an optional <a href="http://www.w3.org/TR/rdf11-concepts#dfn-language-tag">language tag</a> [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or datatype IRI.
An extra type, <code id="prefix" class="dfn">prefix</code>, is used during parsing to map string identifiers to namespace IRIs.
This section maps a string conforming to the grammar in <a href="#grammar-ebnf" class="sectionRef sec-ref">section <span class="secno">4.5</span> <span class="sec-title">Grammar</span></a> to a set of triples by mapping strings matching productions and lexical tokens to <abbr title="Resource Description Framework">RDF</abbr> terms or their components (e.g. language tags, lexical forms of literals). Grammar productions change the parser state and emit triples.</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing-state">
- <h3 id="h3_sec-parsing-state" role="heading" aria-level="2"><span class="secno">5.1 </span>Parser State</h3>
+ <section id="sec-parsing-state" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-state"><span class="secno">5.1 </span>Parser State</h3>
<p>Parsing TriG requires a state of six items:</p>
<ul>
@@ -1184,8 +1203,8 @@
</li>
</ul>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing-terms">
- <h3 id="h3_sec-parsing-terms" role="heading" aria-level="2"><span class="secno">5.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</h3>
+ <section id="sec-parsing-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">5.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</h3>
<p>This table maps productions and lexical tokens to <code><abbr title="Resource Description Framework">RDF</abbr> terms</code> or components of <code><abbr title="Resource Description Framework">RDF</abbr> terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">5.</span> <span class="sec-title">Parsing</span></a>:</p>
@@ -1197,7 +1216,7 @@
<tr id="handle-IRIREF"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-IRIREF">IRIREF </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri"> IRI </a></td><td>The characters between "<" and ">" are taken, with the <a href="#numeric">numeric escape sequences</a> unescaped, to form the unicode string of the IRI. Relative IRI resolution is performed per <a href="#sec-iri-references" class="sectionRef">Section 6.3</a>.</td></tr>
<tr id="handle-PNAME_NS"><td style="text-align:left;" rowspan="2"><a class="type string" href="#grammar-production-PNAME_NS">PNAME_NS </a></td><td><a href="#prefix"> prefix </a></td><td>When used in a <a href="#grammar-production-prefixID">prefixID</a> or <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> production, the <code>prefix</code> is the potentially empty unicode string matching the first argument of the rule is a key into the <a href="#namespaces">namespaces map</a>.</td></tr>
<tr id="handle-PNAME-IRI"> <td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri"> IRI </a></td><td>When used in a <a href="#grammar-production-PrefixedName">PrefixedName</a> production, the <code>iri</code> is the value in the <a href="#namespaces">namespaces map</a> corresponding to the first argument of the rule.</td></tr>
- <tr id="handle-PNAME_LN"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-PNAME_LN">PNAME_LN </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri"> IRI </a></td><td>A potentially empty <a href="#prefix">prefix</a> is identified by the first sequence, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> <em class="rfc2119"><em title="MUST" class="rfc2119">MUST</em></em> have a corresponding <code>namespace</code>. The unicode string of the IRI is formed by unescaping the <a href="#reserved">reserved characters</a> in the second argument, <code>PN_LOCAL</code>, and concatenating this onto the <code>namespace</code>.</td></tr>
+ <tr id="handle-PNAME_LN"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-PNAME_LN">PNAME_LN </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri"> IRI </a></td><td>A potentially empty <a href="#prefix">prefix</a> is identified by the first sequence, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> <em class="rfc2119"><em class="rfc2119" title="MUST">MUST</em></em> have a corresponding <code>namespace</code>. The unicode string of the IRI is formed by unescaping the <a href="#reserved">reserved characters</a> in the second argument, <code>PN_LOCAL</code>, and concatenating this onto the <code>namespace</code>.</td></tr>
<!-- tr id="handle-PrefixedName"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-PrefixedName" >PrefixedName </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-iri"> IRI </a></td><td>.</td></tr -->
<tr id="handle-STRING_LITERAL_SINGLE_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE">STRING_LITERAL_SINGLE_QUOTE </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost "'"s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
<tr id="handle-STRING_LITERAL_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost '"'s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
@@ -1218,16 +1237,16 @@
</table>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-parsing-triples">
- <h3 id="h3_sec-parsing-triples" role="heading" aria-level="2"><span class="secno">5.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Construction</h3>
+ <section id="sec-parsing-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-triples"><span class="secno">5.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Construction</h3>
<p>
A TriG document defines an <a href="http://www.w3.org/TR/rdf11-concepts/#section-dataset"><abbr title="Resource Description Framework">RDF</abbr> Dataset</a> composed of one default graph and zero or
more named graphs. Each graph is composed of a set of
<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple"><abbr title="Resource Description Framework">RDF</abbr> triple</a>s.
</p>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="output-graph">
- <h4 id="h4_output-graph" role="heading" aria-level="3"><span class="secno">5.3.1 </span>Output Graph</h4>
+ <section id="output-graph" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h4 aria-level="3" role="heading" id="h4_output-graph"><span class="secno">5.3.1 </span>Output Graph</h4>
<p>The state <code class="curGraph">curGraph</code> is
initially unset. It records the label of the graph for
triples produced during parsing. If undefined, the default
@@ -1265,7 +1284,7 @@
</p></section>
<section id="triple-output">
- <h4 id="h4_triple-output" role="heading" aria-level="3"><span class="secno">5.3.2 </span>Triple Output</h4>
+ <h4 aria-level="3" role="heading" id="h4_triple-output"><span class="secno">5.3.2 </span>Triple Output</h4>
<p>
Each <abbr title="Resource Description Framework">RDF</abbr> triple produced is added to <code class="curGraph">curGraph</code>,
or the default graph if <code class="curGraph">curGraph</code>
@@ -1284,7 +1303,7 @@
by <code class="curGraph">curGraph</code>.
</p>
<section id="triple-production">
- <h5 id="h5_triple-production" role="heading" aria-level="4" style="padding-bottom:0; margin-bottom:0;"><span class="secno">5.3.2.1 </span>Triple Production</h5>
+ <h5 style="padding-bottom:0; margin-bottom:0;" aria-level="4" role="heading" id="h5_triple-production"><span class="secno">5.3.2.1 </span>Triple Production</h5>
<p style="padding-top:0; margin-top:0;">
Each <a class="grammarRef" href="#grammar-production-object">object</a>
<code>N</code> in the document produces an <abbr title="Resource Description Framework">RDF</abbr> triple:
@@ -1292,16 +1311,16 @@
<code class="curPredicate">curPredicate</code> <code>N</code>.</span>
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="propertyList">
- <h5 id="h5_propertyList" role="heading" aria-level="4" style="padding-bottom:0; margin-bottom:0;"><span class="secno">5.3.2.2 </span>Property Lists</h5>
+ <section id="propertyList" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h5 style="padding-bottom:0; margin-bottom:0;" aria-level="4" role="heading" id="h5_propertyList"><span class="secno">5.3.2.2 </span>Property Lists</h5>
<p style="padding-top:0; margin-top:0;">
Beginning the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>, and sets <code class="curSubject">curSubject</code> to a novel <code>blank node</code> <code>B</code>.
Finishing the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
The node produced by matching <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> is the blank node <code>B</code>.
</p>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="collection">
- <h5 id="h5_collection" role="heading" aria-level="4" style="padding-bottom:0; margin-bottom:0;"><span class="secno">5.3.2.3 </span><span>Collections</span></h5>
+ <section id="collection" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h5 style="padding-bottom:0; margin-bottom:0;" aria-level="4" role="heading" id="h5_collection"><span class="secno">5.3.2.3 </span><span>Collections</span></h5>
<p style="padding-top:0; margin-top:0;">
Beginning the <code><a href="#grammar-production-collection">collection</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
Each <code>object</code> in the <code><a href="#grammar-production-collection">collection</a></code> production has a <code class="curSubject">curSubject</code> set to a novel <code>blank node</code> <code>B</code> and a <code class="curPredicate">curPredicate</code> set to <code>rdf:first</code>.
@@ -1314,13 +1333,26 @@
</section>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-differences" class="appendix informative">
- <!--OddPage--><h2 id="h2_sec-differences" role="heading" aria-level="1"><span class="secno">A. </span>Differences from Previous TriG</h2><p><em>This section is non-normative.</em></p>
+
+<section id="acknowledgements" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_acknowledgements"><span class="secno">6. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+ <p>The editors gratefully acknowledge the work of Chris Bizer and
+ Richard Cyganiak in creating the original TriG specification.
+ Valuable contributions to this version were made by Gregg Kellogg, Eric
+ Prud'hommeaux and Sandro Hawke and all
+ <a href="http://www.w3.org/2000/09/dbwg/details?group=46168&public=1">members of the <abbr title="Resource Description Framework">RDF</abbr> Working Group</a>.</p>
+ <p>The document was improved through the review process by the wider community.</p>
+</section>
+
+
+
+ <section id="sec-differences" class="appendix informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-differences"><span class="secno">A. </span>Differences from Previous TriG</h2><p><em>This section is non-normative.</em></p>
<p>This section describes the main differences between TriG, as
defined in this document, and earlier forms.
</p><ul>
<li>Syntax is aligned to the
- <a href="http://www.w3.org/TR/turtle/">Turtle</a> [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>] recommendation
+ <a href="http://www.w3.org/TR/turtle/">Turtle</a> [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>] recommendation
for <abbr title="Resource Description Framework">RDF</abbr> terms.</li>
<li>Graph labels can be blank nodes.</li>
<li>The default graph, or sections of the default graph, do not
@@ -1332,13 +1364,13 @@
for that graph to be included in the resulting graph.
Sections with the same label are combined by set union.</li>
<li>Keywords <code>BASE</code>,
- <code>PREFIX</code> as in [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>].</li>
+ <code>PREFIX</code> as in [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>].</li>
<li>The optional <code>GRAPH</code> keyword is allowed to aid
SPARQL alignment.
</li></ul>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-mediaReg" class="appendix">
- <!--OddPage--><h2 id="h2_sec-mediaReg" role="heading" aria-level="1"><span class="secno">B. </span>Media Type Registration</h2>
+ <section id="sec-mediaReg" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-mediaReg"><span class="secno">B. </span>Media Type Registration</h2>
<dl>
<dt>Contact:</dt>
<dd>Eric Prud'hommeaux</dd>
@@ -1364,16 +1396,16 @@
<dd>None</dd>
<dt>Encoding considerations:</dt>
- <dd>The syntax of TriG is expressed over code points in Unicode [<cite><a href="#bib-UNICODE" class="bibref">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a href="#bib-UTF-8" class="bibref">UTF-8</a></cite>].</dd>
+ <dd>The syntax of TriG is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd>
<dd>Unicode code points may also be expressed using an \uXXXX (U+0000 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-Fa-f]</dd>
<dt>Security considerations:</dt>
- <dd>TriG is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
+ <dd>TriG is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
<dd>TriG is used to express arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on TriG documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information.</dd>
- <dd>TriG can express data which is presented to the user, for example, <abbr title="Resource Description Framework">RDF</abbr> Schema labels. Application rendering strings retrieved from untrusted TriG documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a href="#bib-RFC3023" class="bibref">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
+ <dd>TriG can express data which is presented to the user, for example, <abbr title="Resource Description Framework">RDF</abbr> Schema labels. Application rendering strings retrieved from untrusted TriG documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
<dd>TriG uses IRIs as term identifiers. Applications interpreting data expressed in TriG should address the security issues of
- <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8, as well as
- <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>] Section 7.</dd>
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8, as well as
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] Section 7.</dd>
<dd>Multiple IRIs may have the same appearance. Characters in different scripts may
look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed
@@ -1384,9 +1416,9 @@
Any person or application that is writing or interpreting data in TriG must take care to use the IRI that matches the intended semantics, and avoid IRIs that make look similar.
Further information about matching of similar characters can be found
in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security
- Considerations</a> [<cite><a href="#bib-UNICODE-SECURITY" class="bibref">UNICODE-SECURITY</a></cite>] and
+ Considerations</a> [<cite><a class="bibref" href="#bib-UNICODE-SECURITY">UNICODE-SECURITY</a></cite>] and
<a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
- Identifiers (IRIs)</a> [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] Section 8.</dd>
+ Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8.</dd>
<dt>Interoperability considerations:</dt>
<dd>There are no known interoperability issues.</dd>
@@ -1421,22 +1453,54 @@
</dl>
</section>
- <section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="sec-changes" class="appendix">
- <!--OddPage--><h2 id="h2_sec-changes" role="heading" aria-level="1"><span class="secno">C. </span>Changes since the last publication of this document</h2>
- <ul>
- <li>The "Features at risk" (uses of <code>GRAPH</code>, default
- graph triple with enclosing
- <code>{</code>...<code>}</code>)
- have been accepted by the Working Group and been incorporated into
- the document.
- </li>
- </ul>
+ <section id="sec-changes" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-changes"><span class="secno">C. </span>Changes since the last publication of this document</h2>
+ <p>A bug in the grammar in rule 4g has been corrected.</p>
+
+ <table class="grammar">
+ <tbody class="grammar-productions">
+ <tr>
+ <td>[4g]</td>
+ <td><code>triples2</code></td>
+ <td>::=</td>
+ <td><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a>
+ <a href="#grammar-production-predicateObjectList">predicateObjectList</a>?
+ '<code class="grammar-literal">.</code>'
+ <code>| </code>
+ <a href="#grammar-production-collection">collection</a>
+ <a href="#grammar-production-predicateObjectList">predicateObjectList</a>
+ '<code class="grammar-literal">.</code>'
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>The old rule was:</p>
+
+ <table class="grammar">
+ <tbody class="grammar-productions">
+ <tr>
+ <td>[4g]</td>
+ <td><code>triples2</code></td>
+ <td>::=</td>
+ <td>(<a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <code>| </code> <a href="#grammar-production-collection">collection</a>) <a href="#grammar-production-predicateObjectList">predicateObjectList</a>?
+ '<code class="grammar-literal">.</code>'
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>The effect of this change is to not allow as a TriG document:</p>
+ <pre> (1 2 3) .
+ </pre>
+ and
+ <pre> () .
+ </pre>
+ <p> which are not legal Turtle documents.</p>
</section>
-
-
-<section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="references" class="appendix"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">D. </span>References</h2><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">D.1 </span>Normative references</h3><dl about="" class="bibliography"><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a>. September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">D. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">D.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a>. September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
</dd><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
@@ -1446,6 +1510,6 @@
</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:requires">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">RDF 1.1 Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
</dd><dt id="bib-UNICODE">[UNICODE]</dt><dd rel="dcterms:requires"><a href="http://www.unicode.org/versions/latest/"><cite>The Unicode Standard</cite></a>. URL: <a href="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</a>
</dd><dt id="bib-UTF-8">[UTF-8]</dt><dd rel="dcterms:requires">F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a>
-</dd></dl></section><section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">D.2 </span>Informative references</h3><dl about="" class="bibliography"><dt id="bib-RDF-SPARQL-QUERY">[RDF-SPARQL-QUERY]</dt><dd rel="dcterms:references">Eric Prud'hommeaux; Andy Seaborne. <a href="http://www.w3.org/TR/rdf-sparql-query/"><cite>SPARQL Query Language for RDF</cite></a>. 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-sparql-query/">http://www.w3.org/TR/rdf-sparql-query/</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">D.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-RDF-SPARQL-QUERY">[RDF-SPARQL-QUERY]</dt><dd rel="dcterms:references">Eric Prud'hommeaux; Andy Seaborne. <a href="http://www.w3.org/TR/rdf-sparql-query/"><cite>SPARQL Query Language for RDF</cite></a>. 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-sparql-query/">http://www.w3.org/TR/rdf-sparql-query/</a>
</dd><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
</dd></dl></section></section></body></html>
\ No newline at end of file
--- a/drafts/turtle/Overview.html Wed Dec 18 07:04:35 2013 -0800
+++ b/drafts/turtle/Overview.html Wed Dec 18 07:11:03 2013 -0800
@@ -1,47 +1,24 @@
<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document " about="" property="dcterms:language" content="en" version="XHTML+RDFa 1.0">
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
<head>
- <title>Turtle</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <style type="text/css"></style><style type="text/css"></style>
-
+ <title>RDF 1.1 N-Triples</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-
+ <style type="text/css"></style><style type="text/css"></style>
- <style type="text/css">
+ <style type="text/css">
/* Style Turtle script blocks to be visable */
pre.example script {
display:block;
+ overflow-x: auto;
}
- .separated { border-collapse:collapse; }
.separated thead tr th { border:1px solid black; padding: .2em; }
.separated tbody tr td { border:1px solid black; text-align: center; }
.separated tbody tr td.r { text-align: right; padding: .5em; }
- .grammar td { font-family: monospace; vertical-align: top; }
+ .grammar td { font-family: monospace;}
.grammar-literal { color: gray;}
- .atrisk {
- padding: 1em;
- margin: 1em 0em 0em;
- border: 1px solid #f00;
- background: #ffc;
-}
-
-/* .atrisk::before */
-.atrisktext
-{
- /* content: "Feature At Risk"; */
- display: block;
- width: 150px;
- margin: -1.5em 0 0.5em 0;
- font-weight: bold;
- border: 1px solid #f00;
- background: #fff;
- padding: 3px 1em;
-}
-
- </style>
-
- <style>/*****************************************************************
+ </style>
+ <style>/*****************************************************************
* ReSpec 3 CSS
* Robin Berjon - http://berjon.com/
*****************************************************************/
@@ -182,92 +159,53 @@
aside.example div.example div.example-title {
color: #999;
}
-</style><style>/* --- ISSUES/NOTES --- */
-div.issue-title, div.note-title {
- padding-right: 1em;
- min-width: 7.5em;
- color: #b9ab2d;
-}
-div.issue-title { color: #e05252; }
-div.note-title { color: #2b2; }
-div.issue-title span, div.note-title span {
- text-transform: uppercase;
-}
-div.note, div.issue {
- margin-top: 1em;
- margin-bottom: 1em;
-}
-.note > p:first-child, .issue > p:first-child { margin-top: 0 }
-.issue, .note {
- padding: .5em;
- border-left-width: .5em;
- border-left-style: solid;
-}
-div.issue, div.note {
- padding: 1em 1.2em 0.5em;
- margin: 1em 0;
- position: relative;
- clear: both;
-}
-span.note, span.issue { padding: .1em .5em .15em; }
-
-.issue {
- border-color: #e05252;
- background: #fbe9e9;
-}
-.note {
- border-color: #52e052;
- background: #e9fbe9;
-}
-
-
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-ED"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="ui/save-html" src="https://raw.github.com/darobin/respec/gh-pages/js/ui/save-html.js"></script></head>
-
- <body style="zoom: 1;" class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
+</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body style="zoom: 1;" class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
<p>
<a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
</p>
- <h1 class="title p-name" id="title" property="dcterms:title">Turtle</h1>
+ <h1 class="title p-name" id="title" property="dcterms:title">RDF 1.1 N-Triples</h1>
- <h2 property="bibo:subtitle" id="subtitle">Terse <abbr title="Resource Description Framework">RDF</abbr> Triple Language</h2>
+ <h2 property="bibo:subtitle" id="subtitle">A line-based syntax for an RDF graph</h2>
- <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-01-23T08:00:00.000Z" id="w3c-editor-s-draft-23-january-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2013-01-23">23 January 2013</time></h2>
+ <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T08:00:00.000Z" id="w3c-proposed-recommendation-05-november-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a class="u-url" href="http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html">http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html</a></dd>
+ <dd><a class="u-url" href="http://www.w3.org/TR/2013/PR-n-triples-20131105/">http://www.w3.org/TR/2013/PR-n-triples-20131105/</a></dd>
<dt>Latest published version:</dt>
- <dd><a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a></dd>
+ <dd><a href="http://www.w3.org/TR/n-triples/">http://www.w3.org/TR/n-triples/</a></dd>
<dt>Latest editor's draft:</dt>
- <dd><a href="http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html">http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html</a></dd>
+ <dd><a href="https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/n-triples.html">https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/n-triples.html</a></dd>
+ <dt>Test suite:</dt>
+ <dd><a href="http://www.w3.org/2013/N-TriplesTests/">http://www.w3.org/2013/N-TriplesTests/</a></dd>
+
+
+ <dt>Implementation report:</dt>
+ <dd><a href="https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html">https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html</a></dd>
+
-
-
+ <dt>Previous version:</dt>
+ <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-n-triples-20130905/">http://www.w3.org/TR/2013/CR-n-triples-20130905/</a></dd>
<dt>Editors:</dt>
- <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Eric Prud" hommeaux'="" href="http://www.w3.org/People/Eric/">Eric Prud'hommeaux</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a></span>
+ <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Gavin Carothers</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="https://lexmachina.com/">Lex Machina, Inc</a></span>
</dd>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gavin Carothers" href="http://gavin.carothers.name/">Gavin Carothers</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://lexmachina.com/">Lex Machina, Inc</a></span>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><span property="foaf:name" class="p-name fn">Andy Seaborne</span>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.apache.org/">The Apache Software Foundation</a></span>
</dd>
- <dt>Authors:</dt>
+ <dt>Author:</dt>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="David Beckett" href="http://www.dajobe.org/">David Beckett</a></span>
</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Tim Berners-Lee" href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Eric Prud" hommeaux'="" href="http://www.w3.org/People/Eric/">Eric Prud'hommeaux</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gavin Carothers" href="http://gavin.carothers.name/">Gavin Carothers</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://lexmachina.com/">Lex Machina, Inc</a></span>
-</dd>
@@ -279,7 +217,7 @@
<p class="copyright">
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2008-2013
+ 2001-2013
<a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
@@ -299,70 +237,78 @@
<hr>
</div>
- <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2>
- <p>The Resource Description Framework
- (<abbr title="Resource Description Framework">RDF</abbr>) is a
- general-purpose language for representing information in the Web.</p>
-
- <p>This document defines a textual syntax for <abbr title="Resource Description Framework">RDF</abbr> called Turtle
- that allows an <abbr title="Resource Description Framework">RDF</abbr> graph to be completely written in a compact and
- natural text form, with abbreviations for common usage patterns and
- datatypes. Turtle provides levels of compatibility with the existing
- <a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
- format as well as the triple pattern syntax of the
- <a href="http://www.w3.org/TR/sparql11-query/"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr></a>
- <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
- </p>
- </section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
+ <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2><p>
+ N-Triples is a line-based, plain text format for encoding an RDF graph.
+</p></section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
<p>
- <em>This section describes the status of this document at the time of its publication. Other
- documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
- of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
- index</a> at http://www.w3.org/TR/.</em>
+ <em>This section describes the status of this document at the time of its publication.
+ Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
+ latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
+ http://www.w3.org/TR/.</em>
</p>
-
+N-Triples was originally defined as a syntax for
+the RDF Test Cases [<cite><a class="bibref" href="#bib-RDF-TESTCASES">RDF-TESTCASES</a></cite>] document. Due to its popularity
+as an exchange format the <a href="http://www.w3.org/2011/rdf-wg/">RDF
+Working Group</a> decided to publish an updated
+version. In a change from previous publication, this document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
+
<p>
- This document was published by the <a href="http://www.w3.org/2011/rdf-wg/"><abbr title="Resource Description Framework">RDF</abbr> Working Group</a> as an Editor's Draft.
+ This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.
-
- If you wish to make comments regarding this document, please send them to
- <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
- (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
- <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
+ This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
- All comments are welcome.</p>
+ The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited to review the document and
+ send comments to
+ <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
+ (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>)
+ through 01 December 2013. Advisory Committee Representatives should consult their
+ <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+ Note that substantive technical comments were expected during the Last Call review
+ period that ended 14 October 2013.
+
+ </p>
<p>
- Publication as an Editor's Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
- This is a draft document and may be updated, replaced or obsoleted by other documents at
- any time. It is inappropriate to cite this document as other than work in progress.
+ Please see the Working Group's <a href="https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/reports-nt/index.html">implementation
+ report</a>.
+ </p>
+
+
+ <p>
+ Publication as a Proposed Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
+ Membership. This is a draft document and may be updated, replaced or obsoleted by other
+ documents at any time. It is inappropriate to cite this document as other than work in
+ progress.
</p>
<p>
This document was produced by a group operating under the
-
- <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
+ <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent
+ Policy</a>.
- <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent
+ disclosures</a>
- made in connection with the deliverables of the group; that page also includes instructions for
- disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
- <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
- information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ made in connection with the deliverables of the group; that page also includes
+ instructions for disclosing a patent. An individual who has actual knowledge of a patent
+ which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
+ Claim(s)</a> must disclose the information in accordance with
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
@@ -371,478 +317,142 @@
-</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#sec-intro" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#language-features" class="tocxref"><span class="secno">2. </span>Turtle Language</a><ul class="toc"><li class="tocline"><a href="#simple-triples" class="tocxref"><span class="secno">2.1 </span>Simple Triples</a></li><li class="tocline"><a href="#predicate-lists" class="tocxref"><span class="secno">2.2 </span>Predicate Lists</a></li><li class="tocline"><a href="#object-lists" class="tocxref"><span class="secno">2.3 </span>Object Lists</a></li><li class="tocline"><a href="#sec-iri" class="tocxref"><span class="secno">2.4 </span>IRIs</a></li><li class="tocline"><a href="#literals" class="tocxref"><span class="secno">2.5 </span><abbr title="Resource Description Framework">RDF</abbr> Literals</a><ul class="toc"><li class="tocline"><a href="#turtle-literals" class="tocxref"><span class="secno">2.5.1 </span>Quoted Literals</a></li><li class="tocline"><a href="#abbrev" class="tocxref"><span class="secno">2.5.2 </span>Numbers</a></li><li class="tocline"><a href="#booleans" class="tocxref"><span class="secno">2.5.3 </span>Booleans</a></li></ul></li><li class="tocline"><a href="#BNodes" class="tocxref"><span class="secno">2.6 </span><abbr title="Resource Description Framework">RDF</abbr> Blank Nodes</a></li><li class="tocline"><a href="#unlabeled-bnodes" class="tocxref"><span class="secno">2.7 </span>Nesting Unlabeled Blank Nodes in Turtle</a></li><li class="tocline"><a href="#collections" class="tocxref"><span class="secno">2.8 </span>Collections</a></li></ul></li><li class="tocline"><a href="#sec-examples" class="tocxref"><span class="secno">3. </span>Examples</a></li><li class="tocline"><a href="#sec-diff-sparql" class="tocxref"><span class="secno">4. </span>Turtle compared to <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr></a></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">5. </span>Conformance</a><ul class="toc"><li class="tocline"><a href="#sec-mime" class="tocxref"><span class="secno">5.1 </span>Media Type and Content Encoding</a></li></ul></li><li class="tocline"><a href="#sec-grammar" class="tocxref"><span class="secno">6. </span>Turtle Grammar</a><ul class="toc"><li class="tocline"><a href="#sec-grammar-ws" class="tocxref"><span class="secno">6.1 </span>White Space</a></li><li class="tocline"><a href="#sec-grammar-comments" class="tocxref"><span class="secno">6.2 </span>Comments</a></li><li class="tocline"><a href="#sec-iri-references" class="tocxref"><span class="secno">6.3 </span>IRI References</a></li><li class="tocline"><a href="#sec-escapes" class="tocxref"><span class="secno">6.4 </span>Escape Sequences</a></li><li class="tocline"><a href="#sec-grammar-grammar" class="tocxref"><span class="secno">6.5 </span>Grammar</a></li></ul></li><li class="tocline"><a href="#sec-parsing" class="tocxref"><span class="secno">7. </span>Parsing</a><ul class="toc"><li class="tocline"><a href="#sec-parsing-state" class="tocxref"><span class="secno">7.1 </span>Parser State</a></li><li class="tocline"><a href="#sec-parsing-terms" class="tocxref"><span class="secno">7.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</a></li><li class="tocline"><a href="#sec-parsing-triples" class="tocxref"><span class="secno">7.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Constructors</a></li><li class="tocline"><a href="#sec-parsing-example" class="tocxref"><span class="secno">7.4 </span>Parsing Example</a></li></ul></li><li class="tocline"><a href="#in-html" class="tocxref"><span class="secno">A. </span>Embedding Turtle in HTML documents</a><ul class="toc"><li class="tocline"><a href="#xhtml" class="tocxref"><span class="secno">A.1 </span>XHTML</a></li><li class="tocline"><a href="#in-html-parsing" class="tocxref"><span class="secno">A.2 </span>Parsing Turtle in HTML</a></li></ul></li><li class="tocline"><a href="#sec-mediaReg" class="tocxref"><span class="secno">B. </span>Internet Media Type, File Extension and Macintosh File Type</a></li><li class="tocline"><a href="#sec-acks" class="tocxref"><span class="secno">C. </span>Acknowledgements</a></li><li class="tocline"><a href="#sec-changelog" class="tocxref"><span class="secno">D. </span>Changes since the last publication of this document</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">E. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">E.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">E.2 </span>Informative references</a></li></ul></li></ul></section>
-
-
-
- <section id="sec-intro" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-intro"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
-
- <p>
- This document defines Turtle, the Terse <abbr title="Resource Description Framework">RDF</abbr> Triple Language, a concrete syntax for <a href="../rdf-concepts/index.html"><abbr title="Resource Description Framework">RDF</abbr></a> ([<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]).
- </p>
-
- <p>
- A Turtle document is a textual representations of an <abbr title="Resource Description Framework">RDF</abbr> graph. The following Turtle document describes the relationship between Green Goblin and Spiderman.
- </p>
- <div class="example"><div class="example-title"><span>Example 1</span></div><pre class="example"><span>@base <http://example.org/> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-@prefix rel: <http://www.perceive.net/schemas/relationship/> .
-
-<#green-goblin>
- rel:enemyOf <#spiderman> ;
- a foaf:Person ; # in the context of the Marvel universe
- foaf:name "Green Goblin" .
-
-<#spiderman>
- rel:enemyOf <#green-goblin> ;
- a foaf:Person ;
- foaf:name "Spiderman", "Человек-паук"@ru .</span></pre></div>
- <p>
- This example introduces many of features of the Turtle language:
-<a href="#relative-iris">@base and Relative IRIs</a>,
-<a href="#turtleIRIs">@prefix and prefixed names</a>,
-<a href="#predicate-lists">predicate lists</a> separated by '<code>;</code>',
-<a href="#object-lists">objects lists</a> separated by '<code>,</code>',
-the token <code><a href="#IRIs">a</a></code>,
-and <a href="#literals">literals</a>.
- </p>
-
- <p>
- The Turtle grammar for <a href="#grammar-production-triples"><code>triples</code></a> is a subset of the <a href="http://www.w3.org/TR/sparql11-query/"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> Query Language for <abbr title="Resource Description Framework">RDF</abbr></a> [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>] grammar for <a href="http://www.w3.org/TR/sparql11-query/#rTriplesBlock"><code>TriplesBlock</code></a>.
- The two grammars share production and terminal names where possible.
- </p>
-
- <p>
- The construction of an <abbr title="Resource Description Framework">RDF</abbr> graph from a Turtle document is defined in <a href="#sec-grammar" class="sectionRef">Turtle Grammar</a> and <a href="#sec-parsing" class="sectionRef">Parsing</a>.
- </p>
-
- </section>
- <section id="language-features" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_language-features"><span class="secno">2. </span>Turtle Language</h2><p><em>This section is non-normative.</em></p>
- <p>A Turtle document allows writing down an <abbr title="Resource Description Framework">RDF</abbr> graph in a compact textual form. An <abbr title="Resource Description Framework">RDF</abbr> graph is made up of <a href="../rdf-concepts/index.html#dfn-rdf-triple">triples</a> consisting of a subject, predicate and object.</p>
- <p>Comments may be given after a '<code>#</code>' that is not part of another lexical token and continue to the end of the line.</p>
- <section id="simple-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_simple-triples"><span class="secno">2.1 </span>Simple Triples</h3>
- <p>The simplest triple statement is a sequence of (subject, predicate, object) terms, separated by whitespace and terminated by '<code>.</code>' after each triple.</p>
- <div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><span><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .
- </span></pre></div>
- </section>
- <section id="predicate-lists" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_predicate-lists"><span class="secno">2.2 </span>Predicate Lists</h3>
- <p>Often the same subject will be referenced by a number of predicates. The <a href="#grammar-production-predicateObjectList">predicateObjectList production</a> matches a series of predicates and objects, separated by '<code>;</code>', following a subject.
- This expresses a series of <abbr title="Resource Description Framework">RDF</abbr> Triples with that subject and each predicate and object allocated to one triple.
- Thus, the '<code>;</code>' symbol is used to repeat the subject of triples that vary only in predicate and object <abbr title="Resource Description Framework">RDF</abbr> terms.</p>
- <p>These two examples are equivalent ways of writing the triples about Spiderman.</p>
- <div class="example"><div class="example-title"><span>Example 3</span></div><pre class="example"><span><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> ;
- <http://xmlns.com/foaf/0.1/name> "Spiderman" .
- </span></pre></div>
- <div class="example"><div class="example-title"><span>Example 4</span></div><pre class="example"><span><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .
-<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman" .
- </span></pre></div>
- </section>
- <section id="object-lists" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_object-lists"><span class="secno">2.3 </span>Object Lists</h3>
- <p>
- As with predicates often objects are repeated with the same subject and predicate. The <a href="#grammar-production-objectList">objectList production</a> matches a series of objects separated by '<code>,</code>' following a predicate.
- This expresses a series of <abbr title="Resource Description Framework">RDF</abbr> Triples with the corresponding subject and predicate and each object allocated to one triple.
- Thus, the '<code>,</code>' symbol is used to repeat the subject and predicate of triples that only differ in the object <abbr title="Resource Description Framework">RDF</abbr> term.</p>
- <p>These two examples are equivalent ways of writing Spiderman's name in two languages.</p><p>
- </p><div class="example"><div class="example-title"><span>Example 5</span></div><pre class="example"><span><http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman", "Человек-паук"@ru .
- </span></pre></div>
- <div class="example"><div class="example-title"><span>Example 6</span></div><pre class="example"><span><http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman" .
-<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Человек-паук"@ru .
- </span></pre></div>
-
- </section>
-
- <p>
- There are three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em> defined in <abbr title="Resource Description Framework">RDF</abbr> Concepts:
- <a href="../rdf-concepts/index.html#dfn-iri">IRIs</a> (Internationalized Resource Identifiers),
- <a href="../rdf-concepts/index.html#dfn-literal">literals</a> and
- <a href="../rdf-concepts/index.html#dfn-blank-node">blank nodes</a>. Turtle provides a number
- of ways of writing each.
- </p>
-
- <section id="sec-iri" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-iri"><span class="secno">2.4 </span>IRIs</h3>
-
- <p>
- <a href="../rdf-concepts/index.html#dfn-iri">IRIs</a> may be written as relative or absolute IRIs or prefixed names.
- Relative and absolute IRIs are enclosed in '<' and '>' and may contain <a href="#numeric">numeric escape sequences</a> (described below). For example <code><http://example.org/#green-goblin></code>.
- </p>
- <p>Relative IRIs like <code><#green-goblin></code> are resolved relative to the current base IRI. A new base IRI can be defined using the '<code>@base</code>' directive. Specifics of this operation are defined in <a href="#sec-iri-references" class="sectionRef sec-ref">section <span class="secno">6.3</span> <span class="sec-title">IRI References</span></a> </p>
- <p>
- The token '<code>a</code>' in the predicate position of a Turtle triple represents the IRI <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code> .
- </p>
-
- <p>
- A <em id="prefixed-name">prefixed name</em> is a prefix label and a local part, separated by a colon ":".
- A prefixed name is turned into an IRI by concatenating the IRI associated with the prefix and the local part. The '<code>@prefix</code>' directive associates a prefix label with an IRI.
- Subsequent '<code>@prefix</code>' directives may re-map the same prefix label. </p>
-
- <p>
- To write <code>http://www.perceive.net/schemas/relationship/enemyOf</code> using a prefixed name: </p>
- <ol>
- <li>Define a prefix label for the vocabulary IRI <code>http://www.perceive.net/schemas/relationship/</code> as <code>rel</code>
- </li><li>Then write <code>rel:enemyOf</code> which is equivalent to writing <code><http://www.perceive.net/schemas/relationship/enemyOf></code></li>
- </ol>
-
- <div class="example"><div class="example-title"><span>Example 7</span></div><pre class="example"><span>@prefix rel: <http://www.perceive.net/schemas/relationship/> .
-
-<http://example.org/#green-goblin> rel:enemyOf <http://example.org/#spiderman> .
- </span></pre></div>
-
-
- <div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_1"><span>Note</span></div><div class="">
- <p>
- Prefixed names are a superset of XML QNames.
- They differ in that the local part of prefixed names may include:
- </p>
- <ul>
- <li>leading digits, e.g. <code>leg:3032571</code> or <code>isbn13:9780136019701</code></li>
- <li>non leading colons, e.g. <code>og:video:height</code></li>
- <li><a href="#reserved">reserved character escape sequences</a>, e.g. <code>wgs:lat\-long</code></li>
- </ul>
- </div></div>
-
- <p>The following Turtle document contains examples of all the different ways of writing IRIs in Turtle.</p>
-
- <div class="example"><div class="example-title"><span>Example 8</span></div><pre class="example"><span># A triple with all absolute IRIs
-<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> .
-
-@base <http://one.example/> .
-<subject2> <predicate2> <object2> . # relative IRIs, e.g. http://one.example/subject2
-
-@prefix p: <http://two.example/> .
-p:subject3 p:predicate3 p:object3 . # prefixed name, e.g. http://two.example/subject3
-
-@prefix p: <path/> . # prefix p: now stands for http://one.example/path/
-p:subject4 p:predicate4 p:object4 . # prefixed name, e.g. http://one.example/path/subject4
-
-@prefix : <http://another.example/> . # empty prefix
-:subject5 :predicate5 :object5 . # prefixed name, e.g. http://another.example/subject5
-
-:subject6 a :subject7 . # same as :subject6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> :subject7 .
-
-<http://伝言.example/?user=أكرم&amp;channel=R%26D> a :subject8 . # a multi-script subject IRI .
-</span></pre></div>
- </section>
-
-
-
-
- <section id="literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_literals"><span class="secno">2.5 </span><abbr title="Resource Description Framework">RDF</abbr> Literals</h3>
-
- <p><a href="../rdf-concepts/index.html#dfn-literal">Literals</a> are used to identify values such as strings, numbers, dates.</p>
-
- <div class="example"><div class="example-title"><span>Example 9</span></div><pre class="example"><span>@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<http://example.org/#green-goblin> foaf:name "Green Goblin" .
-
-<http://example.org/#spiderman> foaf:name "Spiderman" .</span></pre></div>
-
-
- <section id="turtle-literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h4 aria-level="3" role="heading" id="h4_turtle-literals"><span class="secno">2.5.1 </span>Quoted Literals</h4>
-
- <p>
- Quoted Literals (Grammar production <a href="#grammar-production-RDFLiteral">RDFLiteral</a>) have a lexical form followed by a language tag, a datatype IRI, or neither.
- The representation of the lexical form consists of an initial delimiter, e.g. <code>"</code> (<span class="codepoint">U+0022</span>), a sequence of permitted characters or <a href="#numeric">numeric escape sequence</a> or <a href="#string">string escape sequence</a>, and a final delimiter.
- The corresponding <a href="../rdf-concepts/index.html#dfn-lexical-form"><abbr title="Resource Description Framework">RDF</abbr> lexical form</a> is the characters between the delimiters, after processing any escape sequences.
- If present, the <a href="../rdf-concepts/index.html#dfn-language-tagged-string">language tag</a> is preceded by a '<code>@</code>' (<span class="codepoint">U+0040</span>).
- If there is no language tag, there may be a <a href="../rdf-concepts/index.html#dfn-datatype-URI">datatype IRI</a>, preceeded by '<code>^^</code>' (<span class="codepoint">U+005E</span> <span class="codepoint">U+005E</span>). The datatype IRI in Turtle may be written using either an <a href="#sec-iri">absolute IRI</a>, a <a href="#sec-iri">relative IRI</a>, or <a href="#prefixed-name">prefixed name</a>. If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
- </p>
- <p>'<code>\</code>' (<span class="codepoint">U+005C</span>) may not appear in any quoted literal except as part of an escape sequence. Other restrictions depend on the delimiter:</p>
- <ul>
- <li>Literals delimited by <code>'</code> (<span class="codepoint">U+0027</span>), may not contain the characters <code>'</code>, <code title="LINE FEED"><sub>LF</sub></code> (<span class="codepoint">U+000A</span>), or <code title="CARRIAGE RETURN"><sub>CR</sub></code> (<span class="codepoint">U+000D</span>).
- </li><li>Literals delimited by <code>"</code>, may not contain the characters <code>"</code>, <code title="LINE FEED"><sub>LF</sub></code>, or <code title="CARRIAGE RETURN"><sub>CR</sub></code>.
- </li><li>Literals delimited by <code>'''</code> may not contain the sequence of characters <code>'''</code>.
- </li><li>Literals delimited by <code>"""</code> may not contain the sequence of characters <code>"""</code>.
- </li></ul>
- <div class="example"><div class="example-title"><span>Example 10</span></div><pre class="example"><span>@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix show: <http://example.org/vocab/show/> .
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#sec-introduction" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#sec-n-triples-language" class="tocxref"><span class="secno">2. </span>N-Triples Language</a><ul class="toc"><li class="tocline"><a href="#simple-triples" class="tocxref"><span class="secno">2.1 </span>Simple Triples</a></li><li class="tocline"><a href="#sec-iri" class="tocxref"><span class="secno">2.2 </span>IRIs</a></li><li class="tocline"><a href="#sec-literals" class="tocxref"><span class="secno">2.3 </span>RDF Literals</a></li><li class="tocline"><a href="#BNodes" class="tocxref"><span class="secno">2.4 </span>RDF Blank Nodes</a></li></ul></li><li class="tocline"><a href="#n-triples-changes" class="tocxref"><span class="secno">3. </span>Changes from RDF Test Cases format</a></li><li class="tocline"><a href="#canonical-ntriples" class="tocxref"><span class="secno">4. </span>A Canonical form of N-Triples</a></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">5. </span>Conformance</a></li><li class="tocline"><a href="#n-triples-mediatype" class="tocxref"><span class="secno">6. </span>Media Type and Content Encoding</a><ul class="toc"><li class="tocline"><a href="#sec-other-media-types" class="tocxref"><span class="secno">6.1 </span>Other Media Types</a></li></ul></li><li class="tocline"><a href="#n-triples-grammar" class="tocxref"><span class="secno">7. </span>Grammar</a></li><li class="tocline"><a href="#sec-parsing" class="tocxref"><span class="secno">8. </span>Parsing</a><ul class="toc"><li class="tocline"><a href="#sec-parsing-terms" class="tocxref"><span class="secno">8.1 </span>RDF Term Constructors</a></li><li class="tocline"><a href="#rdf-triple-construction" class="tocxref"><span class="secno">8.2 </span>RDF Triple Construction</a></li></ul></li><li class="tocline"><a href="#section-ack" class="tocxref"><span class="secno">9. </span>Acknowledgements</a></li><li class="tocline"><a href="#sec-changes" class="tocxref"><span class="secno">A. </span>Changes to this document</a></li><li class="tocline"><a href="#sec-mediaReg-n-triples" class="tocxref"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
+ <!-- BEGIN N-TRIPLES SPEC -->
-show:218 rdfs:label "That Seventies Show"^^xsd:string . # literal with XML Schema string datatype
-show:218 rdfs:label "That Seventies Show"^^<http://www.w3.org/2001/XMLSchema#string> . # same as above
-show:218 rdfs:label "That Seventies Show" . # same again
-show:218 show:localName "That Seventies Show"@en . # literal with a language tag
-show:218 show:localName 'Cette Série des Années Soixante-dix'@fr . # literal delimited by single quote
-show:218 show:localName "Cette Série des Années Septante"@fr-be . # literal with a region subtag
-show:218 show:blurb '''This is a multi-line # literal with embedded new lines and quotes
-literal with many quotes (""""")
-and up to two sequential apostrophes ('').''' .
-</span></pre></div>
- </section>
- <section id="abbrev" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h4 aria-level="3" role="heading" id="h4_abbrev"><span class="secno">2.5.2 </span>Numbers</h4>
- <p>Numbers can be written like other literals with lexical form and datatype (e.g. <code>"-5.0"^^xsd:decimal</code>). Turtle has a shorthand syntax for writing integer values, arbitrary precision decimal values, and double precision floating point values.</p>
- <table class="separated">
- <thead>
- <tr>
- <th>Data Type</th>
- <th>Abbreviated</th>
- <th>Lexical</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><strong>xsd:integer</strong></td>
- <td><code>-5</code></td>
- <td><code>"-5"^^xsd:integer</code></td>
- <td>Integer values may be written as an optional sign and a series of digits. Integers match the regular expression "<code>[+-]?[0-9]+</code>".</td>
- </tr>
- <tr>
- <td><strong>xsd:decimal</strong></td>
- <td><code>-5.0</code></td>
- <td><code>"-5.0"^^xsd:decimal</code></td>
- <td>Arbitrary-precision decimals may be written as an optional sign, zero or more digits, a decimal point and one or more digits. Decimals match the regular expression "<code>[+-]?[0-9]*\.[0-9]+</code>".</td>
- </tr>
- <tr>
- <td><strong>xsd:double</strong></td>
- <td><code>4.2E9</code></td>
- <td><code>"4.2E9"^^xsd:double</code></td>
- <td>Double-precision floating point values may be written as an optionally signed mantissa with an optional decimal point, the letter "e" or "E", and an optionally signed integer exponent. The exponent matches the regular expression "<code>[+-]?[0-9]+</code>" and the mantissa one of these regular expressions: "<code>[+-]?[0-9]+\.[0-9]+</code>", "<code>[+-]?\.[0-9]+</code>" or "<code>[+-]?[0-9]</code>".</td>
- </tr>
- </tbody>
- </table>
-
-<!-- <table class="separated">
- <caption style="font-weight: bold;">Example numeric representations:</caption>
- <tbody>
- <tr><th><a href="http://www.w3.org/TR/xmlschema-2/#integer">xsd:integer</a></th>
- <td><code>-5</code></td> <td><code>0</code></td> <td><code>1</code></td> <td><code>010</code></td> <td><code>+10</code></td></tr>
- <tr><th><a href="http://www.w3.org/TR/xmlschema-2/#decimal">xsd:decimal</a></th>
- <td><code>-5.0</code></td> <td><code>.0</code></td> <td><code>1.234567890</code></td> <td><code>010.0</code></td> <td><code>+10.0</code></td></tr>
- <tr><th><a href="http://www.w3.org/TR/xmlschema-2/#double">xsd:double</a></th>
- <td><code>-.5e1</code></td> <td><code>0E0</code></td> <td><code>1.234567890E0</code></td> <td><code>01e1</code></td> <td><code>+10e0</code></td></tr>
- </tbody>
- </table>
- -->
- <div class="example"><div class="example-title"><span>Example 11</span></div><pre class="example"><span>@prefix : <http://example.org/elements> .
-<http://en.wikipedia.org/wiki/Helium>
- :atomicNumber 2 ; # xsd:integer
- :atomicMass 4.002602 ; # xsd:decimal
- :specificGravity 1.663E-4 . # xsd:double
- </span></pre></div>
- </section>
- <section id="booleans">
- <h4 aria-level="3" role="heading" id="h4_booleans"><span class="secno">2.5.3 </span>Booleans</h4>
- <p>Boolean values may be written as either '<code>true</code>' or '<code>false</code>' (case-sensitive) and represent <abbr title="Resource Description Framework">RDF</abbr> literals with the datatype <a href="http://www.w3.org/TR/xmlschema-2/#boolean">xsd:boolean</a>.</p>
- <div class="example"><div class="example-title"><span>Example 12</span></div><pre class="example"><span>@prefix : <http://example.org/stats> .
-<http://somecountry.example/census2007>
- :isLandlocked false . # xsd:boolean</span></pre></div>
-
- </section>
- </section>
-
- <section id="BNodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_BNodes"><span class="secno">2.6 </span><abbr title="Resource Description Framework">RDF</abbr> Blank Nodes</h3>
- <p>
- <a href="../rdf-concepts/index.html#dfn-blank-node"><abbr title="Resource Description Framework">RDF</abbr> blank nodes</a> in Turtle are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
- The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized as follows:
- </p>
- <ul>
- <li>The characters <code>_</code> and digits may appear anywhere in a blank node label.</li>
- <li>The character <code>.</code> may appear anywhere except the first or last character.</li>
- <li>The characters <code>-</code>, <code>U+00B7</code>, <code>U+0300</code> to <code>U+036F</code> and <code>U+203F</code> to <code>U+2040</code> are permitted anywhere except the first character.</li>
- </ul>
- <p>
- A fresh <abbr title="Resource Description Framework">RDF</abbr> blank node is allocated for each unique blank node label in a document.
- Repeated use of the same blank node label identifies the same <abbr title="Resource Description Framework">RDF</abbr> blank node.
- </p>
- <div class="example"><div class="example-title"><span>Example 13</span></div><pre class="example"><span>@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-_:alice foaf:knows _:bob .
-_:bob foaf:knows _:alice .
-</span></pre></div>
- </section>
- <section id="unlabeled-bnodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_unlabeled-bnodes"><span class="secno">2.7 </span>Nesting Unlabeled Blank Nodes in Turtle</h3>
- <p>
- In Turtle, fresh <abbr title="Resource Description Framework">RDF</abbr> blank nodes are also allocated when matching the production <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> and the terminal <a href="#grammar-production-ANON">ANON</a>.
- Both of these may appear in the <a href="#grammar-production-subject">subject</a> or <a href="#grammar-production-object">object</a> position of a triple (see the Turtle Grammar).
- That subject or object is a fresh <abbr title="Resource Description Framework">RDF</abbr> blank node.
- This blank node also serves as the subject of the triples produced by matching the <a href="#grammar-production-predicateObjectList">predicateObjectList</a> production embedded in a blankNodePropertyList.
- The generation of these triples is described in <a href="#predicate-lists">Predicate Lists</a>.
- Blank nodes are also allocated for <a href="#collections">collections</a> described below.
- </p>
- <div class="example"><div class="example-title"><span>Example 14</span></div><pre class="example"><span>@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-# Someone knows someone else, who has the name "Bob".
-[] foaf:knows [ foaf:name "Bob" ] .
-</span></pre></div>
-
- <p>
- The Turtle grammar allows <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a>s to be nested.
- In this case, each inner <code>[</code> establishes a new subject blank node which reverts to the outer node at the <code>]</code>, and serves as the current subject for <a href="#grammar-production-predicateObjectList">predicate object lists</a>.
- </p>
- <p>
- The use of <a href="predicateObjectList">predicateObjectList</a> within a <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> is a common idiom for representing a series of properties of a node.
- </p>
- <div style="float:left;">
- <p class="idlAttrName" style="padding-left:2em;">Abbreviated:</p>
- <div class="example"><div class="example-title"><span>Example 15</span></div><pre class="example"><span>@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
-[ foaf:name "Alice" ] foaf:knows [
- foaf:name "Bob" ;
- foaf:knows [
- foaf:name "Eve" ] ;
- foaf:mbox <bob@example.com> ] .
- </span></pre></div>
- </div>
- <div style="float:left;">
- <p class="idlAttrName" style="padding-left:2em;">Corresponding simple triples:</p>
- <div class="example"><div class="example-title"><span>Example 16</span></div><pre class="example"><span>
-_:a <http://xmlns.com/foaf/0.1/name> "Alice" .
-_:a <http://xmlns.com/foaf/0.1/knows> _:b .
-_:b <http://xmlns.com/foaf/0.1/name> "Bob" .
-_:b <http://xmlns.com/foaf/0.1/knows> _:c .
-_:c <http://xmlns.com/foaf/0.1/name> "Eve" .
-_:b <http://xmlns.com/foaf/0.1/mbox> <bob@example.com> .
- </span></pre></div>
- </div>
- <div style="clear:both;"></div>
-
- </section>
- <section id="collections" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_collections"><span class="secno">2.8 </span>Collections</h3>
-
- <p>
- <abbr title="Resource Description Framework">RDF</abbr> provides a <a href="http://www.w3.org/TR/rdf-mt/#collections">Collection</a> [<cite><a class="bibref" href="#bib-RDF-MT">RDF-MT</a></cite>] structure for lists of <abbr title="Resource Description Framework">RDF</abbr> nodes.
- The Turtle syntax for Collections is a possibly empty list of <abbr title="Resource Description Framework">RDF</abbr> terms enclosed by <code>()</code>.
- This collection represents an <code>rdf:first</code>/<code>rdf:rest</code> list structure with the sequence of objects of the <code>rdf:first</code> statements being the order of the terms enclosed by <code>()</code>.
- </p>
-
- <p>
- The <code>(…)</code> syntax <em class="rfc2119" title="MUST">MUST</em> appear in the <a href="#grammar-production-subject">subject</a> or <a href="#grammar-production-object">object</a> position of a triple (see the Turtle Grammar).
- The blank node at the head of the list is the subject or object of the containing triple.
- </p>
-
- <div class="example"><div class="example-title"><span>Example 17</span></div><pre class="example"><span>
-@prefix : <http://example.org/foo> .
-# the object of this triple is the RDF collection blank node
-:subject :predicate ( :a :b :c ) .
-
-# an empty collection value - rdf:nil
-:subject :predicate2 () .
- </span></pre></div>
-
- </section>
- </section>
- <section id="sec-examples" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-examples"><span class="secno">3. </span>Examples</h2><p><em>This section is non-normative.</em></p>
-
- <p>This example is a Turtle translation of
- <a href="http://www.w3.org/TR/rdf-syntax-grammar/#example7">example 7</a>
- in the
- <a href="http://www.w3.org/TR/rdf-syntax-grammar/"><abbr title="Resource Description Framework">RDF</abbr>/XML Syntax specification</a>
- (<a href="examples/example1.ttl">example1.ttl</a>):
- </p>
-
- <div><div class="example"><div class="example-title"><span>Example 18</span></div><pre class="example">@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix dc: <http://purl.org/dc/elements/1.1/> .
-@prefix ex: <http://example.org/stuff/1.0/> .
-
-<http://www.w3.org/TR/rdf-syntax-grammar>
- dc:title "RDF/XML Syntax Specification (Revised)" ;
- ex:editor [
- ex:fullname "Dave Beckett";
- ex:homePage <http://purl.org/net/dajobe/>
- ] .</pre></div></div>
-
-
- <p>An example of an <abbr title="Resource Description Framework">RDF</abbr> collection of two literals.</p>
- <div class="example"><div class="example-title"><span>Example 19</span></div><pre class="example"><span>
-@prefix : <http://example.org/stuff/1.0/> .
-:a :b ( "apple" "banana" ) .
- </span></pre></div>
- <p>which is short for (<a href="examples/example2.ttl">example2.ttl</a>):</p>
+ <section id="sec-introduction" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-introduction"><span class="secno">1. </span>Introduction</h2>
+ <p>
+ This document defines N-Triples, a concrete syntax for
+ <a href="http://www.w3.org/TR/rdf11-concepts/">RDF</a> [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].
+ N-Triples is an easy to parse line-based subset of
+ Turtle [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>].
+ </p>
- <div><div class="example"><div class="example-title"><span>Example 20</span></div><pre class="example">@prefix : <http://example.org/stuff/1.0/> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-:a :b
- [ rdf:first "apple";
- rdf:rest [ rdf:first "banana";
- rdf:rest rdf:nil ]
- ] .</pre></div></div>
-
- <p>An example of two identical triples containing literal objects
- containing newlines, written in plain and long literal forms.
- The line breaks in this example are LINE FEED characters (U+000A).
- (<a href="examples/example3.ttl">example3.ttl</a>):</p>
-
- <div><div class="example"><div class="example-title"><span>Example 21</span></div><pre class="example">@prefix : <http://example.org/stuff/1.0/> .
-
-:a :b "The first line\nThe second line\n more" .
-
-:a :b """The first line
-The second line
- more""" .</pre></div></div>
-
- <p>As indicated by the grammar, a <a href="#grammar-production-collection">collection</a> can be either a <a href="#grammar-production-subject">subject</a> or an <a href="#grammar-production-object">object</a>. This subject or object will be the novel blank node for the first object, if the collection has one or more objects, or <code>rdf:nil</code> if the collection is empty.</p>
-
- <p>For example,</p>
-
- <div class="example"><div class="example-title"><span>Example 22</span></div><pre class="example untested"><span>@prefix : <http://example.org/stuff/1.0/> .
-(1 2.0 3E1) :p "w" .</span></pre></div>
-
- <p>is syntactic sugar for (noting that the blank nodes <code>b0</code>, <code>b1</code> and <code>b2</code> do not occur anywhere else in the <abbr title="Resource Description Framework">RDF</abbr> graph):</p>
-
-<div class="example"><div class="example-title"><span>Example 23</span></div><pre class="example untested"><span>@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
- _:b0 rdf:first 1 ;
- rdf:rest _:b1 .
- _:b1 rdf:first 2.0 ;
- rdf:rest _:b2 .
- _:b2 rdf:first 3E1 ;
- rdf:rest rdf:nil .
- _:b0 :p "w" . </span></pre></div>
+ <p>The syntax is a revised version of N-Triples as originally defined in the RDF Test Cases [<cite><a class="bibref" href="#bib-RDF-TESTCASES">RDF-TESTCASES</a></cite>] document. Its original intent was for writing test cases, but it has proven to be popular as an exchange format for RDF data.</p>
+ <p>An N-Triples document contains no parsing directives.
+ </p>
+ <p>N-Triples triples are a sequence of RDF terms representing the subject, predicate and object of an RDF Triple. These may be separated by white space (spaces <code>U+0020</code> or tabs <code>U+0009</code>). This sequence is terminated by a '<code>.</code>' and a new line (optional at the end of a document).
+ </p>
- <p><abbr title="Resource Description Framework">RDF</abbr> collections can be nested and can involve other syntactic forms:</p>
-
- <div class="example"><div class="example-title"><span>Example 24</span></div><pre class="example untested"><span>@prefix : <http://example.org/stuff/1.0/> .
-(1 [:p :q] ( 2 ) ) .</span></pre></div>
-
- <p>is syntactic sugar for:</p><div class="example"><div class="example-title"><span>Example 25</span></div><pre class="example untested"><span>@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
- _:b0 rdf:first 1 ;
- rdf:rest _:b1 .
- _:b1 rdf:first _:b2 .
- _:b2 :p :q .
- _:b1 rdf:rest _:b3 .
- _:b3 rdf:first _:b4 .
- _:b4 rdf:first 2 ;
- rdf:rest rdf:nil .
- _:b3 rdf:rest rdf:nil .</span></pre></div>
- </section>
-
- <section id="sec-diff-sparql" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-diff-sparql"><span class="secno">4. </span>Turtle compared to <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr></h2><p><em>This section is non-normative.</em></p>
+ <div class="example"><div class="example-title"><span>Example 1</span></div><pre class="example"><script type="application/n-triples"><http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> . # comments here
+# or on a line by themselves
+_:subject1 <http://an.example/predicate1> "object1" .
+_:subject2 <http://an.example/predicate2> "object2" .
+</script></pre></div>
- <p>The <a href="http://www.w3.org/TR/sparql11-query/"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> Query Language for <abbr title="Resource Description Framework">RDF</abbr></a> (<abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>) [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>] uses a Turtle style syntax for its <a href="http://www.w3.org/TR/sparql11-query/#rTriplesBlock">TriplesBlock production</a>.
- This production differs from the Turtle language in that:
+ <p>
+ N-Triples triples are also Turtle <a href="#simple-triples">simple triples</a>, but Turtle includes other representations of RDF terms and <a href="http://www.w3.org/TR/turtle/#predicate-lists">abbreviations of RDF Triples</a>. When parsed by a Turtle parser, data in the N-Triples format will produce exactly the same triples as a parser for the N-triples language.
</p>
-
- <ol>
- <li><a href="http://www.w3.org/TR/sparql11-query/#rGraphTerm"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> permits <abbr title="Resource Description Framework">RDF</abbr> Literals</a> as the subject of <abbr title="Resource Description Framework">RDF</abbr> triples.</li>
+ <p>The RDF graph represented by an N-Triples document contains
+ exactly each triple matching the N-Triples
+ <a href="#grammar-production-triple"><code>triple</code></a>
+ production.
+ </p></section>
- <li><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> permits variables (<code>?</code><em>name</em> or <code>$</code><em>name</em>) in any part of the triple of the form.</li>
- <li>Turtle allows <a href="#grammar-production-directive">prefix and base declarations</a> anywhere outside of a triple. In <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>, they are only allowed in the <a href="http://www.w3.org/TR/sparql11-query/#rPrologue">Prologue</a> (at the start of the <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> query).</li>
- <li><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> uses case insensitive keywords, except for '<code>a</code>'. Turtle's prefix and base declarations are case sensitive.</li>
- <li>'<code>true</code>' and '<code>false</code>' are case insensitive in <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> and case sensitive in Turtle. <code>TrUe</code> is not a valid boolean value in Turtle.</li>
-
- </ol>
+ <section id="sec-n-triples-language" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-n-triples-language"><span class="secno">2. </span>N-Triples Language</h2>
+ <section id="simple-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_simple-triples"><span class="secno">2.1 </span>Simple Triples</h3>
+ <p>The simplest triple statement is a sequence of (subject, predicate, object) terms, separated by whitespace and terminated by '<code>.</code>' after each triple.</p>
+ <div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><script type="application/n-triples"><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .</script></pre></div>
+ </section>
+ <section id="sec-iri" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-iri"><span class="secno">2.2 </span>IRIs</h3>
- <p>For further information see the
- <a href="http://www.w3.org/TR/sparql11-query/#QSynIRI">Syntax for IRIs</a>
- and <a href="http://www.w3.org/TR/sparql11-query/#grammar"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> Grammar</a>
- sections of the <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> query document [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>].
- </p>
+ <p>
+ <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> may be written only as absolute IRIs.
+ IRIs are enclosed in '<code><</code>' and '<code>></code>' and may contain numeric escape sequences (described below). For example <code><http://example.org/#green-goblin></code>.
+ </p>
</section>
- <section id="conformance" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_conformance"><span class="secno">5. </span>Conformance</h2>
+ <section id="sec-literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-literals"><span class="secno">2.3 </span>RDF Literals</h3>
+
+ <p><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</a>
+ are used to identify values such as strings, numbers,
+ dates.</p>
+
+ <p>
+ Literals (Grammar production <a href="#grammar-production-literal">Literal</a>) have a lexical form followed by a language tag, a datatype IRI, or neither.
+ The representation of the lexical form consists of an
+ initial delimiter <code>"</code> (<span class="codepoint">U+0022</span>), a sequence of permitted
+ characters or numeric escape sequence or string escape sequence, and a final delimiter. Literals may not contain the characters <code>"</code>, <code title="LINE FEED"><sub>LF</sub></code>, <code title="CARRIAGE RETURN"><sub>CR</sub></code> except in their escaped forms. In addition '<code>\</code>' (<span class="codepoint">U+005C</span>) may not appear in any quoted literal except as part of an escape sequence.
+ The corresponding <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">RDF lexical form</a> is the characters between the delimiters, after processing any escape sequences.
+ If present, the <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">language tag</a> is preceded by a '<code>@</code>' (<span class="codepoint">U+0040</span>).
+ If there is no language tag, there may be a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</a>, preceded by '<code>^^</code>' (<span class="codepoint">U+005E</span> <span class="codepoint">U+005E</span>). If there is no datatype IRI and no language tag it is a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-simple-literal">simple literal</a> and the datatype is <code>http://www.w3.org/2001/XMLSchema#string</code>.
+ </p>
+ <div class="example"><div class="example-title"><span>Example 3</span></div><pre class="example"><script type="application/n-triples"><http://example.org/show/218> <http://www.w3.org/2000/01/rdf-schema#label> "That Seventies Show"^^<http://www.w3.org/2001/XMLSchema#string> . # literal with XML Schema string datatype
+<http://example.org/show/218> <http://www.w3.org/2000/01/rdf-schema#label> "That Seventies Show" . # same as above
+<http://example.org/show/218> <http://example.org/show/localName> "That Seventies Show"@en . # literal with a language tag
+<http://example.org/show/218> <http://example.org/show/localName> "Cette Série des Années Septante"@fr-be . # literal outside of ASCII range with a region subtag
+<http://example.org/#spiderman> <http://example.org/text> "This is a multi-line\nliteral with many quotes (\"\"\"\"\")\nand two apostrophes ('')." .
+<http://en.wikipedia.org/wiki/Helium> <http://example.org/elements/atomicNumber> "2"^^<http://www.w3.org/2001/XMLSchema#integer> . # xsd:integer
+<http://en.wikipedia.org/wiki/Helium> <http://example.org/elements/specificGravity> "1.663E-4"^^<http://www.w3.org/2001/XMLSchema#double> . # xsd:double
+</script></pre></div>
+ </section>
+ <section id="BNodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_BNodes"><span class="secno">2.4 </span>RDF Blank Nodes</h3>
+ <p>
+ <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">RDF blank nodes</a> in N-Triples are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
+ The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized as follows:
+ </p>
+ <ul>
+ <li>The characters <code>_</code> and <code>[0-9]</code> may appear anywhere in a blank node label.</li>
+ <li>The character <code>.</code> may appear anywhere except the first or last character.</li>
+ <li>The characters <code>-</code>, <code>U+00B7</code>, <code>U+0300</code> to <code>U+036F</code> and <code>U+203F</code> to <code>U+2040</code> are permitted anywhere except the first character.</li>
+ </ul>
+ <p>
+ A fresh RDF blank node is allocated for each unique blank node label in a document.
+ Repeated use of the same blank node label identifies the same RDF blank node.
+ </p>
+ <div class="example"><div class="example-title"><span>Example 4</span></div><pre class="example"><script type="application/n-triples">_:alice <http://xmlns.com/foaf/0.1/knows> _:bob .
+_:bob <http://xmlns.com/foaf/0.1/knows> _:alice .</script></pre></div>
+ </section>
+
+ </section>
+
+ <section id="n-triples-changes" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-changes"><span class="secno">3. </span>Changes from RDF Test Cases format</h2><p><em>This section is non-normative.</em></p>
+ <ul>
+ <li>Encoding is UTF-8 rather than US-ASCII
+ </li><li>Uses IRIs rather than RDF URI References
+ </li><li>Defines a unique media type <code>application/n-triples</code>
+ </li><li>Subset of Turtle rather than Notation 3
+ </li><li>Comments may occur after a triple production
+ </li><li>Allows <code>\b</code> and <code>\f</code> for backspace and form feed
+ </li><li>More than one way to represent a single character
+ </li><li>Blank node labels may start with a digit
+ </li></ul>
+ </section>
+
+ <section id="canonical-ntriples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_canonical-ntriples"><span class="secno">4. </span>A Canonical form of N-Triples</h2>
+ <p>This section defined a canonical form of N-Triples which has
+ less variability in layout. The grammar for the language is the
+ same. Implementers are encouraged to produce this form.</p>
+ <p>Canonical N-Triples has the following additional constraints on layout:</p>
+ <ul>
+ <li>The whitespace following <code>subject</code>,
+ <code>predicate</code>,
+ and <code>object</code> <em class="rfc2119" title="MUST">MUST</em> be a single space,
+ (<code>U+0020</code>). All other locations that allow
+ whitespace <em class="rfc2119" title="MUST">MUST</em> be empty.</li>
+ <li>There <em class="rfc2119" title="MUST">MUST</em> be no comments.</li>
+ <li><code>HEX</code> <em class="rfc2119" title="MUST">MUST</em> use only uppercase letters (<code>[A-F]</code>).</li>
+ <li>Characters <em class="rfc2119" title="MUST NOT">MUST NOT</em> be represented by <code>UCHAR</code>.</li>
+ <li>Within <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>,
+ only the characters
+ <code>U+0022</code>, <code>U+005C</code>, <code>U+000A</code>, <code>U+000D</code>
+ are encoded using <code>ECHAR</code>.
+ <code>ECHAR</code> <em class="rfc2119" title="MUST NOT">MUST NOT</em> be used for characters that are
+ allowed directly in
+ <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>. </li>
+ </ul>
+ </section>
+
+ <section id="conformance" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_conformance"><span class="secno">5. </span>Conformance</h2>
<p>
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
and notes in this specification are non-normative. Everything else in this specification is
@@ -853,444 +463,121 @@
and <em class="rfc2119" title="OPTIONAL">OPTIONAL</em> in this specification are to be interpreted as described in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].
</p>
- <p>This specification defines conformance criteria for:</p>
- <ul>
- <li>Turtle documents
- </li><li>Turtle parsers
- </li></ul>
- <p>A conforming <strong>Turtle document</strong> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#sec-grammar" class="sectionRef sec-ref">section <span class="secno">6.</span> <span class="sec-title">Turtle Grammar</span></a>, starting with the <a href="#grammar-production-turtleDoc"><code>turtleDoc</code> production</a>. A Turtle document serializes an <abbr title="Resource Description Framework">RDF</abbr> Graph.</p>
-
- <p>A conforming <strong>Turtle parser</strong> is a system capable of reading Turtle documents on behalf of an application. It makes the serialized <abbr title="Resource Description Framework">RDF</abbr> dataset, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">7.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
-
- <p>The IRI that identifies the Turtle language is: <code>http://www.w3.org/ns/formats/Turtle</code></p>
-
- <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_2"><span>Note</span></div><p class="">This specification does not define how Turtle parsers handle non-conforming input documents.</p></div>
- <section id="sec-mime" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-mime"><span class="secno">5.1 </span>Media Type and Content Encoding</h3>
-
- <p>The media type of Turtle is <code>text/turtle</code>.
- The content encoding of Turtle content is always UTF-8. Charset
- parameters on the mime type are required until such time as the
- <code>text/</code> media type tree permits UTF-8 to be sent without a
- charset parameter. See <a href="#sec-mediaReg" class="sectionRef sec-ref">section <span class="secno">B.</span> <span class="sec-title">Internet Media Type, File Extension and Macintosh File Type</span></a> for the media type
- registration form.
- </p>
- </section>
- </section>
-
- <section id="sec-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-grammar"><span class="secno">6. </span>Turtle Grammar</h2>
-
- <p>A Turtle document is a
- Unicode[<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]
- character string encoded in UTF-8.
- Unicode characters only in the range U+0000 to U+10FFFF inclusive are
- allowed.
- </p>
- <section id="sec-grammar-ws" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-grammar-ws"><span class="secno">6.1 </span>White Space</h3>
- <p>White space (production <a href="#grammar-production-WS">WS</a>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. Rule names below in capitals indicate where white space is significant; these form a possible choice of terminals for constructing a Turtle parser.</p>
-
- <p>White space is significant in the production <a href="#grammar-production-String">String</a>.</p>
- </section>
- <section id="sec-grammar-comments" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-grammar-comments"><span class="secno">6.2 </span>Comments</h3>
-
- <p>Comments in Turtle take the form of '#', outside an
- <a href="#grammar-production-IRIREF">IRIREF</a> or <a href="#grammar-production-String">String</a>,
- and continue to the end of line (marked by characters U+000D or U+000A)
- or end of file if there is no end of line after the comment
- marker. Comments are treated as white space.
-
- </p>
- </section>
- <section id="sec-iri-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-iri-references"><span class="secno">6.3 </span>IRI References</h3>
- <p>
- Relative IRIs are resolved with base IRIs as per <a href="http://www.ietf.org/rfc/rfc3986.txt" class="norm">Uniform Resource Identifier (URI): Generic Syntax</a> [<a href="#rfc3986">RFC3986</a>] using only the basic algorithm in section 5.2.
- Neither Syntax-Based Normalization nor Scheme-Based Normalization (described in sections 6.2.2 and 6.2.3 of RFC3986) are performed.
- Characters additionally allowed in IRI references are treated in the same way that unreserved characters are treated in URI references, per section 6.5 of <a href="http://www.ietf.org/rfc/rfc3987.txt" class="norm">Internationalized Resource Identifiers (IRIs)</a> [<a href="#rfc3987">RFC3987</a>].
- </p>
- <p>
- The <code>@base</code> directive defines the Base IRI used to resolve relative IRIs per RFC3986 section 5.1.1, "Base URI Embedded in Content".
- Section 5.1.2, "Base URI from the Encapsulating Entity" defines how the In-Scope Base IRI may come from an encapsulating document, such as a SOAP envelope with an xml:base directive or a mime multipart document with a Content-Location header.
- The "Retrieval URI" identified in 5.1.3, Base "URI from the Retrieval URI", is the URL from which a particular Turtle document was retrieved.
- If none of the above specifies the Base URI, the default Base URI (section 5.1.4, "Default Base URI") is used.
- Each <code>@base</code> directive sets a new In-Scope Base URI, relative to the previous one.
- </p>
- </section>
-
- <section id="sec-escapes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-escapes"><span class="secno">6.4 </span>Escape Sequences</h3>
-
- <p>
- There are three forms of escapes used in turtle documents:
- </p>
-
- <ul>
- <li>
- <p>
- <em id="numeric">numeric escape sequences</em> represent Unicode code points:
- </p>
-
- <table>
- <thead>
- <tr>
- <th>Escape sequence</th>
-
- <th>Unicode code point</th>
-
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td>'\u' <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a></td>
- <td>A Unicode character in the range U+0000 to U+FFFF inclusive
- corresponding to the value encoded by the four hexadecimal digits interpreted from most significant to least significant digit.</td>
- </tr>
-
-
- <tr>
- <td>'\U' <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a></td>
-
- <td>A Unicode character in the range U+0000 to U+10FFFF inclusive
- corresponding to the value encoded by the eight hexadecimal digits interpreted from most significant to least significant digit.</td>
- </tr>
-
- </tbody>
- </table>
-
- <p>where <a href="#rHEX">HEX</a> is a hexadecimal character</p>
- <blockquote>
- <p><span style="font-family: monospace; font-size: 85%;">HEX
- ::= [0-9] | [A-F] | [a-f]</span></p>
-
- </blockquote>
- </li>
-
- <li>
- <p>
- <em id="string">string escape sequences</em> represent the characters traditionally escaped in string literals:
- </p>
-
- <table>
- <thead>
- <tr>
- <th>Escape sequence</th>
-
- <th>Unicode code point</th>
-
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td>'\t'</td>
- <td>U+0009</td>
- </tr>
-
- <tr>
- <td>'\b'</td>
- <td>U+0008</td>
- </tr>
-
- <tr>
-
- <td>'\n'</td>
- <td>U+000A</td>
- </tr>
-
- <tr>
- <td>'\r'</td>
- <td>U+000D</td>
- </tr>
-
- <tr>
- <td>'\f'</td>
- <td>U+000C</td>
- </tr>
-
- <tr>
- <td>'\"'</td>
- <td>U+0022</td>
- </tr>
-
- <tr>
- <td>'\''</td>
- <td>U+0027</td>
- </tr>
-
- <tr>
- <td>'\\'</td>
+ <p>This specification defines conformance criteria for:</p>
+ <ul>
+ <li>N-Triples documents
+ </li><li>Canonical N-Triples documents
+ </li><li>N-Triples parsers
+ </li></ul>
- <td>U+005C</td>
- </tr>
-
- </tbody>
- </table>
- </li>
-
- <li>
- <p>
- <em id="reserved">reserved character escape sequences</em> consist of a '\' followed by one of <code>~.-!$&'()*+,;=/?#@%_</code> and represent the character to the right of the '\'.
- </p>
- </li>
-
- </ul>
-
- <table id="term2escape" class="separated">
- <caption>Context where each kind of escape sequence can be used</caption>
- <thead>
- <tr>
- <th></th>
- <th><a href="#numeric">numeric<br>escapes</a></th>
- <th><a href="#string">string<br>escapes</a></th>
- <th><a href="#reserved">reserved character<br>escapes</a></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="r"><span style="font-weight:bold;">IRI</span>s, used as <a href="#grammar-production-IRIref"><abbr title="Resource Description Framework">RDF</abbr> terms</a> or as in <a href="#grammar-production-prefixID">@prefix</a> or <a href="#grammar-production-base">@base</a> declarations</td>
- <td style="background-color: green; border:1px solid black;">yes</td>
- <td>no</td>
- <td>no</td>
- </tr>
- <tr>
- <td class="r"><a href="#grammar-production-PN_LOCAL"><span style="font-weight:bold;">local name</span>s</a></td>
- <td>no</td>
- <td>no</td>
- <td style="background-color: green; border:1px solid black;">yes</td>
- </tr>
- <tr>
- <td class="r"><span style="font-weight:bold;">String</span>s</td>
- <td style="background-color: green; border:1px solid black;">yes</td>
- <td style="background-color: green; border:1px solid black;">yes</td>
- <td>no</td>
- </tr>
- </tbody>
- </table>
- <div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_3"><span>Note</span></div><p class="">%-encoded sequences are in the <a href="#grammar-production-IRIREF">character range for IRIs</a> and are <a href="#grammar-production-PERCENT">explicitly allowed</a> in local names. These appear as a '%' followed by two hex characters and represent that same sequence of three characters. These sequences are <em>not</em> decoded during processing. A term written as <code><http://a.example/%66oo-bar></code> in Turtle designates the IRI <code>http://a.example/%66oo-bar</code> and not IRI <code>http://a.example/foo-bar</code>. A term written as <code>ex:%66oo-bar</code> with a prefix <code>@prefix ex: <http://a.example/></code> also designates the IRI <code>http://a.example/%66oo-bar</code>.</p></div>
-
- </section>
- <section id="sec-grammar-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-grammar-grammar"><span class="secno">6.5 </span>Grammar</h3>
- <div class="atrisk"><p class="atrisktext">Feature At Risk</p>
- <p>The <abbr title="Resource Description Framework">RDF</abbr> Working Group proposes to make the following changes to align Turtle with <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>.</p>
- <ul>
- <li>The addition of <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> and <a href="#grammar-production-sparqlBase">sparqlBase</a> which allow for using <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> style <code>BASE</code> and <code>PREFIX</code> directives in a Turtle document.</li>
- </ul>
- <p>Feedback, both positive and negative, is invited by sending email to mailing list <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a> (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).</p>
- </div>
- <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0
- [<cite><a class="bibref" href="#bib-EBNF-NOTATION">EBNF-NOTATION</a></cite>]. Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/sparql11-query/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/sparql11-query/#sparqlGrammar"><abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr> Query Language for <abbr title="Resource Description Framework">RDF</abbr> grammar</a> [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>].
- </p>
+ <p>A conforming <dfn id="dfn-n-triples-document">N-Triples document</dfn> is a Unicode string that conforms to the grammar and additional constraints defined in <a href="#n-triples-grammar" class="sectionRef sec-ref">section <span class="secno">7.</span> <span class="sec-title">Grammar</span></a>, starting with the <a href="#grammar-production-ntriplesDoc"><code>ntriplesDoc</code> production</a>. An N-Triples document serializes an RDF graph.</p>
- <div>
- <p>Notes:</p>
- <ol>
- <li>
- Keywords in single quotes ('<code class="grammar-literal">@base</code>', '<code class="grammar-literal">@prefix</code>', '<code class="grammar-literal">a</code>', '<code class="grammar-literal">true</code>', '<code class="grammar-literal">false</code>') are case-sensitive.
- Keywords in double quotes ("<code class="grammar-literal">BASE</code>", "<code class="grammar-literal">PREFIX</code>") are case-insensitive.
- </li>
- <li>
- Escape sequences <code><a href="#grammar-production-UCHAR">UCHAR</a></code> and <code><a href="#grammar-production-ECHAR">ECHAR</a></code> are case sensitive.
- </li>
- <li>
- When tokenizing the input and choosing grammar rules, the longest match is chosen.
- </li>
- <li>
- The Turtle grammar is LL(1) and LALR(1) when the rules with uppercased names are used as terminals.
- </li>
- <li>
- The entry point into the grammar is <code>turtleDoc</code>.
- </li>
- <li>
- In signed numbers, no white space is allowed between the sign and the number.
- </li>
- <li>
- The
- <span style="font-size: smaller;">
- <span>[162s]</span>
- <span><code>ANON</code></span>
- <span>::=</span>
- <span>'<code class="grammar-literal">[</code>' <a href="#grammar-production-WS">WS</a><code class="grammar-star">*</code> '<code class="grammar-literal">]</code>'</span>
- </span>
- token allows any amount of white space and comments between <code class="grammar-literal">[]</code>s.
- The single space version is used in the grammar for clarity.
- </li>
- <li>
- The strings '<a href="#grammar-production-prefixID"><code class="grammar-literal">@prefix</code></a>' and '<a href="#grammar-production-base"><code class="grammar-literal">@base</code></a>' match the pattern for <a href="#grammar-production-LANGTAG">LANGTAG</a>, though neither "<code class="grammar-literal">prefix</code>" nor "<code class="grammar-literal">base</code>" are <a href="http://www.iana.org/assignments/language-subtag-registry">registered language subtags</a>.
- This specification does not define whether a quoted literal followed by either of these tokens (e.g. <code>"A"@base</code>) is in the Turtle language.
- </li>
- </ol>
- </div>
+ <p>A conforming <dfn id="dfn-canonical-n-triples-document">Canonical N-Triples document</dfn> is an
+ <strong>N-Triples document</strong> that follows the
+ <a href="#canonical-ntriples">additional constraints</a> of Canonical N-Triples.</p>
+ <p>A conforming <dfn id="dfn-n-triples-parser">N-Triples parser</dfn> is a system capable of reading N-Triples documents on behalf of an application. It makes the serialized RDF graph, as defined in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">8.</span> <span class="sec-title">Parsing</span></a>, available to the application, usually through some form of API.</p>
- <div><table class="grammar">
+ <p>The IRI that identifies the N-Triples language is:
+<code>http://www.w3.org/ns/formats/N-Triples</code></p>
+ </section>
+
+ <section id="n-triples-mediatype" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-mediatype"><span class="secno">6. </span>Media Type and Content Encoding</h2>
+
+ <p>The media type of N-Triples is <code>application/n-triples</code>.
+ The content encoding of N-Triples is always UTF-8.
+ See <a href="#sec-mediaReg-n-triples">N-Triples Media Type</a> for the media type
+ registration form.
+ </p>
+
+ <section id="sec-other-media-types" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <h3 aria-level="2" role="heading" id="h3_sec-other-media-types"><span class="secno">6.1 </span>Other Media Types</h3>
+ <p>N-Triples has been historically provided with other media types. N-Triples may also be provided as <code>text/plain</code>. When used in this way N-Triples <em class="rfc2119" title="MUST">MUST</em> use the escaped form of any character outside US-ASCII. As N-Triples is a subset of Turtle an N-Triples document <em class="rfc2119" title="MAY">MAY</em> also be provided as <code>text/turtle</code>. In both of these cases the document is not an N-Triples document as an N-Triples document is only provided as <code>application/n-triples</code>.</p>
+ </section>
+
+ </section>
+
+
+ <section id="n-triples-grammar" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_n-triples-grammar"><span class="secno">7. </span>Grammar</h2>
+ <p>An N-Triples document is a Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>] character string encoded in UTF-8.
+ Unicode code points only in the range U+0 to U+10FFFF inclusive are allowed.</p>
+ <p>White space (tab <code>U+0009</code> or space <code>U+0020</code>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. White space is significant in the production <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>.</p>
+ <p>Comments in N-Triples take the form of '<code>#</code>',
+ outside an <code>IRIREF</code> or <code>STRING_LITERAL_QUOTE</code>, and continue
+ upto, and excluding, the end of line (<code>EOL</code>),
+ or end of file if there is no end of line after the comment
+ marker. Comments are treated as white space.</p>
+
+ <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used
+ here is defined in XML 1.0
+ [<cite><a class="bibref" href="#bib-EBNF-NOTATION">EBNF-NOTATION</a></cite>].</p>
+
+ <p>Escape sequence rules are the same as Turtle
+ [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. However, as only the <a href="#grammar-production-STRING_LITERAL_QUOTE"><code>STRING_LITERAL_QUOTE</code></a> production is allowed new lines in literals <em class="rfc2119" title="MUST">MUST</em> be escaped.</p>
+ <div><table class="grammar">
<tbody class="grammar-productions">
- <tr id="grammar-production-turtleDoc" data-grammar-original="[1] turtleDoc ::= statement*" data-grammar-expression="('*', ('id', 'statement'))">
+ <tr id="grammar-production-ntriplesDoc" data-grammar-original="[1] ntriplesDoc ::= triple? (EOL triple)* EOL?" data-grammar-expression="(',', [('?', ('id', 'triple')), ('*', (',', [('id', 'EOL'), ('id', 'triple')])), ('?', ('id', 'EOL'))])">
<td>[1]</td>
- <td><code>turtleDoc</code></td>
+ <td><code>ntriplesDoc</code></td>
<td>::=</td>
- <td><a href="#grammar-production-statement">statement</a><code class="grammar-star">*</code></td>
-</tr>
- <tr id="grammar-production-statement" data-grammar-original="[2] statement ::= directive| triples "."" data-grammar-expression="('|', [('id', 'directive'), (',', [('id', 'triples'), ("'", '.')])])">
- <td>[2]</td>
- <td><code>statement</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-directive">directive</a> <code>| </code> <a href="#grammar-production-triples">triples</a> '<code class="grammar-literal">.</code>'</td>
+ <td><a href="#grammar-production-triple">triple</a>? (<a href="#grammar-production-EOL">EOL</a> <a href="#grammar-production-triple">triple</a>)<code class="grammar-star">*</code> <a href="#grammar-production-EOL">EOL</a>?</td>
</tr>
- <tr id="grammar-production-directive" data-grammar-original="[3] directive ::= prefixID| base | sparqlPrefix | sparqlBase" data-grammar-expression="('|', [('id', 'prefixID'), ('id', 'base'), ('id', 'sparqlPrefix'), ('id', 'sparqlBase')])">
- <td>[3]</td>
- <td><code>directive</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-prefixID">prefixID</a> <code>| </code> <a href="#grammar-production-base">base</a> <code>| </code> <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> <code>| </code> <a href="#grammar-production-sparqlBase">sparqlBase</a></td>
-</tr>
- <tr id="grammar-production-prefixID" data-grammar-original="[4] prefixID ::= '@prefix' PNAME_NS IRIREF "."" data-grammar-expression="(',', [("'", '@prefix'), ('id', 'PNAME_NS'), ('id', 'IRIREF'), ("'", '.')])">
- <td>[4]</td>
- <td><code>prefixID</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">@prefix</code>' <a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-IRIREF">IRIREF</a> '<code class="grammar-literal">.</code>'</td>
-</tr>
- <tr id="grammar-production-base" data-grammar-original="[5] base ::= '@base' IRIREF "."" data-grammar-expression="(',', [("'", '@base'), ('id', 'IRIREF'), ("'", '.')])">
- <td>[5]</td>
- <td><code>base</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">@base</code>' <a href="#grammar-production-IRIREF">IRIREF</a> '<code class="grammar-literal">.</code>'</td>
-</tr>
- <tr id="grammar-production-sparqlBase" data-grammar-original="[29*] sparqlBase ::= [Bb][Aa][Ss][Ee] IRIREF" data-grammar-expression="(',', [('[', 'Bb'), ('[', 'Aa'), ('[', 'Ss'), ('[', 'Ee'), ('id', 'IRIREF')])">
- <td>[5s]</td>
- <td><code>sparqlBase</code></td>
- <td>::=</td>
- <td><span class="add">"<code class="grammar-literal">BASE</code>"</span> <a href="#grammar-production-IRIREF">IRIREF</a></td>
-</tr>
- <tr id="grammar-production-sparqlPrefix" data-grammar-original="[28*] sparqlPrefix ::= [Pp][Rr][Ee][Ff][Ii][Xx] PNAME_NS IRIREF" data-grammar-expression="(',', [('[', 'Pp'), ('[', 'Rr'), ('[', 'Ee'), ('[', 'Ff'), ('[', 'Ii'), ('[', 'Xx'), ('id', 'PNAME_NS'), ('id', 'IRIREF')])">
- <td>[6s]</td>
- <td><code>sparqlPrefix</code></td>
+ <tr id="grammar-production-triple" data-grammar-original="[2] triple ::= subject predicate object '.'" data-grammar-expression="(',', [('id', 'subject'), ('id', 'predicate'), ('id', 'object'), ("'", '.')])">
+ <td>[2]</td>
+ <td><code>triple</code></td>
<td>::=</td>
- <td><span class="add">"<code class="grammar-literal">PREFIX</code>"</span> <a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-IRIREF">IRIREF</a></td>
-</tr>
- <tr id="grammar-production-triples" data-grammar-original="[6] triples ::= subject predicateObjectList |blankNodePropertyList predicateObjectList?" data-grammar-expression="('|', [(',', [('id', 'subject'), ('id', 'predicateObjectList')]), (',', [('id', 'blankNodePropertyList'), ('?', ('id', 'predicateObjectList'))])])">
- <td>[6]</td>
- <td><code>triples</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-subject">subject</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a> <code>| </code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a>?</td>
-</tr>
- <tr id="grammar-production-predicateObjectList" data-grammar-original="[7] predicateObjectList ::= verb objectList (';' (verb objectList)? )*" data-grammar-expression="(',', [('id', 'verb'), ('id', 'objectList'), ('*', (',', [("'", ';'), ('?', (',', [('id', 'verb'), ('id', 'objectList')]))]))])">
- <td>[7]</td>
- <td><code>predicateObjectList</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-verb">verb</a> <a href="#grammar-production-objectList">objectList</a> ('<code class="grammar-literal">;</code>' (<a href="#grammar-production-verb">verb</a> <a href="#grammar-production-objectList">objectList</a>)?)<code class="grammar-star">*</code></td>
+ <td><a href="#grammar-production-subject">subject</a> <a href="#grammar-production-predicate">predicate</a> <a href="#grammar-production-object">object</a> '<code class="grammar-literal">.</code>'</td>
</tr>
- <tr id="grammar-production-objectList" data-grammar-original="[8] objectList ::= object ( "," object )*" data-grammar-expression="(',', [('id', 'object'), ('*', (',', [("'", ','), ('id', 'object')]))])">
- <td>[8]</td>
- <td><code>objectList</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-object">object</a> ('<code class="grammar-literal">,</code>' <a href="#grammar-production-object">object</a>)<code class="grammar-star">*</code></td>
-</tr>
- <tr id="grammar-production-verb" data-grammar-original="[9] verb ::= predicate| "a"" data-grammar-expression="('|', [('id', 'predicate'), ("'", 'a')])">
- <td>[9]</td>
- <td><code>verb</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-predicate">predicate</a> <code>| </code> '<code class="grammar-literal">a</code>'</td>
-</tr>
- <tr id="grammar-production-subject" data-grammar-original="[10] subject ::= iri| blank" data-grammar-expression="('|', [('id', 'iri'), ('id', 'blank')])">
- <td>[10]</td>
+ <tr id="grammar-production-subject" data-grammar-original="[3] subject ::= IRIREF | BLANK_NODE_LABEL" data-grammar-expression="('|', [('id', 'IRIREF'), ('id', 'BLANK_NODE_LABEL')])">
+ <td>[3]</td>
<td><code>subject</code></td>
<td>::=</td>
- <td><a href="#grammar-production-iri">iri</a> <code>| </code> <a href="#grammar-production-BlankNode" class="add">BlankNode</a> <code class="add">| </code> <a href="#grammar-production-collection" class="add">collection</a></td>
+ <td><a href="#grammar-production-IRIREF">IRIREF</a> <code>| </code> <a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a></td>
</tr>
- <tr id="grammar-production-predicate" data-grammar-original="[11] predicate ::= iri" data-grammar-expression="('id', 'iri')">
- <td>[11]</td>
+ <tr id="grammar-production-predicate" data-grammar-original="[4] predicate ::= IRIREF" data-grammar-expression="('id', 'IRIREF')">
+ <td>[4]</td>
<td><code>predicate</code></td>
<td>::=</td>
- <td><a href="#grammar-production-iri">iri</a></td>
+ <td><a href="#grammar-production-IRIREF">IRIREF</a></td>
</tr>
- <tr id="grammar-production-object" data-grammar-original="[12] object ::= iri| blank| blankNodePropertyList| literal" data-grammar-expression="('|', [('id', 'iri'), ('id', 'blank'), ('id', 'blankNodePropertyList'), ('id', 'literal')])">
- <td>[12]</td>
+ <tr id="grammar-production-object" data-grammar-original="[5] object ::= IRIREF | BLANK_NODE_LABEL | literal" data-grammar-expression="('|', [('id', 'IRIREF'), ('id', 'BLANK_NODE_LABEL'), ('id', 'literal')])">
+ <td>[5]</td>
<td><code>object</code></td>
<td>::=</td>
- <td><a href="#grammar-production-iri">iri</a> <code>| </code> <a href="#grammar-production-BlankNode" class="add">BlankNode</a> <code class="add">| </code> <a href="#grammar-production-collection" class="add">collection</a> <code>| </code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <code>| </code> <a href="#grammar-production-literal">literal</a></td>
+ <td><a href="#grammar-production-IRIREF">IRIREF</a> <code>| </code> <a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> <code>| </code> <a href="#grammar-production-literal">literal</a></td>
</tr>
- <tr id="grammar-production-literal" data-grammar-original="[13] literal ::= RDFLiteral| NumericLiteral| BooleanLiteral" data-grammar-expression="('|', [('id', 'RDFLiteral'), ('id', 'NumericLiteral'), ('id', 'BooleanLiteral')])">
- <td>[13]</td>
+ <tr id="grammar-production-literal" data-grammar-original="[6] literal ::= STRING_LITERAL_QUOTE ('^^' IRIREF | ('@' LANGTAG) )?" data-grammar-expression="(',', [('id', 'STRING_LITERAL_QUOTE'), ('?', ('|', [(',', [("'", '^^'), ('id', 'IRIREF')]), (',', [("'", '@'), ('id', 'LANGTAG')])]))])">
+ <td>[6]</td>
<td><code>literal</code></td>
<td>::=</td>
- <td><a href="#grammar-production-RDFLiteral">RDFLiteral</a> <code>| </code> <a href="#grammar-production-NumericLiteral">NumericLiteral</a> <code>| </code> <a href="#grammar-production-BooleanLiteral">BooleanLiteral</a></td>
-</tr>
- <tr id="grammar-production-blankNodePropertyList" data-grammar-original="[15] blankNodePropertyList ::= "[" predicateObjectList "]"" data-grammar-expression="(',', [("'", '['), ('id', 'predicateObjectList'), ("'", ']')])">
- <td>[14]</td>
- <td><code>blankNodePropertyList</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">[</code>' <a href="#grammar-production-predicateObjectList">predicateObjectList</a> '<code class="grammar-literal">]</code>'</td>
-</tr>
- <tr id="grammar-production-collection" data-grammar-original="[16] collection ::= "(" object* ")"" data-grammar-expression="(',', [("'", '('), ('*', ('id', 'object')), ("'", ')')])">
- <td>[15]</td>
- <td><code>collection</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">(</code>' <a href="#grammar-production-object">object</a><code class="grammar-star">*</code> '<code class="grammar-literal">)</code>'</td>
-</tr>
- <tr id="grammar-production-NumericLiteral" data-grammar-original="[17] NumericLiteral ::= INTEGER | DECIMAL | DOUBLE" data-grammar-expression="('|', [('id', 'INTEGER'), ('id', 'DECIMAL'), ('id', 'DOUBLE')])">
- <td>[16]</td>
- <td><code>NumericLiteral</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-INTEGER">INTEGER</a> <code>| </code> <a href="#grammar-production-DECIMAL">DECIMAL</a> <code>| </code> <a href="#grammar-production-DOUBLE">DOUBLE</a></td>
-</tr>
- <tr id="grammar-production-RDFLiteral" data-grammar-original="[128s] RDFLiteral ::= String ( LANGTAG | ( "^^" iri ) )?" data-grammar-expression="(',', [('id', 'String'), ('?', ('|', [('id', 'LANGTAG'), (',', [("'", '^^'), ('id', 'iri')])]))])">
- <td>[128s]</td>
- <td><code>RDFLiteral</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-String">String</a> (<a href="#grammar-production-LANGTAG">LANGTAG</a> <code>| </code> '<code class="grammar-literal">^^</code>' <a href="#grammar-production-iri">iri</a>)?</td>
+ <td><a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a> ('<code class="grammar-literal">^^</code>' <a href="#grammar-production-IRIREF">IRIREF</a> <code>| </code> '<code class="grammar-literal">@</code>' <a href="#grammar-production-LANGTAG">LANGTAG</a>)?</td>
</tr>
- <tr id="grammar-production-BooleanLiteral" data-grammar-original="[133s] BooleanLiteral ::= "true"| "false"" data-grammar-expression="('|', [("'", 'true'), ("'", 'false')])">
- <td>[133s]</td>
- <td><code>BooleanLiteral</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">true</code>' <code>| </code> '<code class="grammar-literal">false</code>'</td>
-</tr>
- <tr id="grammar-production-String" data-grammar-original="[18] String ::= STRING_LITERAL_QUOTE| STRING_LITERAL_SINGLE_QUOTE| STRING_LITERAL_LONG_SINGLE_QUOTE| STRING_LITERAL_LONG_QUOTE" data-grammar-expression="('|', [('id', 'STRING_LITERAL_QUOTE'), ('id', 'STRING_LITERAL_SINGLE_QUOTE'), ('id', 'STRING_LITERAL_LONG_SINGLE_QUOTE'), ('id', 'STRING_LITERAL_LONG_QUOTE')])">
- <td>[17]</td>
- <td><code>String</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE">STRING_LITERAL_SINGLE_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">STRING_LITERAL_LONG_SINGLE_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_LONG_QUOTE">STRING_LITERAL_LONG_QUOTE</a></td>
-</tr>
- <tr id="grammar-production-iri" data-grammar-original="[135s] iri ::= IRIREF| PrefixedName" data-grammar-expression="('|', [('id', 'IRIREF'), ('id', 'PrefixedName')])">
- <td>[135s]</td>
- <td><code>iri</code></td>
+<tr><td colspan="4"><h2 id="terminals">Productions for terminals</h2></td></tr>
+ <tr id="grammar-production-LANGTAG" data-grammar-original="[144s] LANGTAG ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )*" data-grammar-expression="(',', [("'", '@'), ('+', ('[', 'a-zA-Z')), ('*', (',', [("'", '-'), ('+', ('[', 'a-zA-Z0-9'))]))])" class="grammar-token">
+ <td>[144s]</td>
+ <td><code>LANGTAG</code></td>
<td>::=</td>
- <td><a href="#grammar-production-IRIREF">IRIREF</a> <code>| </code> <a href="#grammar-production-PrefixedName">PrefixedName</a></td>
-</tr>
- <tr id="grammar-production-PrefixedName" data-grammar-original="[136s] PrefixedName ::= PNAME_LN| PNAME_NS" data-grammar-expression="('|', [('id', 'PNAME_LN'), ('id', 'PNAME_NS')])">
- <td>[136s]</td>
- <td><code>PrefixedName</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-PNAME_LN">PNAME_LN</a> <code>| </code> <a href="#grammar-production-PNAME_NS">PNAME_NS</a></td>
+ <td>'<code class="grammar-literal">@</code>' [<code class="grammar-chars">a-zA-Z</code>]<code class="grammar-plus">+</code> ('<code class="grammar-literal">-</code>' [<code class="grammar-chars">a-zA-Z0-9</code>]<code class="grammar-plus">+</code>)<code class="grammar-star">*</code></td>
</tr>
- <tr id="grammar-production-BlankNode" data-grammar-original="[137s] BlankNode ::= BLANK_NODE_LABEL| ANON" data-grammar-expression="('|', [('id', 'BLANK_NODE_LABEL'), ('id', 'ANON')])">
- <td>[137s]</td>
- <td><code>BlankNode</code></td>
+ <tr id="grammar-production-EOL" data-grammar-original="[7] EOL ::= [#xD#xA]+" data-grammar-expression="('+', ('[', '#xD#xA'))" class="grammar-token">
+ <td>[7]</td>
+ <td><code>EOL</code></td>
<td>::=</td>
- <td><a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> <code>| </code> <a href="#grammar-production-ANON">ANON</a></td>
+ <td>[<code class="grammar-chars">#xD#xA</code>]<code class="grammar-plus">+</code></td>
</tr>
-<tr><td colspan="5"><h3 id="terminals">Productions for terminals</h3></td></tr>
- <tr id="grammar-production-IRIREF" data-grammar-original="[19] IRIREF ::= '<' ([^#x00-#x20<>\"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>\\"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
- <td>[18]</td>
+ <tr id="grammar-production-IRIREF" data-grammar-original="[8] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'" data-grammar-expression="(',', [("'", '<'), ('*', ('|', [('[', '^#x00-#x20<>"{}|^`\\'), ('id', 'UCHAR')])), ("'", '>')])" class="grammar-token">
+ <td>[8]</td>
<td><code>IRIREF</code></td>
<td>::=</td>
- <td>'<code class="grammar-literal"><</code>' ([<code class="grammar-chars">^#x00-#x20<>\"{}|^`\</code>] <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">></code>'</td>
+ <td>'<code class="grammar-literal"><</code>' ([<code class="grammar-chars">^#x00-#x20<>"{}|^`\</code>] <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">></code>'</td>
</tr>
- <tr id="grammar-production-PNAME_NS" data-grammar-original="[139s] PNAME_NS ::= PN_PREFIX? ":"" data-grammar-expression="(',', [('?', ('id', 'PN_PREFIX')), ("'", ':')])" class="grammar-token">
- <td>[139s]</td>
- <td><code>PNAME_NS</code></td>
+ <tr id="grammar-production-STRING_LITERAL_QUOTE" data-grammar-original="[9] STRING_LITERAL_QUOTE ::= '"' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '"'" data-grammar-expression="(',', [("'", '"'), ('*', ('|', [('[', '^#x22#x5C#xA#xD'), ('id', 'ECHAR'), ('id', 'UCHAR')])), ("'", '"')])" class="grammar-token">
+ <td>[9]</td>
+ <td><code>STRING_LITERAL_QUOTE</code></td>
<td>::=</td>
- <td><a href="#grammar-production-PN_PREFIX">PN_PREFIX</a>? '<code class="grammar-literal">:</code>'</td>
-</tr>
- <tr id="grammar-production-PNAME_LN" data-grammar-original="[140s] PNAME_LN ::= PNAME_NS PN_LOCAL" data-grammar-expression="(',', [('id', 'PNAME_NS'), ('id', 'PN_LOCAL')])" class="grammar-token">
- <td>[140s]</td>
- <td><code>PNAME_LN</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-PN_LOCAL">PN_LOCAL</a></td>
+ <td>'<code class="grammar-literal">"</code>' ([<code class="grammar-chars">^#x22#x5C#xA#xD</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">"</code>'</td>
</tr>
<tr id="grammar-production-BLANK_NODE_LABEL" data-grammar-original="[141s] BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?" data-grammar-expression="(',', [("'", '_:'), ('|', [('id', 'PN_CHARS_U'), ('[', '0-9')]), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), ("'", '.')])), ('id', 'PN_CHARS')]))])" class="grammar-token">
<td>[141s]</td>
@@ -1298,373 +585,155 @@
<td>::=</td>
<td>'<code class="grammar-literal">_:</code>' (<a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> [<code class="grammar-chars">0-9</code>]) ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>')<code class="grammar-star">*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a>)?</td>
</tr>
- <tr id="grammar-production-LANGTAG" data-grammar-original="[144s] LANGTAG ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )*" data-grammar-expression="(',', [("'", '@'), ('+', ('[', 'a-zA-Z')), ('*', (',', [("'", '-'), ('+', ('[', 'a-zA-Z0-9'))]))])" class="grammar-token">
- <td>[144s]</td>
- <td><code>LANGTAG</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">@</code>' [<code class="grammar-chars">a-zA-Z</code>]<code class="grammar-plus">+</code> ('<code class="grammar-literal">-</code>' [<code class="grammar-chars">a-zA-Z0-9</code>]<code class="grammar-plus">+</code>)<code class="grammar-star">*</code></td>
-</tr>
- <tr id="grammar-production-INTEGER" data-grammar-original="[20] INTEGER ::= [+-]? [0-9]+" data-grammar-expression="(',', [('?', ('[', '+-')), ('+', ('[', '0-9'))])" class="grammar-token">
- <td>[19]</td>
- <td><code>INTEGER</code></td>
- <td>::=</td>
- <td>[<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
-</tr>
- <tr id="grammar-production-DECIMAL" data-grammar-original="[21] DECIMAL ::= [+-]? ( ([0-9])* '.' ([0-9])+ )" data-grammar-expression="(',', [('?', ('[', '+-')), (',', [('*', ('[', '0-9')), ("'", '.'), ('+', ('[', '0-9'))])])" class="grammar-token">
- <td>[20]</td>
- <td><code>DECIMAL</code></td>
- <td>::=</td>
- <td>[<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-star">*</code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
-</tr>
- <tr id="grammar-production-DOUBLE" data-grammar-original="[22] DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+EXPONENT )" data-grammar-expression="(',', [('?', ('[', '+-')), ('|', [(',', [('+', ('[', '0-9')), ("'", '.'), ('*', ('[', '0-9')), ('id', 'EXPONENT')]), (',', [("'", '.'), ('+', ('[', '0-9')), ('id', 'EXPONENT')]), (',', [('+', ('[', '0-9')), ('id', 'EXPONENT')])])])" class="grammar-token">
- <td>[21]</td>
- <td><code>DOUBLE</code></td>
- <td>::=</td>
- <td>[<code class="grammar-chars">+-</code>]? ([<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-star">*</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>| </code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>| </code> [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code> <a href="#grammar-production-EXPONENT">EXPONENT</a>)</td>
-</tr>
- <tr id="grammar-production-EXPONENT" data-grammar-original="[154s] EXPONENT ::= [eE] [+-]? [0-9]+" data-grammar-expression="(',', [('[', 'eE'), ('?', ('[', '+-')), ('+', ('[', '0-9'))])" class="grammar-token">
- <td>[154s]</td>
- <td><code>EXPONENT</code></td>
- <td>::=</td>
- <td>[<code class="grammar-chars">eE</code>] [<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
-</tr>
- <tr id="grammar-production-STRING_LITERAL_QUOTE" data-grammar-original="[23] STRING_LITERAL_QUOTE ::= '"' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '"'" data-grammar-expression="(',', [("'", '"'), ('*', ('|', [('[', '^#x22#x5C#xA#xD'), ('id', 'ECHAR'), ('id', 'UCHAR')])), ("'", '"')])" class="grammar-token">
- <td>[22]</td>
- <td><code>STRING_LITERAL_QUOTE</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">"</code>' ([<code class="grammar-chars">^#x22#x5C#xA#xD</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">"</code>'</td>
-</tr>
- <tr id="grammar-production-STRING_LITERAL_SINGLE_QUOTE" data-grammar-original="[24] STRING_LITERAL_SINGLE_QUOTE ::= "'" ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* "'"" data-grammar-expression="(',', [("'", "'"), ('*', ('|', [('[', '^#x27#x5C#xA#xD'), ('id', 'ECHAR'), ('id', 'UCHAR')])), ("'", "'")])" class="grammar-token">
- <td>[23]</td>
- <td><code>STRING_LITERAL_SINGLE_QUOTE</code></td>
- <td>::=</td>
- <td>"<code class="grammar-literal">'</code>" ([<code class="grammar-chars">^#x27#x5C#xA#xD</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> "<code class="grammar-literal">'</code>"</td>
-</tr>
- <tr id="grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE" data-grammar-original="[25] STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR | UCHAR ) )* "'''"" data-grammar-expression="(',', [("'", "'''"), ('*', (',', [('?', ('|', [("'", "'"), ("'", "''")])), ('|', [('[', "^'\\"), ('id', 'ECHAR'), ('id', 'UCHAR')])])), ("'", "'''")])" class="grammar-token">
- <td>[24]</td>
- <td><code>STRING_LITERAL_LONG_SINGLE_QUOTE</code></td>
- <td>::=</td>
- <td>"<code class="grammar-literal">'''</code>" (("<code class="grammar-literal">'</code>" <code>| </code> "<code class="grammar-literal">''</code>")? [<code class="grammar-chars">^'\</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> "<code class="grammar-literal">'''</code>"</td>
-</tr>
- <tr id="grammar-production-STRING_LITERAL_LONG_QUOTE" data-grammar-original="[26] STRING_LITERAL_LONG_QUOTE ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR | UCHAR ) )* '"""'" data-grammar-expression="(',', [("'", '"""'), ('*', (',', [('?', ('|', [("'", '"'), ("'", '""')])), ('|', [('[', '^"\\'), ('id', 'ECHAR'), ('id', 'UCHAR')])])), ("'", '"""')])" class="grammar-token">
- <td>[25]</td>
- <td><code>STRING_LITERAL_LONG_QUOTE</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">"""</code>' (('<code class="grammar-literal">"</code>' <code>| </code> '<code class="grammar-literal">""</code>')? [<code class="grammar-chars">^"\</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">"""</code>'</td>
-</tr>
- <tr id="grammar-production-UCHAR" data-grammar-original="[27] UCHAR ::= ( "\u" HEX HEX HEX HEX )| ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX )" data-grammar-expression="('|', [(',', [("'", '\\u'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')]), (',', [("'", '\\U'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')])])" class="grammar-token">
- <td>[26]</td>
+ <tr id="grammar-production-UCHAR" data-grammar-original="[10] UCHAR ::= ( "\u" HEX HEX HEX HEX )| ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX )" data-grammar-expression="('|', [(',', [("'", '\\u'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')]), (',', [("'", '\\U'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')])])" class="grammar-token">
+ <td>[10]</td>
<td><code>UCHAR</code></td>
<td>::=</td>
<td>'<code class="grammar-literal">\u</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <code>| </code> '<code class="grammar-literal">\U</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
</tr>
- <tr id="grammar-production-ECHAR" data-grammar-original="[159s] ECHAR ::= "\" [tbnrf\"']" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf\\"\'')])" class="grammar-token">
- <td>[159s]</td>
+ <tr id="grammar-production-ECHAR" data-grammar-original="[153s] ECHAR ::= "\" [tbnrf"\]" data-grammar-expression="(',', [("'", '\\'), ('[', 'tbnrf"\'')])" class="grammar-token">
+ <td>[153s]</td>
<td><code>ECHAR</code></td>
<td>::=</td>
- <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf\"'</code>]</td>
-</tr>
- <tr id="grammar-production-WS" data-grammar-original="[161s] WS ::= #x20 | #x9 | #xD | #xA" data-grammar-expression="('|', [('#', '#x20'), ('#', '#x9'), ('#', '#xD'), ('#', '#xA')])" class="grammar-token">
- <td>[161s]</td>
- <td><code>WS</code></td>
- <td>::=</td>
- <td><code class="grammar-char-escape">#x20</code> <code>| </code> <code class="grammar-char-escape">#x9</code> <code>| </code> <code class="grammar-char-escape">#xD</code> <code>| </code> <code class="grammar-char-escape">#xA</code></td>
+ <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf"'\</code>]</td>
</tr>
- <tr id="grammar-production-ANON" data-grammar-original="[162s] ANON ::= "[" WS* "]"" data-grammar-expression="(',', [("'", '['), ('*', ('id', 'WS')), ("'", ']')])" class="grammar-token">
- <td>[162s]</td>
- <td><code>ANON</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">[</code>' <a href="#grammar-production-WS">WS</a><code class="grammar-star">*</code> '<code class="grammar-literal">]</code>'</td>
-</tr>
- <tr id="grammar-production-PN_CHARS_BASE" data-grammar-original="[163s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#00C0-#00D6]| [#00D8-#00F6]| [#00F8-#02FF]| [#0370-#037D]| [#037F-#1FFF]| [#200C-#200D]| [#2070-#218F]| [#2C00-#2FEF]| [#3001-#D7FF]| [#F900-#FDCF]| [#FDF0-#FFFD]| [#10000-#EFFFF]" data-grammar-expression="('|', [('[', 'A-Z'), ('[', 'a-z'), ('[', '#00C0-#00D6'), ('[', '#00D8-#00F6'), ('[', '#00F8-#02FF'), ('[', '#0370-#037D'), ('[', '#037F-#1FFF'), ('[', '#200C-#200D'), ('[', '#2070-#218F'), ('[', '#2C00-#2FEF'), ('[', '#3001-#D7FF'), ('[', '#F900-#FDCF'), ('[', '#FDF0-#FFFD'), ('[', '#10000-#EFFFF')])" class="grammar-token">
- <td>[163s]</td>
+ <tr id="grammar-production-PN_CHARS_BASE" data-grammar-original="[157s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#x00C0-#x00D6]| [#x00D8-#x00F6]| [#x00F8-#x02FF]| [#x0370-#x037D]| [#x037F-#x1FFF]| [#x200C-#x200D]| [#x2070-#x218F]| [#x2C00-#x2FEF]| [#x3001-#xD7FF]| [#xF900-#xFDCF]| [#xFDF0-#xFFFD]| [#x10000-#xEFFFF]" data-grammar-expression="('|', [('[', 'A-Z'), ('[', 'a-z'), ('[', '#x00C0-#x00D6'), ('[', '#x00D8-#x00F6'), ('[', '#x00F8-#x02FF'), ('[', '#x0370-#x037D'), ('[', '#x037F-#x1FFF'), ('[', '#x200C-#x200D'), ('[', '#x2070-#x218F'), ('[', '#x2C00-#x2FEF'), ('[', '#x3001-#xD7FF'), ('[', '#xF900-#xFDCF'), ('[', '#xFDF0-#xFFFD'), ('[', '#x10000-#xEFFFF')])" class="grammar-token">
+ <td>[157s]</td>
<td><code>PN_CHARS_BASE</code></td>
<td>::=</td>
- <td>[<code class="grammar-chars">A-Z</code>] <code>| </code> [<code class="grammar-chars">a-z</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00C0-#<span class="add">x</span>00D6</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00D8-#<span class="add">x</span>00F6</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00F8-#<span class="add">x</span>02FF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>0370-#<span class="add">x</span>037D</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>037F-#<span class="add">x</span>1FFF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>200C-#<span class="add">x</span>200D</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>2070-#<span class="add">x</span>218F</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>2C00-#<span class="add">x</span>2FEF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>3001-#<span class="add">x</span>D7FF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>F900-#<span class="add">x</span>FDCF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>FDF0-#<span class="add">x</span>FFFD</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>10000-#<span class="add">x</span>EFFFF</code>]</td>
+ <td>[<code class="grammar-chars">A-Z</code>] <code>| </code> [<code class="grammar-chars">a-z</code>] <code>| </code> [<code class="grammar-chars">#x00C0-#x00D6</code>] <code>| </code> [<code class="grammar-chars">#x00D8-#x00F6</code>] <code>| </code> [<code class="grammar-chars">#x00F8-#x02FF</code>] <code>| </code> [<code class="grammar-chars">#x0370-#x037D</code>] <code>| </code> [<code class="grammar-chars">#x037F-#x1FFF</code>] <code>| </code> [<code class="grammar-chars">#x200C-#x200D</code>] <code>| </code> [<code class="grammar-chars">#x2070-#x218F</code>] <code>| </code> [<code class="grammar-chars">#x2C00-#x2FEF</code>] <code>| </code> [<code class="grammar-chars">#x3001-#xD7FF</code>] <code>| </code> [<code class="grammar-chars">#xF900-#xFDCF</code>] <code>| </code> [<code class="grammar-chars">#xFDF0-#xFFFD</code>] <code>| </code> [<code class="grammar-chars">#x10000-#xEFFFF</code>]</td>
</tr>
- <tr id="grammar-production-PN_CHARS_U" data-grammar-original="[164s] PN_CHARS_U ::= PN_CHARS_BASE| '_'" data-grammar-expression="('|', [('id', 'PN_CHARS_BASE'), ("'", '_')])" class="grammar-token">
- <td>[164s]</td>
+ <tr id="grammar-production-PN_CHARS_U" data-grammar-original="[158s] PN_CHARS_U ::= PN_CHARS_BASE| '_'| ':'" data-grammar-expression="('|', [('id', 'PN_CHARS_BASE'), ("'", '_'), ("'", ':')])" class="grammar-token">
+ <td>[158s]</td>
<td><code>PN_CHARS_U</code></td>
<td>::=</td>
- <td><a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a> <code>| </code> '<code class="grammar-literal">_</code>'</td>
+ <td><a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a> <code>| </code> '<code class="grammar-literal">_</code>' <code>| </code> '<code class="grammar-literal">:</code>'</td>
</tr>
- <tr id="grammar-production-PN_CHARS" data-grammar-original="[166s] PN_CHARS ::= PN_CHARS_U| "-"| [0-9]| #00B7| [#0300-#036F]| [#203F-#2040]" data-grammar-expression="('|', [('id', 'PN_CHARS_U'), ("'", '-'), ('[', '0-9'), ('#', '#00B7'), ('[', '#0300-#036F'), ('[', '#203F-#2040')])" class="grammar-token">
- <td>[166s]</td>
+ <tr id="grammar-production-PN_CHARS" data-grammar-original="[160s] PN_CHARS ::= PN_CHARS_U| "-"| [0-9]| #x00B7| [#x0300-#x036F]| [#x203F-#x2040]" data-grammar-expression="('|', [('id', 'PN_CHARS_U'), ("'", '-'), ('[', '0-9'), ('#', '#x00B7'), ('[', '#x0300-#x036F'), ('[', '#x203F-#x2040')])" class="grammar-token">
+ <td>[160s]</td>
<td><code>PN_CHARS</code></td>
<td>::=</td>
- <td><a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> '<code class="grammar-literal">-</code>' <code>| </code> [<code class="grammar-chars">0-9</code>] <code>| </code> <code class="grammar-char-escape">#<span class="add">x</span>00B7</code> <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>0300-#<span class="add">x</span>036F</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>203F-#<span class="add">x</span>2040</code>]</td>
-</tr>
- <tr id="grammar-production-PN_PREFIX" data-grammar-original="[167s] PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | "." )* PN_CHARS )?" data-grammar-expression="(',', [('id', 'PN_CHARS_BASE'), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), ("'", '.')])), ('id', 'PN_CHARS')]))])" class="grammar-token">
- <td>[167s]</td>
- <td><code>PN_PREFIX</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a> ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>')<code class="grammar-star">*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a>)?</td>
-</tr>
- <tr id="grammar-production-PN_LOCAL" data-grammar-original="[168s] PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )* ( PN_CHARS | ':' | PLX ) ) ?" data-grammar-expression="(',', [('|', [('id', 'PN_CHARS_U'), ("'", ':'), ('[', '0-9'), ('id', 'PLX')]), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), ("'", '.'), ("'", ':'), ('id', 'PLX')])), ('|', [('id', 'PN_CHARS'), ("'", ':'), ('id', 'PLX')])]))])" class="grammar-token">
- <td>[168s]</td>
- <td><code>PN_LOCAL</code></td>
- <td>::=</td>
- <td>(<a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> [<code class="grammar-chars">0-9</code>] <code>| </code> <a href="#grammar-production-PLX">PLX</a>) ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>' <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> <a href="#grammar-production-PLX">PLX</a>)<code class="grammar-star">*</code> (<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> <a href="#grammar-production-PLX">PLX</a>))?</td>
+ <td><a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> '<code class="grammar-literal">-</code>' <code>| </code> [<code class="grammar-chars">0-9</code>] <code>| </code> <code class="grammar-char-escape">#x00B7</code> <code>| </code> [<code class="grammar-chars">#x0300-#x036F</code>] <code>| </code> [<code class="grammar-chars">#x203F-#x2040</code>]</td>
</tr>
- <tr id="grammar-production-PLX" data-grammar-original="[169s] PLX ::= PERCENT | PN_LOCAL_ESC" data-grammar-expression="('|', [('id', 'PERCENT'), ('id', 'PN_LOCAL_ESC')])" class="grammar-token">
- <td>[169s]</td>
- <td><code>PLX</code></td>
- <td>::=</td>
- <td><a href="#grammar-production-PERCENT">PERCENT</a> <code>| </code> <a href="#grammar-production-PN_LOCAL_ESC">PN_LOCAL_ESC</a></td>
-</tr>
- <tr id="grammar-production-PERCENT" data-grammar-original="[170s] PERCENT ::= '%' HEX HEX" data-grammar-expression="(',', [("'", '%'), ('id', 'HEX'), ('id', 'HEX')])" class="grammar-token">
- <td>[170s]</td>
- <td><code>PERCENT</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">%</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
-</tr>
- <tr id="grammar-production-HEX" data-grammar-original="[171s] HEX ::= [0-9] | [A-F] | [a-f]" data-grammar-expression="('|', [('[', '0-9'), ('[', 'A-F'), ('[', 'a-f')])" class="grammar-token">
- <td>[171s]</td>
+ <tr id="grammar-production-HEX" data-grammar-original="[162s] HEX ::= [0-9] | [A-F] | [a-f]" data-grammar-expression="('|', [('[', '0-9'), ('[', 'A-F'), ('[', 'a-f')])" class="grammar-token">
+ <td>[162s]</td>
<td><code>HEX</code></td>
<td>::=</td>
<td>[<code class="grammar-chars">0-9</code>] <code>| </code> [<code class="grammar-chars">A-F</code>] <code>| </code> [<code class="grammar-chars">a-f</code>]</td>
</tr>
- <tr id="grammar-production-PN_LOCAL_ESC" data-grammar-original="[172s] PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )" data-grammar-expression="(',', [("'", '\\'), ('|', [("'", '_'), ("'", '~'), ("'", '.'), ("'", '-'), ("'", '!'), ("'", '$'), ("'", '&'), ("'", "'"), ("'", '('), ("'", ')'), ("'", '*'), ("'", '+'), ("'", ','), ("'", ';'), ("'", '='), ("'", '/'), ("'", '?'), ("'", '#'), ("'", '@'), ("'", '%')])])" class="grammar-token">
- <td>[172s]</td>
- <td><code>PN_LOCAL_ESC</code></td>
- <td>::=</td>
- <td>'<code class="grammar-literal">\</code>' ('<code class="grammar-literal">_</code>' <code>| </code> '<code class="grammar-literal">~</code>' <code>| </code> '<code class="grammar-literal">.</code>' <code>| </code> '<code class="grammar-literal">-</code>' <code>| </code> '<code class="grammar-literal">!</code>' <code>| </code> '<code class="grammar-literal">$</code>' <code>| </code> '<code class="grammar-literal">&</code>' <code>| </code> "<code class="grammar-literal">'</code>" <code>| </code> '<code class="grammar-literal">(</code>' <code>| </code> '<code class="grammar-literal">)</code>' <code>| </code> '<code class="grammar-literal">*</code>' <code>| </code> '<code class="grammar-literal">+</code>' <code>| </code> '<code class="grammar-literal">,</code>' <code>| </code> '<code class="grammar-literal">;</code>' <code>| </code> '<code class="grammar-literal">=</code>' <code>| </code> '<code class="grammar-literal">/</code>' <code>| </code> '<code class="grammar-literal">?</code>' <code>| </code> '<code class="grammar-literal">#</code>' <code>| </code> '<code class="grammar-literal">@</code>' <code>| </code> '<code class="grammar-literal">%</code>')</td>
-</tr>
</tbody></table>
</div>
- </section>
</section>
- <section id="sec-parsing" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-parsing"><span class="secno">7. </span>Parsing</h2>
-
- <p>The <a href="../rdf-concepts/index.html"><abbr title="Resource Description Framework">RDF</abbr> Concepts and Abstract Syntax</a> ([<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]) specification defines three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em>:
-
- <a href="../rdf-concepts/index.html#dfn-iri">IRIs</a>,
- <a href="../rdf-concepts/index.html#dfn-literal">literals</a> and
- <a href="../rdf-concepts/index.html#dfn-blank-node">blank nodes</a>.
- Literals are composed of a <a href="../rdf-concepts/index.html#dfn-lexical-form">lexical form</a> and an optional <a href="../rdf-concepts/index.html#dfn-language-tag">language tag</a> [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or datatype IRI.
- An extra type, <code id="prefix" class="dfn">prefix</code>, is used during parsing to map string identifiers to namespace IRIs.
-
- This section maps a string conforming to the grammar in <a href="#sec-grammar-grammar" class="sectionRef sec-ref">section <span class="secno">6.5</span> <span class="sec-title">Grammar</span></a> to a set of triples by mapping strings matching productions and lexical tokens to <abbr title="Resource Description Framework">RDF</abbr> terms or their components (e.g. language tags, lexical forms of literals). Grammar productions change the parser state and emit triples.</p>
- <section id="sec-parsing-state" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-parsing-state"><span class="secno">7.1 </span>Parser State</h3>
-
- <p>Parsing Turtle requires a state of five items:</p>
- <ul>
- <li id="baseURI">IRI <code class="dfn">baseURI</code> — When the <a href="#grammar-production-base">base production</a> is reached, the second rule argument, <code>IRIREF</code>, is the base URI used for relative IRI resolution <span class="testrefs">(test: <a href="tests/#base1">base1</a> <a href="tests/#base2">base2</a>)</span>.</li>
-
- <li id="namespaces">Map[<a class="type prefix" href="#prefix">prefix</a> -> IRI] <code class="dfn">namespaces</code> — The second and third rule arguments (<code>PNAME_NS</code> and <code>IRIREF</code>) in the <a href="#grammar-production-prefixID">prefixID production</a> assign a namespace name (<code>IRIREF</code>) for the prefix (<code>PNAME_NS</code>). Outside of a <code>prefixID</code> production, any <code>PNAME_NS</code> is substituted with the namespace <span class="testrefs">(test: <a href="tests/#prefix1">prefix1</a> <!-- a href="tests/#escapedPrefix1">escapedPrefix1</a --> <a href="tests/#escapedNamespace1">escapedNamespace1</a>)</span>. Note that the prefix may be an empty string, per the <code>PNAME_NS,</code> production: <code>(PN_PREFIX)? ":"</code> <span class="testrefs">(test: <a href="tests/#default1">default1</a>)</span>.</li>
-
- <li id="bnodeLabels">Map[string -> <a href="../rdf-concepts/index.html#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node.</li>
- <li id="curSubject">RDF_Term <code class="dfn">curSubject</code> — The <code class="curSubject">curSubject</code> is bound to the <code><a href="#grammar-production-subject">subject</a></code> production.</li>
-
- <li id="curPredicate">RDF_Term <code class="dfn">curPredicate</code> — The <code class="curPredicate">curPredicate</code> is bound to the <code><a href="#grammar-production-verb">verb</a></code> production. If token matched was "<code>a</code>", <code class="curPredicate">curPredicate</code> is bound to the IRI <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code> <span class="testrefs">(test: <a href="tests/#type">type</a>)</span>.</li>
+ <section id="sec-parsing" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-parsing"><span class="secno">8. </span>Parsing</h2>
+ <p>Parsing N-Triples requires a state of one item:</p>
+ <ul>
+ <li id="bnodeLabels">Map[string -> <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node.</li>
+ </ul>
- </ul>
- </section>
<section id="sec-parsing-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">7.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</h3>
-
- <p>This table maps productions and lexical tokens to <code><abbr title="Resource Description Framework">RDF</abbr> terms</code> or components of <code><abbr title="Resource Description Framework">RDF</abbr> terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">7.</span> <span class="sec-title">Parsing</span></a>:</p>
-
- <table class="separated">
+ <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">8.1 </span>RDF Term Constructors</h3>
+ <p>This table maps productions and lexical tokens to <code>RDF terms</code> or components of <code>RDF terms</code> listed in <a href="#sec-parsing" class="sectionRef sec-ref">section <span class="secno">8.</span> <span class="sec-title">Parsing</span></a>:</p>
+ <table class="simple">
<thead>
- <tr> <th> production </th><th> type </th><th>procedure</th></tr>
+ <tr><th>production</th><th>type</th><th>procedure</th></tr>
</thead>
<tbody>
- <tr id="handle-IRIREF"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-IRIREF">IRIREF </a></td><td><a href="../rdf-concepts/index.html#dfn-iri"> IRI </a></td><td>The characters between "<" and ">" are taken, with the <a href="#numeric">numeric escape sequences</a> unescaped, to form the unicode string of the IRI. Relative IRI resolution is performed per <a href="#sec-iri-references" class="sectionRef">Section 6.3</a>.</td></tr>
- <tr id="handle-PNAME_NS"><td style="text-align:left;" rowspan="2"><a class="type string" href="#grammar-production-PNAME_NS">PNAME_NS </a></td><td><a href="#prefix"> prefix </a></td><td>When used in a <a href="#grammar-production-prefixID">prefixID</a> or <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> production, the <code>prefix</code> is the potentially empty unicode string matching the first argument of the rule is a key into the <a href="#namespaces">namespaces map</a>.</td></tr>
- <tr id="handle-PNAME_NS"> <td><a href="../rdf-concepts/index.html#dfn-iri"> IRI </a></td><td>When used in a <a href="#grammar-production-PrefixedName">PrefixedName</a> production, the <code>iri</code> is the value in the <a href="#namespaces">namespaces map</a> corresponding to the first argument of the rule.</td></tr>
- <tr id="handle-PNAME_LN"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-PNAME_LN">PNAME_LN </a></td><td><a href="../rdf-concepts/index.html#dfn-iri"> IRI </a></td><td>A potentially empty <a href="#prefix">prefix</a> is identified by the first sequence, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> <em class="rfc2119"><em class="rfc2119" title="MUST">MUST</em></em> have a corresponding <code>namespace</code>. The unicode string of the IRI is formed by unescaping the <a href="#reserved">reserved characters</a> in the second argument, <code>PN_LOCAL</code>, and concatenating this onto the <code>namespace</code>.</td></tr>
- <!-- tr id="handle-PrefixedName"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-PrefixedName" >PrefixedName </a></td><td><a href="../rdf-concepts/index.html#dfn-iri"> IRI </a></td><td>.</td></tr -->
- <tr id="handle-STRING_LITERAL_SINGLE_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE">STRING_LITERAL_SINGLE_QUOTE </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost "'"s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
- <tr id="handle-STRING_LITERAL_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost '"'s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
- <tr id="handle-STRING_LITERAL_LONG_SINGLE_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">STRING_LITERAL_LONG_SINGLE_QUOTE </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost "'''"s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
- <tr id="handle-STRING_LITERAL_LONG_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_LONG_QUOTE">STRING_LITERAL_LONG_QUOTE </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost '"""'s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
- <tr id="handle-LANGTAG"><td style="text-align:left;"><a class="type langTag" href="#grammar-production-LANGTAG">LANGTAG </a></td><td><a href="../rdf-concepts/index.html#dfn-language-tag">language tag</a></td><td>The characters following the <code>@</code> form the unicode string of the language tag.</td></tr>
- <tr id="handle-RDFLiteral"><td style="text-align:left;"><a class="type literal" href="#grammar-production-RDFLiteral">RDFLiteral </a></td><td><a href="../rdf-concepts/index.html#dfn-literal"> literal </a></td><td>The literal has a lexical form of the first rule argument, <code>String</code>, and either a language tag of <code>LANGTAG</code> or a datatype IRI of <code>iri</code>, depending on which rule matched the input. if neither a language tag nor a datatype IRI is provided, the literal has a datatype of <code>xsd:string</code>.</td></tr>
- <tr id="handle-INTEGER"><td style="text-align:left;"><a class="type integer" href="#grammar-production-INTEGER">INTEGER </a></td><td><a href="../rdf-concepts/index.html#dfn-literal"> literal </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:integer</code>.</td></tr>
- <tr id="handle-DECIMAL"><td style="text-align:left;"><a class="type decimal" href="#grammar-production-DECIMAL">DECIMAL </a></td><td><a href="../rdf-concepts/index.html#dfn-literal"> literal </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:decimal</code>.</td></tr>
- <tr id="handle-DOUBLE"><td style="text-align:left;"><a class="type double" href="#grammar-production-DOUBLE">DOUBLE </a></td><td><a href="../rdf-concepts/index.html#dfn-literal"> literal </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:double</code>.</td></tr>
- <tr id="handle-BooleanLiteral"><td style="text-align:left;"><a class="type boolean" href="#grammar-production-BooleanLiteral">BooleanLiteral </a></td><td><a href="../rdf-concepts/index.html#dfn-literal"> literal </a></td><td>The literal has a lexical form of the <code>true</code> or <code>false</code>, depending on which matched the input, and a datatype of <code>xsd:boolean</code>.</td></tr>
- <tr id="handle-BLANK_NODE_LABEL"><td style="text-align:left;"><a class="type bNode" href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node"> blank node </a></td><td>The string matching the second argument, <code>PN_LOCAL</code>, is a key in <a href="#bnodeLabels">bnodeLabels</a>. If there is no corresponding blank node in the map, one is allocated.</td></tr>
- <tr id="handle-ANON"><td style="text-align:left;"><a class="type bNode" href="#grammar-production-ANON">ANON </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node"> blank node </a></td><td>A blank node is generated.</td></tr>
- <tr id="handle-blankNodePropertyList"><td style="text-align:left;"><a class="type bNode" href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node"> blank node </a></td><td>A blank node is generated. Note the rules for <code>blankNodePropertyList</code> in the next section.</td></tr>
- <tr id="handle-collection"><td style="text-align:left;" rowspan="2"><a class="type bNode" href="#grammar-production-collection">collection </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node"> blank node </a></td><td>For non-empty lists, a blank node is generated. Note the rules for <code>collection</code> in the next section.</td></tr>
- <tr id="handle-collection"> <td><a href="../rdf-concepts/index.html#dfn-iri"> IRI </a></td><td>For empty lists, the resulting IRI is <code>rdf:nil</code>. Note the rules for <code>collection</code> in the next section.</td></tr>
+ <tr id="handle-IRIREF"><td style="text-align:left;"><a class="type IRI" href="#grammar-production-IRIREF">IRIREF </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri"> IRI </a></td><td>The characters between "<" and ">" are taken, with escape sequences unescaped, to form the unicode string of the IRI.</td></tr>
+ <tr id="handle-STRING_LITERAL_QUOTE"><td style="text-align:left;"><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form"> lexical form</a></td><td>The characters between the outermost '"'s are taken, with escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
+ <tr id="handle-LANGTAG"><td style="text-align:left;"><a class="type langTag" href="#grammar-production-LANGTAG">LANGTAG </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a></td><td>The characters following the <code>@</code> form the unicode string of the language tag.</td></tr>
+ <tr id="handle-literal"><td style="text-align:left;"><a class="type literal" href="#grammar-production-literal">literal </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal"> literal </a></td><td>The literal has a lexical form of the first rule argument, <code> STRING_LITERAL_QUOTE</code>, and either a language tag of <code>LANGTAG</code> or a datatype IRI of <code>iri</code>, depending on which rule matched the input. if neither a language tag nor a datatype IRI is provided, the literal has a datatype of <code>xsd:string</code>.</td></tr>
+ <tr id="handle-BLANK_NODE_LABEL"><td style="text-align:left;"><a class="type bNode" href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node"> blank node </a></td><td>The string after '<code>_:</code>', is a key in <a href="#bnodeLabels">bnodeLabels</a>. If there is no corresponding blank node in the map, one is allocated.</td></tr>
</tbody>
</table>
-
- </section>
- <section id="sec-parsing-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-parsing-triples"><span class="secno">7.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Constructors</h3>
- <p>
- A Turtle document defines an <a href="../rdf-concepts/index.html#dfn-rdf-graph"><abbr title="Resource Description Framework">RDF</abbr> graph</a> composed of set of <a href="../rdf-concepts/index.html#dfn-rdf-triple"><abbr title="Resource Description Framework">RDF</abbr> triple</a>s.
- The <code><a href="#grammar-production-subject">subject</a></code> production sets the <code class="curSubject">curSubject</code>.
- The <code><a href="#grammar-production-verb">verb</a></code> production sets the <code class="curPredicate">curPredicate</code>.
- Each <a tabindex="30" class="grammarRef" href="#grammar-production-object">object</a> <code>N</code> in the document produces an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code class="curSubject">curSubject</code> <code class="curPredicate">curPredicate</code> <code>N</code> .</span>
- </p>
-
- <h3 id="propertyList" style="padding-bottom:0; margin-bottom:0;"><span>Property Lists:</span></h3>
- <p style="padding-top:0; margin-top:0;">
- Beginning the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>, and sets <code class="curSubject">curSubject</code> to a novel <code>blank node</code> <code>B</code>.
- Finishing the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
- The node produced by matching <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> is the blank node <code>B</code>.
-
- </p>
-
- <h3 id="collection" style="padding-bottom:0; margin-bottom:0;"><span>Collections:</span></h3>
- <p style="padding-top:0; margin-top:0;">
- Beginning the <code><a href="#grammar-production-collection">collection</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
- Each <code>object</code> in the <code><a href="#grammar-production-collection">collection</a></code> production has a <code class="curSubject">curSubject</code> set to a novel <code>blank node</code> <code>B</code> and a <code class="curPredicate">curPredicate</code> set to <code>rdf:first</code>.
- For each object <code>object<sub>n</sub></code> after the first produces a triple:<span class="ntriple"><code>object<sub>n-1</sub></code> <code>rdf:rest</code> <code>object<sub>n</sub></code> .</span>
- Finishing the <code><a href="#grammar-production-collection">collection</a></code> production creates an additional triple <span class="ntriple"><code>curSubject rdf:rest rdf:nil</code> .</span> and restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>
- The node produced by matching <code><a href="#grammar-production-collection">collection</a></code> is the first blank node <code>B</code> for non-empty lists and <code>rdf:nil</code> for empty lists.
- </p>
</section>
- <section id="sec-parsing-example" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_sec-parsing-example"><span class="secno">7.4 </span>Parsing Example</h3><p><em>This section is non-normative.</em></p>
-
- <p>The following informative example shows the semantic actions performed when parsing this Turtle document with an LALR(1) parser:</p>
- <div class="example"><div class="example-title"><span>Example 26</span></div><pre class="example"><span>
-@prefix ericFoaf: <http://www.w3.org/People/Eric/ericP-foaf.rdf#> .
-@prefix : <http://xmlns.com/foaf/0.1/> .
-ericFoaf:ericP :givenName "Eric" ;
- :knows <http://norman.walsh.name/knows/who/dan-brickley> ,
- [ :mbox <mailto:timbl@w3.org> ] ,
- <http://getopenid.com/amyvdh> .
- </span></pre></div>
-
- <ul>
- <li>Map the prefix <code>ericFoaf</code> to the IRI <code>http://www.w3.org/People/Eric/ericP-foaf.rdf#</code>.</li>
- <li>Map the empty prefix to the IRI <code>http://xmlns.com/foaf/0.1/</code>.</li>
- <li>Assign <code class="curSubject">curSubject</code> the IRI <code>http://www.w3.org/People/Eric/ericP-foaf.rdf#ericP</code>.</li>
-
- <li>Assign <code class="curPredicate">curPredicate</code> the IRI <code>http://xmlns.com/foaf/0.1/givenName</code>.</li>
- <li>Emit an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code><...rdf#ericP></code> <code><.../givenName></code> <code>"Eric"</code> .</span></li>
-
- <li>Assign <code class="curPredicate">curPredicate</code> the IRI <code>http://xmlns.com/foaf/0.1/knows</code>.</li>
- <li>Emit an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code><...rdf#ericP></code> <code><.../knows></code> <code><...who/dan-brickley></code> .</span></li>
-
- <li>Emit an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code><...rdf#ericP></code> <code><.../knows></code> <code>_:1</code> .</span></li>
- <li>Save <code class="curSubject">curSubject</code> and reassign to the blank node <code>_:1</code>.</li>
-
- <li>Save <code class="curPredicate">curPredicate</code>.</li>
- <li>Assign <code class="curPredicate">curPredicate</code> the IRI <code>http://xmlns.com/foaf/0.1/mbox</code>.</li>
- <li>Emit an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code>_:1</code> <code><.../mbox></code> <code><mailto:timbl@w3.org></code> .</span></li>
-
- <li>Restore <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code> to their saved values (<code><...rdf#ericP></code>, <code><.../knows></code>).</li>
- <li>Emit an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code><...rdf#ericP></code> <code><.../knows></code> <code><http://getopenid.com/amyvdh></code> .</span></li>
-
- </ul>
- </section>
- </section>
- <section id="in-html" class="appendix informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_in-html"><span class="secno">A. </span>Embedding Turtle in HTML documents</h2><p><em>This section is non-normative.</em></p>
- <p>HTML ([<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>]) <code>script</code> <a href="http://dev.w3.org/html5/spec/Overview.html#scripting-1">tags</a>
- can be used to embed data blocks in documents. Turtle can be easily embedded in HTML this way.</p>
- <div class="example"><div class="example-title"><span>Example 27</span></div><pre class="example"><script type="text/turtle">
-@prefix dc: <http://purl.org/dc/terms/> .
-@prefix frbr: <http://purl.org/vocab/frbr/core#> .
-
-<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
- dc:creator "Wil Wheaton"@en ;
- dc:title "Just a Geek"@en ;
- frbr:realization <http://books.example.com/products/9780596007683.BOOK>,
- <http://books.example.com/products/9780596802189.EBOOK> .
-
-<http://books.example.com/products/9780596007683.BOOK> a frbr:Expression ;
- dc:type <http://books.example.com/product-types/BOOK> .
-
-<http://books.example.com/products/9780596802189.EBOOK> a frbr:Expression ;
- dc:type <http://books.example.com/product-types/EBOOK> .
-</script></pre></div>
- <p>Turtle content should be placed in a <code>script</code> tag with the
- <code>type</code> attribute set to <code>text/turtle</code>. <code><</code> and <code>></code> symbols
- do not need to be escaped inside of script tags. The character encoding of the embedded Turtle
- will match the HTML documents encoding.</p>
- <section class="informative" id="xhtml">
- <h3 aria-level="2" role="heading" id="h3_xhtml"><span class="secno">A.1 </span>XHTML</h3><p><em>This section is non-normative.</em></p>
- <p>
- Like JavaScript, Turtle authored for HTML (<code>text/html</code>) can break when used in XHTML
- (<code>application/xhtml+xml</code>). The solution is the same one used for JavaScript.
- </p>
- <div class="example"><div class="example-title"><span>Example 28</span></div><pre class="example"><script type="text/turtle">
-<strong># <![CDATA[</strong>
-@prefix frbr: <http://purl.org/vocab/frbr/core#> .
-
-<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work .
-<strong># ]]></strong>
-</script></pre></div>
- <p>When embedded in XHTML Turtle data blocks must be enclosed in CDATA sections. Those CDATA markers must be in Turtle comments. If the character sequence "<code>]]></code>" occurs in the document it must be escaped using strings escapes (<code>\u005d\u0054\u003e</code>). This will also make Turtle safe in polyglot documents served as both <code>text/html</code>
- and <code>application/xhtml+xml</code>. Failing to use CDATA sections or escape "<code>]]></code>" may result in a non well-formed XML document.</p>
- </section>
- <section id="in-html-parsing" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <h3 aria-level="2" role="heading" id="h3_in-html-parsing"><span class="secno">A.2 </span>Parsing Turtle in HTML</h3><p><em>This section is non-normative.</em></p>
- <p>There are no syntactic or grammar differences between parsing Turtle that has been embedded
- and normal Turtle documents. A Turtle document parsed from an HTML DOM will be a stream of character data rather than a stream of UTF-8 encoded bytes. No decoding is necessary if the HTML document has already been parsed into DOM. Each <code>script</code> data block is considered to be it's own Turtle document. <code>@prefix</code> and <code>@base</code> declarations in a Turtle data bloc are scoped to that data block and do not effect other data blocks.
-The HTML <code>lang</code> attribute or XHTML <code>xml:lang</code> attribute have no effect on the parsing of the data blocks.
-The base URI of the encapsulating HTML document provides a "Base URI Embedded in Content" per RFC3986 section 5.1.1.
+ <section id="rdf-triple-construction">
+ <h3 aria-level="2" role="heading" id="h3_rdf-triple-construction"><span class="secno">8.2 </span>RDF Triple Construction</h3>
+ <p>An N-Triples document defines an RDF graphs composed of a set of RDF triples. The <code><a href="#grammar-production-triple">triple</a></code> production produces a triple defined by the terms constructed for <code><a href="#grammar-production-subject">subject</a></code>, <code><a href="#grammar-production-predicate">predicate</a></code> and <code><a href="#grammar-production-object">object</a></code>.
+ </p></section>
- </p></section>
- </section>
- <section id="sec-mediaReg" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-mediaReg"><span class="secno">B. </span>Internet Media Type, File Extension and Macintosh File Type</h2>
+ </section>
+
+ <section id="section-ack" class="informative" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_section-ack"><span class="secno">9. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+ <p>The editor of the RDF 1.1 edition acknowledges valuable contributions from Gregg Kellogg, Eric Prud'hommeaux, Dave Beckett, David Robillard, Gregory Williams, Pat Hayes, Richard Cyganiak, Henry S. Thompson,
+Peter Ansell and David Booth.</p>
+ <p>This specification is a product of extended deliberations by the
+ <a href="http://www.w3.org/2000/09/dbwg/details?group=46168&public=1">members of the RDF Working Group</a>.
+ It draws upon the earlier specification in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">RDF Test Cases</a>, edited by Dave Beckett.</p>
+ </section>
+
+ <section id="sec-changes" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-changes"><span class="secno">A. </span>Changes to this document</h2><h2 id="generatedID">
+ </h2><h2 id="changes-since-last-publication-as-last-call-working-draft">Changes since last publication as Last Call Working Draft</h2>
+ <ul>
+ <li>The text for "Canonical N-Triples" has been made into a separate section.</li>
+ <li>A normative reference to RDF Concepts has been added</li>
+ </ul>
+ <h2 id="changes-since-original-publication-as-note">Changes since original publication as Note</h2>
+ <ul>
+ <li>Section defines <a href="#dfn-canonical-n-triples-document">canonical N-Triples document</a>.
+ </li><li>White space rules defined outside of grammar, as in Turtle.
+ </li><li>Comment processing defined.
+ </li><li>Parsing is defined.
+ </li><li>Removed "Summary of differences in N-Triples and Turtle".
+ </li><li>Recommendation track, not a working group Note.
+ </li></ul>
+ </section>
+
+ <section id="sec-mediaReg-n-triples" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+ <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-mediaReg-n-triples"><span class="secno">B. </span>N-Triples Internet Media Type, File Extension and Macintosh File Type </h2>
<dl>
<dt>Contact:</dt>
- <dd>Ian Davis</dd>
+ <dd>Eric Prud'hommeaux</dd>
<dt>See also:</dt>
<dd><a href="http://www.w3.org/2002/06/registering-mediatype">How to Register a Media Type for a <abbr title="World Wide Web Consortium">W3C</abbr> Specification</a></dd>
<dd><a href="http://www.w3.org/2001/tag/2002/0129-mime">Internet Media Type registration, consistency of use</a><br>TAG Finding 3 June 2002 (Revised 4 September 2002)</dd>
</dl>
- <p>The Internet Media Type / MIME Type for Turtle is "text/turtle".</p>
- <p>It is recommended that Turtle files have the extension ".ttl" (all lowercase) on all platforms.</p>
+ <p>The Internet Media Type / MIME Type for N-Triples is "application/n-triples".</p>
+ <p>It is recommended that N-Triples files have the extension ".nt" (all lowercase) on all platforms.</p>
- <p>It is recommended that Turtle files stored on Macintosh HFS file systems be given a file type of "TEXT".</p>
- <p>This information that follows has been <a href="http://www.w3.org/mid/20071218114549.GQ8244@w3.org">submitted to the IESG</a> for review, approval, and registration with IANA.</p>
+ <p>It is recommended that N-Triples files stored on Macintosh HFS file systems be given a file type of "TEXT".</p>
+ <p>This information that follows will be submitted to the IESG for review, approval, and registration with IANA.</p>
<dl>
<dt>Type name:</dt>
- <dd>text</dd>
+ <dd>application</dd>
<dt>Subtype name:</dt>
- <dd>turtle</dd>
+ <dd>n-triples</dd>
<dt>Required parameters:</dt>
<dd>None</dd>
<dt>Optional parameters:</dt>
- <dd><code>charset</code> — this parameter is required when transferring non-ASCII data. If present, the value of <code>charset</code> is always <code>UTF-8</code>.</dd>
+ <dd>None</dd>
<dt>Encoding considerations:</dt>
- <dd>The syntax of Turtle is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd>
- <dd>Unicode code points may also be expressed using an \uXXXX (U+0000 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-Fa-f]</dd>
+ <dd>The syntax of N-Triples is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd>
+ <dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]</dd>
<dt>Security considerations:</dt>
- <dd>Turtle is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
+ <dd>N-Triples is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>
- <dd>Turtle is used to express arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on Turtle documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information.</dd>
- <dd>Turtle can express data which is presented to the user, for example, <abbr title="Resource Description Framework">RDF</abbr> Schema labels. Application rendering strings retrieved from untrusted Turtle documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
- <dd>Turtle uses IRIs as term identifiers. Applications interpreting data expressed in Turtle should address the security issues of
+ <dd>N-Triples is used to express arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on N-Triples documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information.</dd>
+ <dd>N-Triples can express data which is presented to the user, for example, RDF Schema labels. Application rendering strings retrieved from untrusted N-Triples documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd>
+ <dd>N-Triples uses IRIs as term identifiers. Applications interpreting data expressed in N-Triples should address the security issues of
<a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8, as well as
<a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] Section 7.</dd>
- <dd>Multiple IRIs may have the same appearance. Characters in different scripts may
- look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed
- by combining characters may have the same visual representation as another character
- (LATIN SMALL LETTER E followed by COMBINING ACUTE ACCENT has the same visual representation
+ <dd>Multiple IRIs may have the same appearance. Characters in different scripts may
+ look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed
+ by combining characters may have the same visual representation as another character
+ (LATIN SMALL LETTER E followed by COMBINING ACUTE ACCENT has the same visual representation
as LATIN SMALL LETTER E WITH ACUTE).
<!-- (<code>foo:resum鼯code> and <code>fоо:resumé</code>)-->
Any person or application that is writing or interpreting data in Turtle must take care to use the IRI that matches the intended semantics, and avoid IRIs that make look similar.
- Further information about matching of similar characters can be found
- in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security
+ Further information about matching of similar characters can be found
+ in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security
Considerations</a> [<cite><a class="bibref" href="#bib-UNICODE-SECURITY">UNICODE-SECURITY</a></cite>] and
- <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
+ <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8.
-
- <!--@@ no security considerations section at this time. @@
- See Turtle - Terse RDF Triple Language appendix X, <a href="#security">Security Considerations</a>
- as well as <a class="norm" href="http://www.ietf.org/rfc/rfc3629.txt">RFC 3629</a>
- [<a href="#rfc3629">RFC3629</a>] section 7, Security Considerations. --></dd>
+ </dd>
<dt>Interoperability considerations:</dt>
<dd>There are no known interoperability issues.</dd>
@@ -1675,12 +744,10 @@
<dd>No widely deployed applications are known to use this media type. It may be used by some web services and clients consuming their data.</dd>
<dt>Additional information:</dt>
<dt>Magic number(s):</dt>
- <dd>Turtle documents may have the strings '@prefix' or '@base' (case dependent) near the beginning of the document.</dd>
+ <dd>None.</dd>
<dt>File extension(s):</dt>
- <dd>".ttl"</dd>
+ <dd>".nt"</dd>
- <dt>Base URI:</dt>
- <dd>The Turtle '@base <IRIref>' term can change the current base URI for relative IRIrefs in the query language that are used sequentially later in the document.</dd>
<dt>Macintosh file type code(s):</dt>
<dd>"TEXT"</dd>
<dt>Person & email address to contact for further information:</dt>
@@ -1692,87 +759,20 @@
<dd>None</dd>
<dt>Author/Change controller:</dt>
- <dd>The Turtle specification is the product of the <abbr title="Resource Description Framework">RDF</abbr> WG. The <abbr title="World Wide Web Consortium">W3C</abbr> reserves change control over this specifications.</dd>
+ <dd>The N-Triples specification is the product of the RDF WG. The <abbr title="World Wide Web Consortium">W3C</abbr> reserves change control over this specifications.</dd>
</dl>
</section>
-
-
-
- <section id="sec-acks" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-acks"><span class="secno">C. </span>Acknowledgements</h2>
-
- <p>This work was described in the paper
- <a href="http://www.dajobe.org/2003/11/new-syntaxes-rdf/">New Syntaxes for <abbr title="Resource Description Framework">RDF</abbr></a>
- which discusses other <abbr title="Resource Description Framework">RDF</abbr> syntaxes and the background
- to the Turtle (Submitted to WWW2004, referred to as <em>N-Triples
- Plus</em> there).</p>
-
- <p>This work was started during the
- <a href="http://www.w3.org/2001/sw/Europe/">Semantic Web Advanced Development Europe (SWAD-Europe)</a>
- project funded by the EU IST-7 programme IST-2001-34732 (2002-2004)
- and further development supported by the
- <a href="http://www.ilrt.bris.ac.uk/">Institute for Learning and Research Technology</a> at the <a href="http://www.bristol.ac.uk/">University of Bristol</a>, UK (2002-Sep 2005).
- </p>
-
- </section>
- <section id="sec-changelog" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
- <!--OddPage--><h2 aria-level="1" role="heading" id="h2_sec-changelog"><span class="secno">D. </span>Changes since the last publication of this document</h2>
-
- <ul>
- <li>Renaming for STRING_* productions to STRING_LITERAL_QUOTE sytle names rather than numbers
- </li><li>Local part of prefix names can now include ":"
- </li><li>Turtle in HTML
- </li><li>Renaming of grammar tokens and rules around IRIs
- </li><li>Reserved character escape sequences
- </li><li>String escape sequences limited to strings
- </li><li>Numeric escape sequences limited to IRIs and Strings
- </li><li>Support top-level blank-predicate-object lists
- </li><li>Whitespace required between @prefix and prefix label
- </li></ul>
+
- <p>Other changes since the Team Submission
- <a href="http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114"><abbr title="World Wide Web Consortium">W3C</abbr> Turtle Submission 2008-01-14</a>
- . See the
- <a href="http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114#sec-changelog">Previous changelog for further information</a>
- </p>
-
-
- <ul>
-
- <li>Adopted three additional string syntaxes from <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>: <a href="#grammar-production-STRING_LITERAL2">STRING_LITERAL2</a>, <a href="#grammar-production-STRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a>, <a href="#grammar-production-STRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></li>
-
- <li>Adopted <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>'s syntax for prefixed names (see <a href="http://www.w3.org/TR/sparql11-query/#rPrefixedName">editor's draft</a>):
- <ul>
- <li>'.'s in names in all positions of a local name apart from the first or last, e.g. <code>ex:first.name</code>.</li>
-
- <li>digits in the first character of the <a href="http://www.w3.org/TR/rdf-sparql-query/#rPN_LOCAL">PN_LOCAL</a> lexical token, e.g. <code>ex:7tm</code>.</li>
- </ul></li>
- <li>adopted <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>'s IRI resolution and prefix substitution text.</li>
-
- <li>explicitly allowed re-use of the same prefix.</li>
- <li>Added <a href="#sec-parsing">parsing rules</a>.</li>
- </ul>
-
- </section>
-
-
-
-
-
-
-
-
-<section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">E. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">E.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a>. September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
-</dd><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
-</dd><dt id="bib-HTML5">[HTML5]</dt><dd rel="dcterms:requires">Robin Berjon; Steve Faulkner; Travis Leithead; Erika Doyle Navara; Edward O'Connor; Silvia Pfeiffer. <a href="http://www.w3.org/TR/html5/"><cite>HTML5</cite></a>. 6 August 2013. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a>
-</dd><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd rel="dcterms:requires">Graham Klyne; Jeremy Carroll. <a href="http://www.w3.org/TR/rdf-concepts/"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-concepts/">http://www.w3.org/TR/rdf-concepts/</a>
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">C. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-EBNF-NOTATION">[EBNF-NOTATION]</dt><dd rel="dcterms:requires">Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; François Yergeau. <a href="http://www.w3.org/TR/REC-xml/#sec-notation"><cite>EBNF Notation</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-xml/#sec-notation">http://www.w3.org/TR/REC-xml/#sec-notation</a>
+</dd><dt id="bib-RDF-TESTCASES">[RDF-TESTCASES]</dt><dd rel="dcterms:requires">jan grant; Dave Beckett. <a href="http://www.w3.org/TR/rdf-testcases"><cite>RDF Test Cases</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-testcases">http://www.w3.org/TR/rdf-testcases</a>
+</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-RFC3023">[RFC3023]</dt><dd rel="dcterms:requires">M. Murata; S. St.Laurent; D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types (RFC 3023)</cite></a>. January 2001. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a>
</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:requires">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
+</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:requires">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">RDF 1.1 Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
</dd><dt id="bib-UNICODE">[UNICODE]</dt><dd rel="dcterms:requires"><a href="http://www.unicode.org/versions/latest/"><cite>The Unicode Standard</cite></a>. URL: <a href="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</a>
</dd><dt id="bib-UTF-8">[UTF-8]</dt><dd rel="dcterms:requires">F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a>
-</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">E.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-RDF-MT">[RDF-MT]</dt><dd rel="dcterms:references">Patrick Hayes. <a href="http://www.w3.org/TR/rdf-mt/"><cite>RDF Semantics</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-mt/">http://www.w3.org/TR/rdf-mt/</a>
-</dd><dt id="bib-RDF-SPARQL-QUERY">[RDF-SPARQL-QUERY]</dt><dd rel="dcterms:references">Eric Prud'hommeaux; Andy Seaborne. <a href="http://www.w3.org/TR/rdf-sparql-query/"><cite>SPARQL Query Language for RDF</cite></a>. 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-sparql-query/">http://www.w3.org/TR/rdf-sparql-query/</a>
-</dd><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-UNICODE-SECURITY">[UNICODE-SECURITY]</dt><dd rel="dcterms:references">Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations</cite></a>. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a>
</dd></dl></section></section></body></html>
\ No newline at end of file