Update requirements doc.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 13 Jul 2011 16:25:26 -0700
changeset 66 87962421e8a5
parent 65 4e2d52fd450b
child 67 6f2c639bd25b
Update requirements doc.
requirements/ED/20110713/index.html
requirements/latest/index.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/requirements/ED/20110713/index.html	Wed Jul 13 16:25:26 2011 -0700
@@ -0,0 +1,315 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>JSON-LD Requirements</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="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove">
+ </script>
+<script type="text/javascript" class="remove">
+
+    var preProc = {
+          apply:  function(c) {
+                    // extend the bibliography entries
+
+                    // process the document before anything else is done
+                    var refs = document.querySelectorAll('adef') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var sp = document.createElement( 'dfn' ) ;
+                        var tit = item.getAttribute('title') ;
+                        if (!tit) {
+                            tit = con;
+                        }
+                        sp.className = 'adef' ;
+                        sp.title=tit ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    refs = document.querySelectorAll('aref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'aref' ;
+                        sp.setAttribute('title', con);
+                        sp.innerHTML = '@'+con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // local datatype references
+                    refs = document.querySelectorAll('ldtref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'datatype';
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // external datatype references
+                    refs = document.querySelectorAll('dtref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'a' ) ;
+                        sp.className = 'externalDFN';
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // now do terms
+                    refs = document.querySelectorAll('tdef') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+                        var sp = document.createElement( 'dfn' ) ;
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                    // now term references
+                    refs = document.querySelectorAll('tref') ;
+                    for (var i = 0; i < refs.length; i++) {
+                        var item = refs[i];
+                        if (!item) continue ;
+                        var p = item.parentNode ;
+                        var con = item.innerHTML ;
+                        var ref = item.getAttribute('title') ;
+                        if (!ref) {
+                            ref = item.textContent ;
+                        }
+                        if (ref) {
+                            ref = ref.replace(/\n/g, '_') ;
+                            ref = ref.replace(/\s+/g, '_') ;
+                        }
+
+                        var sp = document.createElement( 'a' ) ;
+                        var id = item.textContent ;
+                        sp.className = 'tref' ;
+                        sp.title = ref ;
+                        sp.innerHTML = con ;
+                        p.replaceChild(sp, item) ;
+                    }
+                }
+        } ;
+
+
+      var respecConfig = {
+          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+          specStatus:           "unofficial",
+          publishDate:          "2011-07-13",
+          
+          // the specification's short name, as in http://www.w3.org/TR/short-name/
+          shortName:            "json-ld",
+          subtitle:             "A Context-based JSON Serialization for Linked Data",
+          // if you wish the publication date to be other than today, set this
+          // publishDate:  "2009-08-06",
+
+          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+          // and its maturity status
+          previousPublishDate:  "2011-07-03",
+          previousMaturity:     "ED",
+          previousDiffURI:      "http://json-ld.org/requirements/ED/20110703/index.html",
+          diffTool:             "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
+
+          // if there a publicly available Editor's Draft, this is the link
+          edDraftURI:           "http://json-ld.org/requirements/latest/",
+
+          // 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:             [
+              "http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"
+          ],
+
+          // editors, add as many as you like
+          // only "name" is required
+          editors:  [
+              { name: "Gregg Kellogg", url: "http://greggkellogg.net/",
+                company: "Kellogg Associates" },
+          ],
+
+          // 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.
+
+          // name of the WG
+          wg:           "Linked Data in JSON Interest Group",
+          
+          // URI of the public WG page
+          wgURI:        "",
+          
+          // name (with the @w3c.org) of the public mailing to which comments are due
+          wgPublicList: "",
+          
+          // 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: 3,
+          preProcess: [ preProc ]
+          //alternateFormats: [ {uri: "diff-20110507.html", label: "diff to previous version"} ],
+      };
+  </script>
+<style>
+.diff { font-weight:bold; color:#0a3; }
+</style>
+</head>
+
+<body>
+<section id="abstract">
+<p>
+  This document attempts to gather requirements for Linked Data in JSON (JSON-LD)
+  in order to create an objective measure with which to evaluate the
+  <cite><a href="/spec/latest/">JSON-LD Specification</a></cite>.
+</p>
+</section>
+
+<section id='sotd'>
+<p>This document is an experimental work in progress.</p>
+<!-- <p>
+This document has been reviewed by W3C Members, by software
+developers, and by other W3C groups and interested parties, and is
+endorsed by the Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited from another
+document. W3C's role in making the Recommendation is to draw attention
+to the specification and to promote its widespread deployment. This
+enhances the functionality and interoperability of the Web.
+</p> -->
+</section>
+
+<section>
+<h1>Introduction</h1>
+</section>
+
+<section><h1>Definitions</h1>
+  <dl>
+    <dt><tdef>JSON</tdef></dt><dd>
+      <abbr title="JavaScript Object Notation">JSON</abbr> (JavaScript Object Notation)
+      [[!RFC4627]]
+      is a simple way to express objects in a syntax compatible with JavaScript.
+    </dd>
+    <dt>Linked Data</dt><dd>
+      According to <cite><a
+      href="http://en.wikipedia.org/wiki/Linked_Data">Wikipedia</a></cite>, Linked Data ...
+      <blockquote cite="http://en.wikipedia.org/wiki/Linked_Data">
+        describes a method of publishing structured data so that it can be interlinked and
+        become more useful. It builds upon standard Web technologies such as HTTP and URIs,
+        but rather than using them to serve web pages for human readers, it extends them to
+        share information in a way that can be read automatically by computers. This
+        enables data from different sources to be connected and queried.
+      </blockquote>
+    </dd>
+    <dt><tdef>JSON Object</tdef></dt><dd>
+      From [[RFC4627]]: <blockquote>
+        An object structure is represented as a pair of curly brackets surrounding zero or
+        more name/value pairs (or members). A name is a string. 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.
+      </blockquote>
+    </dd>
+  </dl>
+</section>
+
+<section><h1>Requirements</h1>
+  <section><h2>Linked Data</h2>
+    <p>
+      The following are taken to be assertions about the meaning of <tref>Linked Data</tref>.
+    </p>
+    <p class="note">
+      This section is intended to abstractly describe the concept of <tref>Linked
+      Data</tref>. This does not necessarily relate concepts directly to a JSON syntactic
+      expression; that is left for the following section.
+    </p>
+    <ol>
+      <li><tdef>Linked Data</tdef> is a set of documents, each containing a representation of a linked data graph.</li>
+      <li>A <tdef>linked data graph</tdef> is a labeled directed graph, where nodes are <tref>subject</tref>s or <tref>object</tref>s, and edges are properties.</li>
+      <li>A <tdef>subject</tdef> is any node in a <tref>linked data graph</tref> with at least one outgoing edge.</li>
+      <li>
+        A <tref>subject</tref> MAY be labeled with a IRI.
+        <p class="issue">
+          There is some controversy over the use of MAY vs. SHOULD. Could a subject be labeled with a literal?
+          Can nodes be unlabeled (i.e., like RDF Blank Nodes)?
+        </p>
+      </li>
+      <li>A <tdef>property</tdef> is an edge of the <tref>linked data graph</tref>.</li>
+      <li>A <tref>property</tref> SHOULD be labeled with an IRI.</li>
+      <li>An <tdef>object</tdef> is a node in a <tref>linked data graph</tref> with at least one incoming edge.</li>
+      <li>An <tref>object</tref> MAY be labeled with an IRI.</li>
+      <li>An IRI that is a label in a <tref>linked data graph</tref> SHOULD be dereferencable to a <tref>Linked Data</tref> document describing the labeled <tref>subject</tref>, <tref>object</tref> or <tref>property</tref>.</li>
+      <li>A <tdef>literal</tdef> is an <tref>object</tref> with a label that is not an IRI</li>
+    </ol>
+  </section>
+  <section><h2>JSON-LD</h2>
+    <p>The following are taken to be requirements for expressing JSON as <tref>Linked Data</tref>.</p>
+    <p class="issue">
+      This section has not been discussed on a teleconference
+    </p>
+    <ol>
+      <li>A JSON-LD document MUST be able to express a <tref>linked data graph</tref>.</li>
+      <li>
+        A JSON-LD document uses <trefs>JSON object</trefs>s, arrays, numbers, strings and
+        other literal names to express semantic information.
+      </li>
+      <li>A <tref>subject</tref> is represented with a <tref>JSON object</tref>.</li>
+      <li>There MUST be a way label a <tref>JSON object</tref> with an IRI.</li>
+      <li>There MUST be a way to reference an un-labeled JSON object that does not have a direct child relationship.</li>
+      <li>JSON name/value pairs are used to describe property-object relationships.</li>
+      <li>There MUST be a way to associate a IRI with the name in a JSON name/value pair.</li>
+      <li>JSON strings MAY represent literals.</li>
+      <li>JSON strings MAY represent IRIs.</li>
+      <li>There MUST be a way to determine if a JSON value represents a IRI.</li>
+      <li>There SHOULD be a way to associate a datatype IRI with a literal JSON value.</li>
+      <li>JSON booleans, numbers and other literal values represent specific datatyped literals.</li>
+      <li>A JSON array MAY be used to associate multiple <tref>object</tref>s with a <tref>subject</tref> through a common <tref>property</tref>.</li>
+      <li>A JSON array MUST NOT be used to imply an order to the component entities.</li>
+    </ol>
+  </section>
+</section>
+
+</body>
+</html>
+
--- a/requirements/latest/index.html	Wed Jul 13 16:19:17 2011 -0700
+++ b/requirements/latest/index.html	Wed Jul 13 16:25:26 2011 -0700
@@ -136,7 +136,7 @@
       var respecConfig = {
           // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
           specStatus:           "unofficial",
-          //publishDate:          "2011-07-11",
+          //publishDate:          "2011-07-13",
           
           // the specification's short name, as in http://www.w3.org/TR/short-name/
           shortName:            "json-ld",
@@ -148,11 +148,11 @@
           // and its maturity status
           previousPublishDate:  "2011-07-03",
           previousMaturity:     "ED",
-          previousDiffURI:      "http://json-ld.org/requirements/ED/20100703/index.html",
+          previousDiffURI:      "http://json-ld.org/requirements/ED/20110703/index.html",
           diffTool:             "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
 
           // if there a publicly available Editor's Draft, this is the link
-          edDraftURI:           "http://json-ld.org/spec/latest/",
+          edDraftURI:           "http://json-ld.org/requirements/latest/",
 
           // if this is a LCWD, uncomment and set the end of its review period
           // lcEnd: "2009-08-05",
@@ -268,7 +268,13 @@
       <li><tdef>Linked Data</tdef> is a set of documents, each containing a representation of a linked data graph.</li>
       <li>A <tdef>linked data graph</tdef> is a labeled directed graph, where nodes are <tref>subject</tref>s or <tref>object</tref>s, and edges are properties.</li>
       <li>A <tdef>subject</tdef> is any node in a <tref>linked data graph</tref> with at least one outgoing edge.</li>
-      <li>A <tref>subject</tref> MAY be labeled with a IRI.</li>
+      <li>
+        A <tref>subject</tref> MAY be labeled with a IRI.
+        <p class="issue">
+          There is some controversy over the use of MAY vs. SHOULD. Could a subject be labeled with a literal?
+          Can nodes be unlabeled (i.e., like RDF Blank Nodes)?
+        </p>
+      </li>
       <li>A <tdef>property</tdef> is an edge of the <tref>linked data graph</tref>.</li>
       <li>A <tref>property</tref> SHOULD be labeled with an IRI.</li>
       <li>An <tdef>object</tdef> is a node in a <tref>linked data graph</tref> with at least one incoming edge.</li>