Added details about error and conformance issue handling to JSON-LD API.
authorManu Sporny <msporny@digitalbazaar.com>
Sun, 30 Sep 2012 14:32:00 -0400
changeset 885 2f34d39fb417
parent 884 701df6f4486a
child 886 b84be6883cb0
Added details about error and conformance issue handling to JSON-LD API.
spec/latest/json-ld-api/index.html
--- a/spec/latest/json-ld-api/index.html	Sat Sep 29 21:29:43 2012 -0400
+++ b/spec/latest/json-ld-api/index.html	Sun Sep 30 14:32:00 2012 -0400
@@ -160,9 +160,9 @@
 
           // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
           // and its maturity status
-          previousPublishDate:  "2012-08-30",
+          previousPublishDate:  "2012-07-12",
           previousMaturity:     "FPWD",
-          previousDiffURI:      "http://www.w3.org/TR/2012/WD-json-ld-api-20120830/",
+          previousDiffURI:      "http://www.w3.org/TR/2012/WD-json-ld-api-20120712/",
           diffTool:             "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
 
           // if there a publicly available Editor's Draft, this is the link
@@ -218,7 +218,7 @@
           // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
           // Team Contact.
           wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46168/status",
-          maxTocLevel: 4,
+          maxTocLevel: 3,
           preProcess: [ preProc ]
           //alternateFormats: [ {uri: "diff-20120626.html", label: "diff to previous version"} ],
       };
@@ -286,14 +286,45 @@
 currently under debate and new features may be added to the specification.
 Existing features may be modified heavily or removed entirely from the
 specification upon further review and feedback from the broader community.
-This is a work in progress and publication as a First Public Working Draft
+This is a work in progress and publication as a Working Draft
 does not require that all Working Group members agree on the content of the
 document.
 </p>
+
+<p>There are a number of ways that one may participate in the development of
+  this specification:</p>
+
+<ul>
+  <li>If you want to make sure that your feedback is formally addressed by
+    the RDF Working Group, you should send it to public-rdf-comments:
+    <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">[email protected]</a></li>
+
+  <li>Ad-hoc technical discussion primarily occurs on the public community mailing list:
+    <a href="http://lists.w3.org/Archives/Public/public-linked-json/">[email protected]</a></li>
+
+  <li><a href="http://json-ld.org/minutes/">Public JSON-LD Community Group teleconferences</a>
+  are held on Tuesdays at 1500UTC every week. Participation is open to the
+  public.</li>
+
+  <li>RDF Working Group teleconferences are held on Wednesdays at 1500UTC
+  every week. Participation is limited to RDF Working Group members.</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>
+    if you do not want to send an e-mail to the public-rdf-comments mailing
+    list.</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>
-<h2>Preface</h2>
+<h2>Introduction</h2>
 
 <p>
 This document is a detailed specification for an Application Programming
@@ -318,44 +349,10 @@
 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>
-  <h2>Contributing</h2>
-
-  <p>There are a number of ways that one may participate in the development of
-    this specification:</p>
-
-  <ul>
-    <li>If you want to make sure that your feedback is formally addressed by
-      the RDF Working Group, you should send it to public-rdf-comments:
-      <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">[email protected]</a></li>
-
-    <li>Ad-hoc technical discussion primarily occurs on the public community mailing list:
-      <a href="http://lists.w3.org/Archives/Public/public-linked-json/">[email protected]</a></li>
-
-    <li><a href="http://json-ld.org/minutes/">Public JSON-LD Community Group teleconferences</a>
-    are held on Tuesdays at 1500UTC every week.</li>
-
-    <li>RDF Working Group teleconferences are held on Wednesdays at 1500UTC
-    every week. Participation is limited to RDF Working Group members.</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>
-      if you do not want to send an e-mail to the public-rdf-comments mailing
-      list.</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>
-<h1>Introduction</h1>
+<h1>Features</h1>
 
 <p>
 The JSON-LD Syntax specification [[!JSON-LD]] outlines a language that may be
@@ -365,7 +362,7 @@
 </p>
 
 <p>
-There are three major types of transformation that are discussed in this
+There are four major types of transformation that are discussed in this
 document; compaction, expansion, and RDF conversion.
 </p>
 
@@ -511,7 +508,7 @@
 </section>
 
 <section>
-  <h3>Conversion to and from RDF</h3>
+  <h3>RDF Conversion</h3>
   <p>
 JSON-LD can be used to losslessly express the RDF data model as described in
 the RDF Concepts document  [[RDF-CONCEPTS]]. This ensures that
@@ -590,24 +587,6 @@
 
 </section>
 
-<section>
-  <h3>Framing and Normalization</h3>
-  <p class="issue">
-There are currently two other API methods that are in active development and
-were not ready for publication at the time this document was published.
-Framing allows a developer to force a different layout for the data and
-effectively perform query-by-example on JSON-LD documents - this is most
-useful when a JSON-LD-based REST API does not know the exact form of the data
-it is getting in, but still wants to operate upon it if some bare essentials
-are found in the data. JSON-LD normalization allows JSON-LD documents to be
-deterministically serialized such that they can be digitally signed or be
-used to find the differences between two <tref>linked data graph</tref>s.
-It is expected that framing will be a part of the final API. It is expected
-that normalization will be an optional feature that JSON-LD processors may
-implement.
-  </p>
-</section>
-
 </section>
 
 <section>
@@ -665,7 +644,7 @@
     <dd>An Internationalized Resource Identifier as described in [[!RFC3987]].</dd>
     <dt><tdef>Linked Data</tdef></dt>
     <dd>A set of documents, each containing a representation of a <tref>linked data graph</tref>.</dd>
-    <dt><tdef>linked data graph</tdef> or <tdef>dataset</tdef></dt>
+    <dt><tdef>linked data 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>linked data graph</tref> is a generalized representation of a
@@ -716,8 +695,8 @@
 
     <p class="note">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 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 return value instead.</p>
+      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="[NoInterfaceObject] interface JsonLdProcessor" class="idl">
 
@@ -726,7 +705,8 @@
         <a href="#expansion">Expands</a> the given <code>input</code> according to
         the steps in the <a href="#expansion-algorithm">Expansion Algorithm</a>. The
         <code>input</code> MUST be copied, expanded and returned if there are
-        no errors. If the expansion fails, an appropriate exception MUST be thrown.
+        no errors. If the expansion fails, an appropriate error MUST be 
+        returned via the callback.
 
         <dl class="parameters">
           <dt>object or object[] or IRI input</dt>
@@ -743,19 +723,21 @@
             input document's base <tref>IRI</tref>.</dd>
         </dl>
 
-        <dl class="exception" title="InvalidContext">
+        <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 exception would be raised.</dd>
+            <code>@id</code> or an <tref>absolute IRI</tref>, this error type
+            will be set in the error sent to the <code>callback</code>.</dd>
           <dt>LOAD_ERROR</dt>
           <dd>There was a problem encountered loading a remote context.</dd>
         </dl>
 
-        <dl class="exception" title="ProcessingError">
+        <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>
+          <dd>A list of lists was detected. The list of lists feature is
+            not supported in this version of JSON-LD due to the algorithmic
+            complexity associated with conversion to RDF.</dd>
         </dl>
       </dd>
 
@@ -765,8 +747,8 @@
         <code>context</code> according to the steps in the
         <a href="#compaction-algorithm">Compaction Algorithm</a>. The
         <code>input</code> MUST be copied, compacted and returned if there are
-        no errors. If the compaction fails, an appropriate exception MUST be
-        thrown.
+        no errors. If the compaction fails, an appropriate error MUST be 
+        returned via the callback.
 
         <dl class="parameters">
           <dt>object or object[] or IRI input</dt>
@@ -784,16 +766,17 @@
             which if set will cause processor-specific optimization.</dd>
         </dl>
 
-        <dl class="exception" title="InvalidContext">
+        <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 exception would be raised.</dd>
+            <code>@id</code> or an <tref>absolute IRI</tref>, this error 
+            would be returned via the <code>callback</code>.</dd>
           <dt>LOAD_ERROR</dt>
           <dd>There was a problem encountered loading a remote context.</dd>
         </dl>
 
-        <dl class="exception" title="ProcessingError">
+        <dl title="ProcessingError">
           <dt>LOSSY_COMPACTION</dt>
           <dd>The compaction would lead to a loss of information, such as a
             <code>@language</code> value.</dd>
@@ -801,39 +784,9 @@
           <dd>The target datatype specified in the coercion rule and the
             datatype for the typed literal do not match.</dd>
           <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>
-
-      <dt>void flatten()</dt>
-      <dd>
-        <a href="#flattening">Flattens</a> the given <code>input</code> according to
-        the steps in the <a href="#flattening-algorithm">Flattening Algorithm</a>. The
-        <code>input</code> MUST be flattened and returned if there are
-        no errors. If the flattening fails, an appropriate exception MUST be thrown.
-
-        <p class="issue">It is still being discussed if the flatten() method should be
-          added or not. See <a href="https://github.com/json-ld/json-ld.org/issues/109">ISSUE-109</a>.</p>
-
-        <dl class="parameters">
-          <dt>object or object[] or IRI input</dt>
-          <dd>The JSON-LD object or array of JSON-LD objects to flatten or an
-            <tref>IRI</tref> referencing the JSON-LD document to flatten.</dd>
-          <dt>string or IRI graph</dt>
-          <dd>The graph in the document that should be flattened. To return the default
-            graph <code>@default</code> has to be passed, for the merged graph <code>@merged</code>
-            and for any other graph the <tref>IRI</tref> identifying the graph has to be passed. The
-            default value is <code>@merged</code>.</dd>
-          <dt>object or IRI? context</dt>
-          <dd>An optional external context to use additionally to the context embedded in
-            <code>input</code> when expanding the <code>input</code>.</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 MAY affect the expansion algorithm such as, e.g., the
-            input document's base <tref>IRI</tref>.</dd>
+          <dd>A list of lists was detected. The list of lists feature is
+            not supported in this version of JSON-LD due to the algorithmic
+            complexity associated with conversion to RDF.</dd>
         </dl>
       </dd>
 
@@ -841,7 +794,7 @@
       <dd>Creates a JSON-LD document given an set of <ldtref title="Quad">Quads</ldtref>.
         <dl class="parameters">
           <dt>Quad[] input</dt>
-          <dd>A <tref>dataset</tref> represented as an array of <ldtref title="Quad">Quads</ldtref>.</dd>
+          <dd>A set of <tref>linked data graph</tref>s 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>
@@ -870,16 +823,17 @@
             the input document's base <tref>IRI</tref>.</dd>
         </dl>
 
-        <dl class="exception" title="InvalidContext">
+        <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 exception would be raised.</dd>
+            <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 class="exception" title="ProcessingError">
+        <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>
@@ -893,40 +847,124 @@
 
   <section>
     <h3>Callbacks</h3>
-  <section>
-    <h3>JsonLdCallback</h3>
-    <p>The <a>JsonLdCallback</a> is used to return a processed JSON-LD representation
-      as the result of processing an API method.</p>
 
-    <dl title="[NoInterfaceObject Callback] interface JsonLdCallback"
-        class="idl">
-
-      <dt>void jsonLd()</dt>
-      <dd>This callback is invoked when processing is complete.
-      <dl class="parameters">
-         <dt>object or object[] jsonld</dt>
-         <dd>The processed JSON-LD document.</dd>
+    <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>JsonLdProcessingError</h3>
+      <p>The <a>JsonLdError</a> type is used to encapsulate a variety of
+      parameters that outline the cause of a particular
+      <a>JsonLdProcessor</a> error.</p>
+      
+      <dl title="dictionary JsonLdProcessingError" class="idl">
+        <dt>string type</dt>
+        <dd>a string representing the particular error type, 
+          such as <code>LIST_OF_LISTS_DETECTED</code>, as described in 
+          the various algorithms in this document.</dd>
+        <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>
+        <dt>object or object[] source</dt>
+          <dd>An object reference to the original JSON-LD document being 
+          processed.</dd>
+        <dt>string sourceKey</dt>
+          <dd>The key value associated with the value that triggered the
+          conformance issue.</dd>
+        <dt>object or object[] or string or number sourceValue</dt>
+          <dd>The value that triggered the conformance issue.</dd>
       </dl>
-      </dd>
-    </dl>
-  </section>
-  <section>
-    <h3>QuadCallback</h3>
-    <p>The <a>QuadCallback</a> is called whenever the processor generates a
-    quad during the <code>quad()</code> call.</p>
+    </section>
+  
+    <section>
+      <h3>JsonLdCallback</h3>
+      <p>The <a>JsonLdCallback</a> is used to return a processed JSON-LD 
+        representation as the result of processing an API method.</p>
+  
+      <dl title="[NoInterfaceObject Callback] interface JsonLdCallback"
+          class="idl">
+  
+        <dt>void processingComplete()</dt>
+        <dd>This callback is invoked when processing is complete.
+        <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>object or object[] document</dt>
+           <dd>The processed JSON-LD document.</dd>
+        </dl>
+        </dd>
+      </dl>
+    </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 quad</dt>
+           <dd>If there is no error, the quad that was generated.</dd>
+        </dl>
+        </dd>
+      </dl>
+    </section>
 
-    <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>Quad quad</dt>
-         <dd>The quad.</dd>
+    <section>
+      <h3>ConformanceCallback</h3>
+      
+      <p>The <a>ConformanceCallback</a> MAY be specified in the
+      <a>JsonLdOptions</a> via the <code>conformanceCallback</code> parameter.
+      If specified, the callback is called whenever a recoverable conformance 
+      issue is detected. The developer may then determine whether or not 
+      processing should continue based on the type of conformance issue.</p>
+  
+      <dl title="[NoInterfaceObject Callback] interface ConformanceCallback"
+          class="idl">
+  
+        <dt>void issue()</dt>
+        <dd>This callback is invoked when a conformance issue is detected by
+          the JSON-LD processor.
+        <dl class="parameters">
+           <dt>JsonLdProcessingError issue</dt>
+           <dd>Details about the conformance issue. 
+           </dd>
+           <dt>function callback</dt>
+           <dd>A function that MUST be called when the program has determined
+             how to respond to the conformance issue. A single parameter must be
+             passed to the callback. The value of the parameter should be  
+             <code>null</code> if processing should continue by acting as if the
+             key-value that triggered the issue never existed. The 
+             <code>issue</code> SHOULD be passed to the callback without
+             modification if processing should stop.</dd>
+        </dl>
+        </dd>
       </dl>
-      </dd>
-    </dl>
-  </section>
+    </section>
   </section>
 
   <section>
@@ -958,6 +996,19 @@
         one element with that element during compaction. If set to <code>false</code>,
         all arrays will remain arrays even if they have just one element.
       </dd>
+      <dt>boolean flatten = false</dt>
+      <dd>If set to a value that is not <code>false</code>, 
+        the JSON-LD processor must modify the output of the 
+        <a href="#compaction-algorithm">Compaction Algorithm</a> 
+        or the <a href="#expansion-algorithm">Expansion Algorithm</a> by 
+        coalescing all properties associated with each
+        <tref>subject</tref> via the
+        <a href="#flattening-algorithm">Flattening Algorithm</a>. The value
+        of <code>flatten</code> MUST be either an <tref>IRI</tref> value
+        representing the name of the graph to flatten, or <code>true</code>.
+        If the value is <code>true</code>, then the first graph encountered in
+        the input document is selected and flattened.   
+      </dd>
       <dt>boolean optimize = false</dt>
       <dd>If set to <code>true</code>, the JSON-LD processor is allowed to
         optimize the output of the <a href="#compaction-algorithm">Compaction Algorithm</a>
@@ -980,6 +1031,14 @@
         converted to
         <tref title="number">JSON numbers</tref>.
       </dd>
+      <dt>function conformanceCallback = null</dt>
+      <dd>The purpose of this option is to instruct the processor about whether 
+        or not it should continue processing. If the value is <code>null</code>,
+        the processor should ignore any key-value pair associated with any 
+        recoverable conformance issue and continue processing. More details
+        about this feature can be found in the <a>ConformanceCallback</a> 
+        section.  
+      </dd>
     </dl>
     </section>
 
@@ -1003,7 +1062,7 @@
         <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? graphName</dt>
+      <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>.
@@ -1229,14 +1288,14 @@
                   performing <a href="#iri-expansion">IRI Expansion</a> on the associated value. If the result of the IRI
                   mapping is an <tref>absolute IRI</tref>, merge the property into the <tref>local context</tref>
                   <tref>term mapping</tref>, unless the property is a JSON-LD <tref>keyword</tref>, in which
-                  case throw an exception.</li>
+                  case return an error.</li>
                 <li>Otherwise, if the property's value is <tref>null</tref> remove mapping, coercion,
                   container and language information associated with property from the
                   <tref>local context</tref>.</li>
                 <li>Otherwise, the <em>property</em>'s <em>value</em> MUST be a <tref>JSON object</tref>.
                   <ol class="algorithm">
                     <li>If the <em>property</em> is a JSON-LD <tref>keyword</tref> and the value has
-                      <code>@id</code>, <code>@language</code> or <code>@type</code> properties, throw an exception.
+                      <code>@id</code>, <code>@language</code> or <code>@type</code> properties, return an error.
                       <div class="issue">Undecided if <code>@type</code> or <code>@graph</code> can take a
                         <code>@container</code> with <code>@set</code>.
                       </div>
@@ -1284,8 +1343,6 @@
     continuing <a href="#object-context">Step 2.3.2</a> until no changes are made, mappings to IRIs created
     using an undefined term prefix will eventually expand to an <tref>absolute IRI</tref>s.</p>
 
-  <p class="issue" data-number="43"><a href="https://github.com/json-ld/json-ld.org/issues/43">Issue 43</a>
-    concerns performing IRI expansion in the key position of a context definition.</p>
 </section>
 
 <section>
@@ -1577,7 +1634,7 @@
     using this algorithm, passing copies of the <tref>active context</tref> and <tref>active property</tref>.
     If has a <code>@container</code> set to <code>@list</code> and any entry in <em>element</em> is an
     <tref>array</tref>, or is a <tref>JSON object</tref> containing a <code>@list</code> property,
-    throw an exception, as lists of lists are not allowed.
+    return an error, as lists of lists are not allowed.
     If the expanded entry is null, drop it. If it's an array, merge its entries with <em>element</em>'s entries.</li>
   <li>Otherwise, if <em>element</em> is an object
     <ol class="algorithm">
@@ -1611,7 +1668,7 @@
             recursively using this algorithm, passing copies of the <tref>active context</tref> and <em>active property</em>. If the expanded
             <em>value</em> is not an <tref>array</tref>, convert it to an <tref>array</tref>.
             If <em>property</em> is <code>@list</code> and any entry in <em>value</em> is a
-            <tref>JSON object</tref> containing an <code>@list</code> property, throw an exception, as
+            <tref>JSON object</tref> containing an <code>@list</code> property, return an error, as
             lists of lists are not supported.</li>
           <li>Otherwise, expand <em>value</em> recursively using this algorithm, passing copies of the <tref>active context</tref> and
             <tref>active property</tref>.</li>
@@ -1744,7 +1801,7 @@
         property's value passing a copy of the <tref>active context</tref> and the <tref>active property</tref> ensuring
         that the result is an array with all <tref>null</tref> values removed. If there already exists a value for
         <tref>active property</tref> in <em>element</em> and the full IRI of <em>property</em> is also coerced to
-        <code>@list</code>, throw an exception. Otherwise store the resulting array as value of <tref>active property</tref>
+        <code>@list</code>, return an error. Otherwise store the resulting array as value of <tref>active property</tref>
         if empty or <em>property</em> otherwise.</li>
       <li>Otherwise, construct <em>output</em> as a new <tref>JSON object</tref> used for returning the result
         of compacting <em>element</em>. For each <em>property</em> and <em>value</em> in <em>element:</em>
@@ -1810,9 +1867,6 @@
   it, labeling all unlabeled nodes with a <tref>blank node</tref> identifier, and returning
   an array of the <tref title="node">nodes</tref> defined in the document.</p>
 
-<p class="issue">It is still being discussed if the flatten() method should be added or not.
-  See <a href="https://github.com/json-ld/json-ld.org/issues/109">ISSUE-109</a>.</p>
-
 <p>For example, assume the following JSON-LD input document:</p>
 
 <pre class="example" data-transform="updateExample">
@@ -2144,10 +2198,7 @@
               of the value as defined in the section <a href="#data-round-tripping">Data Round Tripping</a>.
               Set datatype to the value of the <code>@type</code> property if it exists, otherwise
               either <code>xsd:integer</code> or <code>xsd:double</code>, depending
-              on if the value contains a fractional and/or an exponential component.
-              <p class="issue" data-number="150">It is being
-                <a href="https://github.com/json-ld/json-ld.org/issues/150">discussed</a> if the automatic
-                mapping of JSON-native types to the XSD type system should be configurable or not.</p></li>
+              on if the value contains a fractional and/or an exponential component.</li>
             <li>Otherwise, if the value of <code>@value</code> is <strong>true</strong> or <strong>false</strong>,
               set the <tref>active object</tref> to a <tref>typed literal</tref> created from the
               string representation of the value. Set datatype to the value of the <code>@type</code>
@@ -2467,10 +2518,6 @@
   automatically converted back to their JSON-native counterparts in when
   <a href="#rdf-conversion">converting from RDF</a>.</p>
 
-<p class="issue" data-number="150">It is being
-  <a href="https://github.com/json-ld/json-ld.org/issues/150">discussed</a> if the automatic mapping
-  of JSON-native types to the XSD type system should be configurable or not.</p>
-
 <p class="note">Some JSON serializers, such as PHP's native implementation in some versions,
   backslash-escape the forward slash character. For example, the value
   <code>http://example.com/</code> would be serialized as <code>http:\/\/example.com\/</code>.