Move RDF API methods to new json-ld-rdf document.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 12 Dec 2012 17:42:02 -0800
changeset 1033 b6b3aa239af2
parent 1032 e33fe146d2f3
child 1034 9969321afca0
Move RDF API methods to new json-ld-rdf document.
Cleanup references within RDF algorithms to not require RDf WebIDL definitions.
This addresses issue #200.
spec/index.php
spec/latest/index.php
spec/latest/json-ld-api/index.html
spec/latest/json-ld-rdf/index.html
--- a/spec/index.php	Tue Dec 11 18:54:28 2012 -0800
+++ b/spec/index.php	Wed Dec 12 17:42:02 2012 -0800
@@ -129,6 +129,21 @@
                  <li><a href="latest/rdf-graph-normalization/">latest</a></li>
 <?php
 
+$drafts = getDrafts('json-ld-rdf');
+
+foreach ($drafts as $date => $dir) {
+    print("                 <li><a href=\"$dir/\">$date</a></li>");
+}
+
+?>
+               </ul>
+
+
+               <h2>JSON-LD RDF API</h2>
+               <ul>
+                 <li><a href="latest/json-ld-rdf/">latest</a></li>
+<?php
+
 $drafts = getDrafts('rdf-graph-normalization');
 
 foreach ($drafts as $date => $dir) {
--- a/spec/latest/index.php	Tue Dec 11 18:54:28 2012 -0800
+++ b/spec/latest/index.php	Wed Dec 12 17:42:02 2012 -0800
@@ -46,6 +46,9 @@
                  <li><a href="json-ld-framing/">JSON-LD Framing</a> - JSON-LD
                  Framing describes the Application Programming Interface for
                  flattening and framing JSON-LD documents.</li>
+                 <li><a href="json-ld-rdf/">JSON-LD RDF API</a> - JSON-LD
+                 RDF AP describes the Application Programming Interface for
+                 transforming JSON-LD to RDF.</li>
                  <li><a href="rdf-graph-normalization/">RDF Graph Normalization</a> - 
                  The RDF Graph Normalization document is a general algorithm for
                  serializing RDF graphs. It is most useful when comparing
--- a/spec/latest/json-ld-api/index.html	Tue Dec 11 18:54:28 2012 -0800
+++ b/spec/latest/json-ld-api/index.html	Wed Dec 12 17:42:02 2012 -0800
@@ -375,22 +375,11 @@
 -->
   </pre>
 
-  <p>
-A developer can use the JSON-LD API to transform the markup above into a
-JSON-LD document:
-  </p>
-
-  <pre class="example" data-transform="updateExample">
-function conversionCallback(result)
-{
-  console.log("JSON-LD Document: ", result);
-};
-
-jsonld.fromRDF(data, conversionCallback, {"format": "ntriples"});
-  </pre>
+  <p>A developer can use the
+    <a href="#convert-from-rdf-algorithm">Convert from RDF Algorithm</a>.</p>
 
   <p>
-The following expanded output would be the result of the call above:
+The following expanded output would be the result performing this transformation:
   </p>
 
   <pre class="example" data-transform="updateExample">
@@ -419,23 +408,9 @@
 }
   </pre>
 
-  <p>
-Transforming the node above back to RDF is as simple as calling the
-<code>toRDF()</code> method:
-  </p>
-
-  <pre class="example" data-transform="updateExample">
-var jsonldDocument = ...; // assign the JSON-LD document here
-
-function rdfCallback(quads)
-{
-  console.log("RDF Data: ", quads);
-};
-
-jsonld.toRDF(jsonldDocument, rdfCallback);
-  </pre>
-
-</section>
+  <p>Transforming the node above back to RDF using the
+    <a href="#convert-to-rdf-algorithm">Convert to RDF Algorithm</a>.</p>
+  </section>
 
 </section>
 
@@ -452,7 +427,7 @@
 
   <p>There are two classes of products that can claim conformance to this
     specification: <tref title="JSON-LD Implementation">JSON-LD Implementations</tref>
-    and <tref title="JSON-LD Processor">JSON-LD Processors</tref>.
+    and <tref title="JSON-LD Processor">JSON-LD Processors</tref>.</p>
 
   <p>A conforming <tdef>JSON-LD Implementation</tdef> is a system capable of transforming
     JSON-LD documents according the algorithms defined in this specification.</p>
@@ -545,31 +520,37 @@
     <dd>A <tref>node object</tref> represents zero or more properties of a
       <tref>node</tref> in the <tref>JSON-LD graph</tref> serialized by the
       JSON-LD document. A <tref>JSON Object</tref> is a <tref>node object</tref>
-      if it exists outside of the JSON-LD Context and:</p>
+      if it exists outside of the JSON-LD Context and:
       <ul>
         <li>it does not contain the <code>@value</code>, <code>@list</code>,
         or <code>@set</code> keywords, or</li>
         <li>it does not contain the <code>@graph</code> keyword and is
-        the top-most <tref>JSON Object</tref> in the JSON-LD document.
-      </ul></dd>
+        the top-most <tref>JSON Object</tref> in the JSON-LD document.</li>
+      </ul>
+    </dd>
     <dt><tdef>blank node</tdef></dt>
     <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that does not contain a de-referenceable
       identifier because it is either ephemeral in nature or does not contain information that needs to be
       linked to from outside of the JSON-LD graph.</dd>
     <dt><tdef>blank node identifier</tdef></dt>
     <dd>A blank node identifier is a string that can be used as an identifier for a <tref>blank node</tref> within
-      the scope of a JSON-LD document. Blank node identifiers begin with <code>_:</code>.
-    <dt><tdef>property</tdef></dt>
-    <dd>The <tref>IRI</tref> label of an edge in a <tref>JSON-LD graph</tref>.</dd>
+      the scope of a JSON-LD document. Blank node identifiers begin with <code>_:</code>.</dd>
     <dt><tdef>subject</tdef></dt>
     <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> with at least one outgoing edge, related to an <tref>object</tref> node through a <tref>property</tref>.</dd>
+    <dt><tdef>property</tdef></dt>
+    <dd>The <tref>IRI</tref> label of an edge in a <tref>JSON-LD graph</tref>.
+      Within JSON-LD, an <tdef>RDF predicate</tdef> is refered to as a
+      <tref>property</tref>.</dd>
     <dt><tdef>object</tdef></dt>
     <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> with at least one incoming edge.</dd>
+    <dt><tdef>literal</tdef></dt>
+    <dd>An <tref>object</tref> expressed as a value such as a <tref>string</tref>, <tref>number</tref> or in <tref>expanded form</tref>.</dd>
+    <dt><tdef>triple</tdef></dt>
+    <dd>A piece of information that contains three items; a <tref>subject</tref>, a <tref>property</tref>,
+      and an <tref>object</tref>.</dd>
     <dt><tdef>quad</tdef></dt>
     <dd>A piece of information that contains four items; a <tref>subject</tref>, a <tref>property</tref>,
       an <tref>object</tref>, and a <tref>graph name</tref>.</dd>
-    <dt><tdef>literal</tdef></dt>
-    <dd>An <tref>object</tref> expressed as a value such as a <tref>string</tref>, <tref>number</tref> or in <tref>expanded form</tref>.</dd>
   </dl>
 </section>
 
@@ -1104,7 +1085,7 @@
               <li>Set <em>multilingual array</em> to an empty array.</li>
               <li>For each key-value pair in the <em>language map</em> ordered case-sensitively by key, and for each value, if value is an <tref>array</tref>:
                 <ol class="algorithm">
-                  <li>Create a new <tref>JSON Object</tref>, referred to as an <em>expanded language object</em>.
+                  <li>Create a new <tref>JSON Object</tref>, referred to as an <em>expanded language object</em>.</li>
                   <li>Add a key-value pair to the <em>expanded language object</em> where the
                     key is <code>@value</code> and the value is
                     the value associated with the key in the <em>language map</em>, which MUST be a
@@ -1113,7 +1094,7 @@
                     key is <code>@language</code>, and the value is the key in the
                     <em>language map</em>, transformed to lowercase, which MUST be valid according to [[!BCP47]].
                   </li>
-                  <li>Append the <em>expanded language object</em> to the <em>multilingual array</em>.
+                  <li>Append the <em>expanded language object</em> to the <em>multilingual array</em>.</li>
                 </ol>
               </li>
               <li>Set the <em>value</em> associated with <em>property</em> to the <em>multilingual array</em>.</li>
@@ -1132,7 +1113,7 @@
                   <li>Add key from the <em>annotation map</em> to <em>expanded value</em> using the
                     key <code>@annotation</code>, unless <em>expanded value</em> already has an
                     <code>@annotation</code> key.</li>
-                  <li>Append <em>expanded value</em> to the <em>annotation array</em>.
+                  <li>Append <em>expanded value</em> to the <em>annotation array</em>.</li>
                 </ol>
               </li>
               <li>Set the <em>value</em> associated with <em>property</em> to the <em>annotation array</em>.</li>
@@ -1529,14 +1510,14 @@
       formats using the algorithms specified in this section.</p>
 
     <p>The JSON-LD Processing Model describes processing rules for extracting RDF
-      from a JSON-LD document, and for transforming an array of <a>Quad</a> retrieved by processing
+      from a JSON-LD document, and for transforming an array of <tref>Quad</tref> retrieved by processing
       another serialization format into JSON-LD. Note that many uses of JSON-LD may not require
       generation of RDF.</p>
 
     <p>The processing algorithms described in this section are provided in
       order to demonstrate how one might implement a JSON-LD to RDF processor.
       Conformant implementations are only required to produce the same type and
-      number of quads during the output process and are not required to
+      number of <tref title="quad">quads</tref> during the output process and are not required to
       implement the algorithm exactly as described.</p>
 
     <section class="informative">
@@ -1547,7 +1528,7 @@
 
       <p>As with other grammars used for describing <tref>Linked Data</tref>, a key
         concept is that of a <tref>node</tref> in a <tref>JSON-LD graph</tref>.
-        Nodes may be of three basic types. The first is the <ldtref>IRI</ldtref>,
+        Nodes may be of three basic types. The first is the <tref>IRI</tref>,
         which is used to refer to
         <tref title="node">nodes</tref> in other <tref title="JSON-LD graph">JSON-LD graphs</tref>.
         The second is the <tref>blank node</tref>, which are nodes for which an external name does not
@@ -1725,7 +1706,7 @@
             <li>If <tref>active object</tref> is not <tref>null</tref>:
               <ol class="algorithm">
                 <li>If neither <tref>active subject</tref> nor <tref>active property</tref> are <tref>null</tref>,
-                  generate a <a>Quad</a>
+                  generate a <tref>Quad</tref>
                   representing <tref>active subject</tref>, <tref>active property</tref>,
                   <tref>active object</tref>, and <tref>graph name</tref>.</li>
                 <li>Return <tref>active object</tref>.</li>
@@ -1733,7 +1714,7 @@
             </li>
             <li id="processing-step-subject">If <em>element</em> has a <code>@id</code> property,
               the value MUST be a <tref>string</tref>, set the <tref>active subject</tref> to the previously
-              <tref>expanded value</tref> (either a <tref>blank node</tref> or an <ldtref>IRI</ldtref>).</li>
+              <tref>expanded value</tref> (either a <tref>blank node</tref> or an <tref>IRI</tref>).</li>
             <li>
               Otherwise, if <em>element</em> does not have a <code>@id</code> property, set the <tref>active
               subject</tref> to newly generated <tref>blank node</tref>.</li>
@@ -1767,10 +1748,10 @@
           <tref>active subject</tref>, <tref>active property</tref>, and <tref>graph name</tref>.</li>
 
         <li>Otherwise, if <em>element</em> is a <tref>string</tref>, then the <tref>active property</tref>
-          must be <code>rdf:type</code> so set the <tref>active object</tref> to an <ldtref>IRI</ldtref>.</li>
+          must be <code>rdf:type</code> so set the <tref>active object</tref> to an <tref>IRI</tref>.</li>
 
         <li>If any of these steps created an <tref>active object</tref> and neither <tref>active subject</tref>
-          nor <tref>active property</tref> are <tref>null</tref>, generate a <a>Quad</a> using
+          nor <tref>active property</tref> are <tref>null</tref>, generate a <tref>Quad</tref> using
           <tref>active subject</tref>,<tref>active property</tref>, <tref>active object</tref> and
           <tref>graph name</tref>.
         </li>
@@ -1793,7 +1774,7 @@
           If <em>array</em> is empty return <code>rdf:nil</code>.
         </li>
         <li>
-          Otherwise, generate a <a>Quad</a> using using the <tref>active subject</tref>, <tref>active property</tref>
+          Otherwise, generate a <tref>Quad</tref> using using the <tref>active subject</tref>, <tref>active property</tref>
           and a newly generated <tref>blank node</tref> identified as <em>first <tref>blank node</tref></em>.
         </li>
         <li>
@@ -1809,7 +1790,7 @@
             </li>
             <li>Unless this is the last element in <em>array</em>, generate a new <tref>blank node</tref> identified as
               <em>rest blank node</em>, otherwise use <code>rdf:nil</code>.</li>
-            <li>Generate a new <a>Quad</a> using <em>first blank node</em>,
+            <li>Generate a new <tref>Quad</tref> using <em>first blank node</em>,
               <code>rdf:rest</code> and <em>rest blank node</em>.</li>
             <li>Set <em>first blank node</em> to
               <em>rest blank node</em>.</li>
@@ -1821,15 +1802,16 @@
 
     <section>
       <h2>Convert from RDF Algorithm</h2>
-      <p>In some cases, data exists natively in Triples or Quads form; for example, if the data was originally
+      <p>In some cases, data exists natively in <tref title="triple">Triples</tref>
+        or <tref title="quad">Quads</tref> form; for example, if the data was originally
         represented in an RDF graph or triple/quad store. This algorithm is designed to simply translate
-        an array of <ldtref title="Quad">Quads</ldtref> into a JSON-LD document.</p>
+        an array of <tref title="quad">Quads</tref> into a JSON-LD document.</p>
       <p>When expanding <tref>typed literal</tref> values having a datatype of <code>xsd:string</code>,
         the <code>@type</code> MUST NOT be set to <code>xsd:string</code> and the resulting value
         MUST have only a <code>@value</code> property.</p>
 
       <p>The conversion algorithm takes a single parameter <em>input</em> in the form of an
-        array of <a>Quad</a> representations.</p>
+        array of <tref>Quad</tref> representations.</p>
 
       <ol class="algorithm">
         <li id="new_graph">Construct <em>defaultGraph</em> as a <tref>JSON object</tref>
@@ -1837,7 +1819,7 @@
         <li>Construct <em>graphs</em> as a <tref>JSON object</tref> containing <em>defaultGraph</em>
           identified by
           an empty <tref>string</tref>.</li>
-        <li>For each quad in <em>input</em>:
+        <li>For each <tref>quad</tref> in <em>input</em>:
           <ol class="algorithm">
             <li>Set <em>graph</em> to the entry in <em>graphs</em> identified
               by <em>name</em>, initializing it to a new entry using the mechanism
@@ -1848,7 +1830,7 @@
               <em>object</em> in <tref>expanded form</tref>, as described in
               <a href="#value-expansion">Value Expansion</a>. Add the
               resulting <em>object representation</em> to the entry indexed by
-              <em>first</em>, and skip to the next quad.</li>
+              <em>first</em>, and skip to the next <tref>quad</tref>.</li>
             <li>If <em>property</em> is <code>rdf:rest</code>:
               <ol class="algorithm">
                 <li>If <em>object</em> is a <tref>blank node</tref>, use the entry in
@@ -1856,7 +1838,7 @@
                   to a new <tref>JSON object</tref> if necessary. Add the <em>nominalValue</em> of
                   <em>object</em> to the entry indexed by <em>rest</em>.
                 </li>
-                <li>Skip to the next quad.</li>
+                <li>Skip to the next <tref>quad</tref>.</li>
               </ol>
             </li>
             <li>If <em>name</em> is not <tref>null</tref>, and <em>defaultGraph.nodes</em>
@@ -2131,58 +2113,6 @@
             complexity associated with conversion to RDF.</dd>
         </dl>
       </dd>
-
-      <dt>void fromRDF()</dt>
-      <dd>Creates a JSON-LD document given an set of <ldtref title="Quad">Quads</ldtref>.
-        <dl class="parameters">
-          <dt>Quad[] input</dt>
-          <dd>A set of <tref title="JSON-LD graph">JSON-LD graphs</tref> represented as an array of <ldtref title="Quad">Quads</ldtref>.</dd>
-          <dt>JsonLdCallback callback</dt>
-          <dd>A callback that is called when processing is complete on
-            the given <code>input</code>.</dd>
-          <dt>optional JsonLdOptions? options</dt>
-          <dd>A set of options that will affect the algorithm. This includes <code>notType</code>,
-            which if set to <tref>true</tref> causes the resulting document to use <code>rdf:type</code>
-            as a property, instead of <code>@type</code>.</dd>
-        </dl>
-      </dd>
-
-      <dt>void toRDF()</dt>
-      <dd>
-        Processes the <code>input</code> according to the
-        <a href="#convert-to-rdf-algorithm">Convert to RDF Algorithm</a>, calling
-        the provided <code>callback</code> for each <ldtref>Quad</ldtref> generated.
-        <dl class="parameters">
-          <dt>object or object[] or IRI input</dt>
-          <dd>The JSON-LD object or array of JSON-LD objects to convert to RDF or a <a>IRI</a>
-            referencing the JSON-LD document to convert to RDF.</dd>
-          <dt>QuadCallback callback</dt>
-          <dd>A callback that is called when the input <code>input</code> has been converted
-            to <ldtref title="Quad">Quads</ldtref>.
-          </dd>
-          <dt>optional JsonLdOptions? options</dt>
-          <dd>A set of options that MAY affect the conversion to RDF such as, e.g.,
-            the input document's base <tref>IRI</tref>.</dd>
-        </dl>
-
-        <dl title="InvalidContext">
-          <dt>INVALID_SYNTAX</dt>
-          <dd>A general syntax error was detected in the <code>@context</code>.
-            For example, if a <code>@type</code> key maps to anything other than
-            <code>@id</code> or an <tref>absolute IRI</tref>, this error will
-            be returned.</dd>
-          <dt>LOAD_ERROR</dt>
-          <dd>There was a problem encountered loading a remote context.</dd>
-        </dl>
-
-        <dl title="ProcessingError">
-          <dt>LIST_OF_LISTS_DETECTED</dt>
-          <dd>A list of lists was detected. This is not supported in this
-            version of JSON-LD.</dd>
-        </dl>
-
-      </dd>
-
     </dl>
 
   </section>
@@ -2215,8 +2145,7 @@
         <dt>string operation</dt>
         <dd>a string representing the operation that was being performed
           when the conformance issue was raised. Valid values for the
-          string include <code>compact</code>, <code>expand</code>,
-        <code>toRDF</code>, and <code>fromRDF</code>.</dd>
+          string include <code>compact</code>, and <code>expand</code>.</dd>
         <dt>object or object[] source</dt>
           <dd>An object reference to the original JSON-LD document being
           processed.</dd>
@@ -2253,30 +2182,6 @@
     </section>
 
     <section>
-      <h3>QuadCallback</h3>
-      <p>The <a>QuadCallback</a> is called whenever the processor generates a
-      quad during processing.</p>
-
-      <dl title="[NoInterfaceObject Callback] interface QuadCallback"
-          class="idl">
-
-        <dt>void quad()</dt>
-        <dd>This callback is invoked whenever a quad is generated by the processor.
-        <dl class="parameters">
-           <dt>JsonLdProcessingError error</dt>
-           <dd>If the value is <code>null</code>, then no error occurred. If
-             the value is non-<code>null</code>, a processing error occurred
-             and the details will be contained within the <code>error</code>
-             object.
-           </dd>
-           <dt>Quad[] quads</dt>
-           <dd>If there is no error, the quads that have been generated.</dd>
-        </dl>
-        </dd>
-      </dl>
-    </section>
-
-    <section>
       <h3>ConformanceCallback</h3>
 
       <p>The <a>ConformanceCallback</a> MAY be specified in the
@@ -2314,16 +2219,6 @@
     <p>This section describes datatype definitions used within the JSON-LD API.</p>
 
     <section>
-    <h3>IRI</h3>
-    <p>The <a>IRI</a> datatype represents an <tref>IRI</tref>.</p>
-    <div title="typedef DOMString IRI" class="idl">
-      This datatype indicates that <em>IRI</em> is interpreted as an Internationalized
-      Resource Identifier [[!RFC3987]] identifying a document, which when parsed as JSON yields
-      either a <tref>JSON object</tref> or <tref>array</tref>.
-    </div>
-    </section>
-
-    <section>
     <h3>JsonLdOptions</h3>
     <p>The <a>JsonLdOptions</a> type is used to pass various options to the <a>JsonLdProcessor</a> methods.</p>
     <dl title="dictionary JsonLdOptions" class="idl">
@@ -2385,125 +2280,7 @@
       </dd>
     </dl>
     </section>
-
-    <p>The following data structures are used for representing data about
-      RDF quads. They are used for normalization, and <a href="#rdf-conversion">RDF conversion</a>.
-    </p>
-
-    <section>
-    <h3>Quad</h3>
-    <p>The <a>Quad</a> interface represents an RDF Quad. An RDF Quad is an
-      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">RDF triple</a></cite>
-      [[!RDF-CONCEPTS]] with an optional fourth element, the graph name, being a
-      <ldtref>Node</ldtref>.
-    </p>
-    <dl title="[NoInterfaceObject] interface Quad" class="idl">
-      <dt>readonly attribute Node subject</dt>
-      <dd>The <tref>subject</tref> associated with the <a>Quad</a>.</dd>
-      <dt>readonly attribute Node property</dt>
-      <dd>The <tref>property</tref> associated with the <a>Quad</a>.
-        Within JSON-LD, an <tdef>RDF predicate</tdef> is refered to as a
-        <tref>property</tref></dd>
-      <dt>readonly attribute Node object</dt>
-      <dd>The <tref>object</tref> associated with the <a>Quad</a>.</dd>
-      <dt>readonly attribute Node? graph</dt>
-      <dd>If present, the name associated with the <a>Quad</a> identifying
-        it as a member of a <tref>named graph</tref>. If it is missing, the quad
-        is a member of the <tref>default graph</tref>.
-        <div class="issue" data-number="125">This element is at risk, and may be removed.</div>
-      </dd>
-    </dl>
-    </section>
-
-    <section>
-    <h3>Node</h3>
-    <p><ldtref>Node</ldtref> is the base class of <ldtref>IRI</ldtref>,
-    <ldtref>BlankNode</ldtref>, and <ldtref>Literal</ldtref>. It is the IDL
-    representation of a <tref>JSON-LD graph</tref> <tref>node</tref>.</p>
-    <dl title="[NoInterfaceObject] interface Node" class="idl">
-    </dl>
-    </section>
-
-    <section>
-    <h3>IRI</h3>
-    <p>A <tref>node</tref> that is an <tref>IRI</tref>.</p>
-    <dl title="[NoInterfaceObject] interface IRI : Node"
-        class="idl">
-        <dt>readonly attribute DOMString value</dt>
-        <dd>The IRI identifier of the <tref>node</tref> as a [[UNICODE]] string.</dd>
-    </dl>
-    </section>
-
-    <section>
-    <h3>Blank Node</h3>
-
-    <p>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that
-    does not contain a dereferenceable identifier because it is either
-    ephemeral in nature or does not contain information that needs to be linked
-    to from outside of a <tref>JSON-LD graph</tref>.
-    A <tref>blank node</tref> is assigned a <tref>blank node identifier</tref> starting
-    with the prefix <code>_:</code> and an implementation dependent,
-    auto-generated suffix that is unique to all information associated with the
-    particular <tref>blank node</tref>.
-    </p>
-
-    <dl title="[NoInterfaceObject] interface BlankNode : Node" class="idl">
-      <dt>readonly attribute DOMString identifier</dt>
-      <dd>The temporary identifier of the <tref>blank node</tref>.
-        The <code>identifier</code> MUST NOT be relied upon in any way between two
-        separate processing runs of the same document or with a different document.</dd>
-    </dl>
-
-    <p class="note">Developers and authors must not assume that the
-      value of a <tref>blank node</tref> will remain the same between two
-      processing runs. <a>BlankNode</a> values are only valid for the
-      most recent processing run on the document. <a>BlankNode</a>
-      values will often be generated differently by different processors.</p>
-
-    <p>Implementers MUST ensure that <a>BlankNode</a> values are unique
-      within the current environment, two <ldtref title="BlankNode">BlankNodes</ldtref>
-      are considered equal if, and only if, their values are strictly equal.</p>
-    </section>
-
-    <section>
-      <h3>Literal</h3>
-      <p>Literals represent values such as numbers, dates and strings in
-        RDF data. A <ldtref>Literal</ldtref> is comprised of three attributes:
-      </p>
-
-      <ul>
-        <li>a lexical form of the <code>value</code></li>
-        <li>an optional <code>language</code> tag</li>
-        <li>a <code>datatype</code> specified by an <ldtref>IRI</ldtref></li>
-      </ul>
-
-      <p>Literals representing plain text in a natural language may have a
-        <code>language</code> tag specified by a string token, as specified in
-        [[!BCP47]], normalized to lowercase
-        (e.g., <code>'en'</code>, <code>'fr'</code>, <code>'en-gb'</code>).
-        They also have a datatype attribute such as <code>xsd:string</code>.
-        If unspecified, the <code>datatype</code> defaults to <code>xsd:string</code>.
-      </p>
-
-      <p>Literals representing values with a specific datatype, such as
-        the integer 72, may have a <code>datatype</code> attribute specified in the form
-        of a <a>IRI</a> (e.g.,
-        <code>xsd:integer</code>).</p>
-
-      <p> See[[!RDF-CONCEPTS]] definition for
-      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">literal</a></cite>.</p>
-
-      <dl title="[NoInterfaceObject] interface Literal : Node" class="idl">
-        <dt>readonly attribute DOMString value</dt>
-        <dd>The lexical form of the Literal's value.</dd>
-        <dt>readonly attribute DOMString? language</dt>
-        <dd>An optional language tag as defined in [[!BCP47]], normalized to lowercase.</dd>
-        <dt>readonly attribute IRI? datatype</dt>
-        <dd>An optional datatype identified by a IRI.</dd>
-      </dl>
-    </section>
   </section>
-
 </section>
 
 <section class="appendix">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/latest/json-ld-rdf/index.html	Wed Dec 12 17:42:02 2012 -0800
@@ -0,0 +1,520 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>JSON-LD RDF API</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<!--
+  === NOTA BENE ===
+  For the three scripts below, if your spec resides on dev.w3 you can check them
+  out in the same tree and use relative links so that they'll work offline,
+  -->
+<script type="text/javascript" src="../respec-w3c-common.js" class="remove"></script>
+<script type="text/javascript" src="../respec-w3c-extensions.js" class="remove"></script>
+<script type="text/javascript" class="remove">
+//<![CDATA[
+    var respecConfig = {
+        // extend the bibliography entries
+        "localBiblio": localBibliography,
+
+        doRDFa: "1.1",
+        // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+        specStatus:           "CG-DRAFT",
+        // if you wish the publication date to be other than today, set this
+        //publishDate:          "2012-08-30",
+        copyrightStart:       "2012",
+
+        // the specification's short name, as in http://www.w3.org/TR/short-name/
+        shortName:            "json-ld-rdf",
+        subtitle:             "JSON-LD API extensions for transforming to RDF",
+
+        // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+        // and its maturity status
+        //previousPublishDate:  "2012-09-27",
+        //previousMaturity:     "unofficial",
+        //previousDiffURI:      "http://json-ld.org/spec/ED/json-ld-rdf/YYYMMDD/",
+
+        // if there a publicly available Editor's Draft, this is the link
+        edDraftURI:           "http://json-ld.org/spec/latest/json-ld-rdf/",
+
+        // if this is a LCWD, uncomment and set the end of its review period
+        // lcEnd: "2009-08-05",
+
+        // if you want to have extra CSS, append them to this list
+        // it is recommended that the respec.css stylesheet be kept
+        // extraCSS: [],
+
+        issueBase: "https://github.com/json-ld/json-ld.org/issues/",
+
+        // editors, add as many as you like
+        // only "name" is required
+        editors:  [
+        { name: "Manu Sporny", url: "http://manu.sporny.org/",
+          company: "Digital Bazaar", companyURL: "http://digitalbazaar.com/" },
+        { name: "Gregg Kellogg", url: "http://greggkellogg.net/",
+          company: "Kellogg Associates", companyURL: "http://kellogg-assoc.com/" },
+        { name: "Markus Lanthaler", url: "http://www.markus-lanthaler.com/",
+          company: "Graz University of Technology", companyURL: "http://www.tugraz.at/" }
+        ],
+
+        // authors, add as many as you like.
+        // This is optional, uncomment if you have authors as well as editors.
+        // only "name" is required. Same format as editors.
+
+        authors:  [
+        { name: "Gregg Kellogg", url: "http://greggkellogg.net/",
+          company: "Kellogg Associates", companyURL: "http://kellogg-assoc.com/" }
+        ],
+
+        // name of the WG
+        wg:           "Linking Data in JSON Community Group",
+
+        // URI of the public WG page
+        wgURI:        "http://json-ld.org/",
+
+        // name (with the @w3c.org) of the public mailing to which comments are due
+        wgPublicList: "public-linked-json@w3c.org",
+
+        // URI of the patent status for this WG, for Rec-track documents
+        // !!!! IMPORTANT !!!!
+        // This is important for Rec-track documents, do not copy a patent URI from a random
+        // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+        // Team Contact.
+        wgPatentURI:  "",
+        maxTocLevel: 4,
+        preProcess: [ preProc ],
+        //alternateFormats: [ {uri: "diff-20120524.html", label: "diff to previous version"} ],
+    };
+//]]>
+  </script>
+<style type="text/css">
+.diff { font-weight:bold; color:#0a3; }
+</style>
+</head>
+
+<body>
+<section id="abstract">
+<p>JSON-LD RDF API describes access methods for transforming and abstract RDF represention
+  into JSON-LD and back..</p>
+</section>
+
+<section id='sotd'>
+<p>This document is an experimental work in progress.</p>
+</section>
+
+<section>
+<h1>Introduction</h1>
+
+<!-- COMMON -->
+<section>
+<h2>How to Read this Document</h2>
+
+<p>
+This document is a detailed specification for Linked Data in JSON. The document
+is primarily intended for the following audiences:
+</p>
+
+<ul>
+  <li>Software developers that want to implement processors and APIs for
+  JSON-LD.</li>
+  <li>Web developers who want to navigate JSON-LD documents as interconnected
+  nodes.</li>
+</ul>
+
+<p>
+To understand the basics in this specification you must first be familiar with
+JSON, which is detailed in [[!RFC4627]]. You must also understand the
+JSON-LD Syntax [[!JSON-LD]], which is the base syntax used by all of the
+algorithms in this document,
+and the JSON-LD API [[!JSON-LD-API]]. To understand the API and how it is
+intended to operate  in a programming environment, it is useful to have working
+knowledge of the JavaScript programming language [[ECMA-262]] and
+WebIDL [[!WEBIDL]]. To understand how JSON-LD maps to RDF, it is helpful to be
+familiar with the basic RDF concepts [[!RDF-CONCEPTS]].</p>
+
+</section>
+
+<!-- COMMON -->
+<section>
+  <h3>General Terminology</h3>
+
+  <p class="issue">The intent of the Working Group and the Editors of this
+    specification is to eventually align terminology used in this document
+    with the terminology used in the RDF Concepts document to the extent to
+    which it makes sense to do so. In general, if there is an analogue to
+    terminology used in this document in the RDF Concepts document, the
+    preference is to use the terminology in the RDF Concepts document.
+  </p>
+
+  <p>The following is an explanation of the general terminology used in this
+    document:</p>
+
+  <dl>
+    <dt><tdef>JSON object</tdef></dt>
+    <dd>An object structure is represented as a pair of curly brackets surrounding zero or
+      more name-value pairs. A name is a <tref>string</tref>. A single colon comes after
+      each name, separating the name from the value. A single comma separates a value
+      from a following name. The names within an object SHOULD be unique.</dd>
+    <dt><tdef>array</tdef></dt>
+    <dd>An array is represented as square brackets surrounding zero or more
+      values that are separated by commas.</dd>
+    <dt><tdef>string</tdef></dt>
+    <dd>A string is a sequence of zero or more Unicode (UTF-8) characters,
+      wrapped in double quotes, using backslash escapes (if necessary). A
+      character is represented as a single character string.</dd>
+    <dt><tdef>number</tdef></dt>
+    <dd>A number is similar to that used in most programming languages, except
+      that the octal and hexadecimal formats are not used and that leading
+      zeros are not allowed.</dd>
+    <dt><tdef>true</tdef> and <tdef>false</tdef></dt>
+    <dd>Values that are used to express one of two possible boolean states.</dd>
+    <dt><tdef>null</tdef></dt>
+    <dd>The use of the <tref>null</tref> value within JSON-LD is used to ignore or reset values.</dd>
+    <dt><tdef>keyword</tdef></dt>
+    <dd>A JSON key that is specific to JSON-LD, specified in the JSON-LD Syntax specification [[!JSON-LD]]
+      in the section titled <cite><a href="../json-ld-syntax/#syntax-tokens-and-keywords">Syntax Tokens and Keywords</a></cite>.</dd>
+    <dt><tdef>context</tdef></dt>
+    <dd>A a set of rules for interpreting a JSON-LD document as specified in
+      <cite><a href="../json-ld-syntax/#the-context">The Context</a></cite> of the [[JSON-LD]] specification.</dd>
+    <dt><tdef><abbr title="Internationalized Resource Identifier">IRI</abbr></tdef></dt>
+    <dd>An Internationalized Resource Identifier as described in [[!RFC3987]].</dd>
+    <dt><tdef>Absolute IRI</tdef></dt>
+    <dd>An absolute IRI is defined in [[!RFC3987]] containing a <em>scheme</em> along with a <em>path</em> and
+      optional <em>query</em> and fragment segments.</dd>
+    <dt><tdef>Relative IRI</tdef></dt>
+    <dd>A relative IRI is an IRI that is relative some other <tref>absolute IRI</tref>;
+      in the case of JSON-LD this is the base location of the document.</dd>
+    <dt><tdef>Linked Data</tdef></dt>
+    <dd>A technique for creating a network of inter-connected data across different documents and Web sites.</dd>
+    <dt><tdef>JSON-LD graph</tdef></dt>
+    <dd>An unordered labeled directed graph, where <tref title="node">nodes</tref> are
+      <tref title="IRI">IRIs</tref> or <tref title="blank node">blank nodes</tref>, or other values.
+      A <tref>JSON-LD graph</tref> is a generalized representation of a
+      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph">RDF graph</a></cite>
+      as defined in [[!RDF-CONCEPTS]].</dd>
+    <dt><tdef>named graph</tdef></dt>
+    <dd>A <tref>JSON-LD graph</tref> that is identified by an <tref>IRI</tref>.</dd>
+    <dt><tdef>graph name</tdef></dt>
+    <dd>The <tref>IRI</tref> identifying a <tref>named graph</tref>.</dd>
+    <dt><tdef>default graph</tdef></dt>
+    <dd>When executing an algorithm, the graph where data should be placed
+      if a <tref>named graph</tref> is not specified.</dd>
+    <dt><tdef>node</tdef></dt>
+    <dd>A piece of information that is represented in a <tref>JSON-LD graph</tref>.</dd>
+    <dt><tdef>node object</tdef></dt>
+    <dd>A <tref>node object</tref> represents zero or more properties of a
+      <tref>node</tref> in the <tref>JSON-LD graph</tref> serialized by the
+      JSON-LD document. A <tref>JSON Object</tref> is a <tref>node object</tref>
+      if it exists outside of the JSON-LD Context and:
+      <ul>
+        <li>it does not contain the <code>@value</code>, <code>@list</code>,
+        or <code>@set</code> keywords, or</li>
+        <li>it does not contain the <code>@graph</code> keyword and is
+        the top-most <tref>JSON Object</tref> in the JSON-LD document.</li>
+      </ul>
+    </dd>
+    <dt><tdef>blank node</tdef></dt>
+    <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that does not contain a de-referenceable
+      identifier because it is either ephemeral in nature or does not contain information that needs to be
+      linked to from outside of the JSON-LD graph.</dd>
+    <dt><tdef>blank node identifier</tdef></dt>
+    <dd>A blank node identifier is a string that can be used as an identifier for a <tref>blank node</tref> within
+      the scope of a JSON-LD document. Blank node identifiers begin with <code>_:</code>.</dd>
+    <dt><tdef>subject</tdef></dt>
+    <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> with at least one outgoing edge, related to an <tref>object</tref> node through a <tref>property</tref>.</dd>
+    <dt><tdef>property</tdef></dt>
+    <dd>The <tref>IRI</tref> label of an edge in a <tref>JSON-LD graph</tref>.
+      Within JSON-LD, an <tdef>RDF predicate</tdef> is refered to as a
+      <tref>property</tref>.</dd>
+    <dt><tdef>object</tdef></dt>
+    <dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> with at least one incoming edge.</dd>
+    <dt><tdef>literal</tdef></dt>
+    <dd>An <tref>object</tref> expressed as a value such as a <tref>string</tref>, <tref>number</tref> or in <em>expanded form</em>
+    (See Expansion in [[!JSON-LD-API]]).</dd>
+    <dt><tdef>triple</tdef></dt>
+    <dd>A piece of information that contains three items; a <tref>subject</tref>, a <tref>property</tref>,
+      and an <tref>object</tref>.</dd>
+    <dt><tdef>quad</tdef></dt>
+    <dd>A piece of information that contains four items; a <tref>subject</tref>, a <tref>property</tref>,
+      an <tref>object</tref>, and a <tref>graph name</tref>.</dd>
+  </dl>
+ </section>
+
+</section>
+
+<!-- COMMON -->
+<section>
+  <h2>Contributing</h2>
+
+  <p>There are a number of ways that one may participate in the development of
+    this specification:</p>
+
+  <ul>
+    <li>Technical discussion typically occurs on the public mailing list:
+      <a href="http://lists.w3.org/Archives/Public/public-linked-json/">public-linked-json@w3.org</a></li>
+
+    <li><a href="http://json-ld.org/minutes/">Public teleconferences</a> are held
+      on Tuesdays at 1500UTC on the second and fourth week of each month.</li>
+
+    <li>Specification bugs and issues should be reported in the
+      <a href="https://github.com/json-ld/json-ld.org/issues">issue tracker</a>.</li>
+
+    <li><a href="https://github.com/json-ld/json-ld.org/tree/master/spec">Source code</a> for the
+      specification can be found on Github.</li>
+
+    <li>The <a href="http://webchat.freenode.net/?channels=json-ld">#json-ld</a>
+      IRC channel is available for real-time discussion on irc.freenode.net.</li>
+  </ul>
+
+</section>
+
+</section>
+
+<section>
+  <h2>The Application Programming Interface</h2>
+
+  <p>This API extends the API defined in [[!JSON-LD-API]].
+    It is inprovides a clean mechanism that enables developers to convert
+  JSON-LD data to various RDF formats to allow greater interoperability with
+  Linked Data applications. If a JSON-LD API with the RDF extension is provided in
+  a programming environment, the entirety of the following API MUST be
+  implemented.</p>
+
+  <section>
+    <h3>JsonLdProcessor</h3>
+
+    <p>The JSON-LD processor interface is the high-level programming structure that developers
+      use to access the JSON-LD transformation methods.</p>
+
+    <p>The JSON-LD API signatures are the same across all programming languages. Due
+      to the fact that asynchronous programming is uncommon in certain languages, developers MAY
+      implement a processor with a synchronous interface instead. In that case, the <code>callback</code>
+      parameter MUST NOT be included and the result MUST be returned as a return value instead.</p>
+
+    <dl title="[Constructor] interface JsonLdProcessor" class="idl">
+      <dt>void fromRDF()</dt>
+      <dd>Creates a JSON-LD document given an set of
+        <ldtref title="Quad">Quads</ldtref> according to the
+        <cite><a href="../json-ld-api/#convert-from-rdf-algorithm">Convert from RDF Algorithm</a></cite>
+        defined in [[!JSON-LD-API]].
+        <dl class="parameters">
+          <dt>Quad[] input</dt>
+          <dd>A set of <tref title="JSON-LD graph">JSON-LD graphs</tref> represented as an array of <ldtref title="Quad">Quads</ldtref>.</dd>
+          <dt>JsonLdCallback callback</dt>
+          <dd>A callback that is called when processing is complete on
+            the given <code>input</code>.</dd>
+          <dt>optional JsonLdOptions? options</dt>
+          <dd>A set of options that will affect the algorithm. This includes <code>notType</code>,
+            which if set to <tref>true</tref> causes the resulting document to use <code>rdf:type</code>
+            as a property, instead of <code>@type</code>.</dd>
+        </dl>
+      </dd>
+
+      <dt>void toRDF()</dt>
+      <dd>
+        Processes the <code>input</code> according to the
+        <cite><a href="../json-ld-api/#convert-to-rdf-algorithm">Convert to RDF Algorithm</a></cite>
+        defined in [[!JSON-LD-API]], calling
+        the provided <code>callback</code> for each <ldtref>Quad</ldtref> generated.
+        <dl class="parameters">
+          <dt>object or object[] or IRI input</dt>
+          <dd>The JSON-LD object or array of JSON-LD objects to convert to RDF or a <a>IRI</a>
+            referencing the JSON-LD document to convert to RDF.</dd>
+          <dt>QuadCallback callback</dt>
+          <dd>A callback that is called when the input <code>input</code> has been converted
+            to <ldtref title="Quad">Quads</ldtref>.
+          </dd>
+          <dt>optional JsonLdOptions? options</dt>
+          <dd>A set of options that MAY affect the conversion to RDF such as, e.g.,
+            the input document's base <tref>IRI</tref>.</dd>
+        </dl>
+
+        <dl title="InvalidContext">
+          <dt>INVALID_SYNTAX</dt>
+          <dd>A general syntax error was detected in the <code>@context</code>.
+            For example, if a <code>@type</code> key maps to anything other than
+            <code>@id</code> or an <tref>absolute IRI</tref>, this error will
+            be returned.</dd>
+          <dt>LOAD_ERROR</dt>
+          <dd>There was a problem encountered loading a remote context.</dd>
+        </dl>
+
+        <dl title="ProcessingError">
+          <dt>LIST_OF_LISTS_DETECTED</dt>
+          <dd>A list of lists was detected. This is not supported in this
+            version of JSON-LD.</dd>
+        </dl>
+
+      </dd>
+    </dl>
+
+  </section>
+
+  <section>
+    <h3>Callbacks</h3>
+
+    <p class="issue" data-number="153">
+    Developers should note that the details of error handling and
+    conformance handling are being actively debated.
+    </p>
+
+    <p>JSON-LD processors utilize a variety of callbacks in order to return
+    information in an asynchronous manner to calling applications. This section
+    details the parameters sent to those callbacks as well as the desired
+    operation of the callbacks.
+    </p>
+
+    <section>
+      <h3>QuadCallback</h3>
+      <p>The <a>QuadCallback</a> is called whenever the processor generates a
+      quad during processing.</p>
+
+      <dl title="[NoInterfaceObject Callback] interface QuadCallback"
+          class="idl">
+
+        <dt>void quad()</dt>
+        <dd>This callback is invoked whenever a quad is generated by the processor.
+        <dl class="parameters">
+           <dt>JsonLdProcessingError error</dt>
+           <dd>If the value is <code>null</code>, then no error occurred. If
+             the value is non-<code>null</code>, a processing error occurred
+             and the details will be contained within the <code>error</code>
+             object.
+           </dd>
+           <dt>Quad[] quads</dt>
+           <dd>If there is no error, the quads that have been generated.</dd>
+        </dl>
+        </dd>
+      </dl>
+    </section>
+
+  </section>
+
+  <section>
+    <h3>Data Structures</h3>
+    <p>The following data structures are used for representing data about
+      RDF quads. They are used for normalization, and <a href="#rdf-conversion">RDF conversion</a>.
+    </p>
+
+    <section>
+    <h3>IRI</h3>
+    <p>The <a>IRI</a> datatype represents an <tref>IRI</tref>.</p>
+    <div title="typedef DOMString IRI" class="idl">
+      This datatype indicates that <em>IRI</em> is interpreted as an Internationalized
+      Resource Identifier [[!RFC3987]] identifying a document, which when parsed as JSON yields
+      either a <tref>JSON object</tref> or <tref>array</tref>.
+    </div>
+    </section>
+
+    <section>
+      <h3>Quad</h3>
+      <p>The <a>Quad</a> interface represents an RDF Quad. An RDF Quad is an
+        <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">RDF triple</a></cite>
+        [[!RDF-CONCEPTS]] with an optional fourth element, the graph name, being a
+        <ldtref>Node</ldtref>.
+      </p>
+      <dl title="[NoInterfaceObject] interface Quad" class="idl">
+        <dt>readonly attribute Node subject</dt>
+        <dd>The <tref>subject</tref> associated with the <a>Quad</a>.</dd>
+        <dt>readonly attribute Node property</dt>
+        <dd>The <tref>property</tref> associated with the <a>Quad</a>.</dd>
+        <dt>readonly attribute Node object</dt>
+        <dd>The <tref>object</tref> associated with the <a>Quad</a>.</dd>
+        <dt>readonly attribute Node? graph</dt>
+        <dd>If present, the name associated with the <a>Quad</a> identifying
+          it as a member of a <tref>named graph</tref>. If it is missing, the quad
+          is a member of the <tref>default graph</tref>.
+          <div class="issue" data-number="125">This element is at risk, and may be removed.</div>
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h3>Node</h3>
+      <p><ldtref>Node</ldtref> is the base class of <ldtref>IRI</ldtref>,
+      <ldtref>BlankNode</ldtref>, and <ldtref>Literal</ldtref>. It is the IDL
+      representation of a <tref>JSON-LD graph</tref> <tref>node</tref>.</p>
+      <dl title="[NoInterfaceObject] interface Node" class="idl">
+      </dl>
+      </section>
+
+      <section>
+      <h3>IRI</h3>
+      <p>A <tref>node</tref> that is an <tref>IRI</tref>.</p>
+      <dl title="[NoInterfaceObject] interface IRI : Node"
+          class="idl">
+          <dt>readonly attribute DOMString value</dt>
+          <dd>The IRI identifier of the <tref>node</tref> as a [[UNICODE]] string.</dd>
+      </dl>
+    </section>
+
+    <section>
+      <h3>Blank Node</h3>
+
+      <p>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that
+      does not contain a dereferenceable identifier because it is either
+      ephemeral in nature or does not contain information that needs to be linked
+      to from outside of a <tref>JSON-LD graph</tref>.
+      A <tref>blank node</tref> is assigned a <tref>blank node identifier</tref> starting
+      with the prefix <code>_:</code> and an implementation dependent,
+      auto-generated suffix that is unique to all information associated with the
+      particular <tref>blank node</tref>.
+      </p>
+
+      <dl title="[NoInterfaceObject] interface BlankNode : Node" class="idl">
+        <dt>readonly attribute DOMString identifier</dt>
+        <dd>The temporary identifier of the <tref>blank node</tref>.
+          The <code>identifier</code> MUST NOT be relied upon in any way between two
+          separate processing runs of the same document or with a different document.</dd>
+      </dl>
+
+      <p class="note">Developers and authors must not assume that the
+        value of a <tref>blank node</tref> will remain the same between two
+        processing runs. <a>BlankNode</a> values are only valid for the
+        most recent processing run on the document. <a>BlankNode</a>
+        values will often be generated differently by different processors.</p>
+
+      <p>Implementers MUST ensure that <a>BlankNode</a> values are unique
+        within the current environment, two <ldtref title="BlankNode">BlankNodes</ldtref>
+        are considered equal if, and only if, their values are strictly equal.</p>
+    </section>
+
+    <section>
+      <h3>Literal</h3>
+      <p>Literals represent values such as numbers, dates and strings in
+        RDF data. A <ldtref>Literal</ldtref> is comprised of three attributes:
+      </p>
+
+      <ul>
+        <li>a lexical form of the <code>value</code></li>
+        <li>an optional <code>language</code> tag</li>
+        <li>a <code>datatype</code> specified by an <ldtref>IRI</ldtref></li>
+      </ul>
+
+      <p>Literals representing plain text in a natural language may have a
+        <code>language</code> tag specified by a string token, as specified in
+        [[!BCP47]], normalized to lowercase
+        (e.g., <code>'en'</code>, <code>'fr'</code>, <code>'en-gb'</code>).
+        They also have a datatype attribute such as <code>xsd:string</code>.
+        If unspecified, the <code>datatype</code> defaults to <code>xsd:string</code>.
+      </p>
+
+      <p>Literals representing values with a specific datatype, such as
+        the integer 72, may have a <code>datatype</code> attribute specified in the form
+        of a <a>IRI</a> (e.g.,
+        <code>xsd:integer</code>).</p>
+
+      <p> See[[!RDF-CONCEPTS]] definition for
+      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">literal</a></cite>.</p>
+
+      <dl title="[NoInterfaceObject] interface Literal : Node" class="idl">
+        <dt>readonly attribute DOMString value</dt>
+        <dd>The lexical form of the Literal's value.</dd>
+        <dt>readonly attribute DOMString? language</dt>
+        <dd>An optional language tag as defined in [[!BCP47]], normalized to lowercase.</dd>
+        <dt>readonly attribute IRI? datatype</dt>
+        <dd>An optional datatype identified by a IRI.</dd>
+      </dl>
+    </section>
+  </section>
+</section>
+</html>