Added discussion of framing operations to syntax doc.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Thu, 19 Apr 2012 11:06:05 -0700
changeset 537 4d0c01b28e37
parent 536 9ff40bb5396c
child 538 6c79aaf3cce5
Added discussion of framing operations to syntax doc.
spec/latest/json-ld-syntax/index.html
--- a/spec/latest/json-ld-syntax/index.html	Thu Apr 19 09:51:09 2012 -0700
+++ b/spec/latest/json-ld-syntax/index.html	Thu Apr 19 11:06:05 2012 -0700
@@ -391,6 +391,12 @@
       If <code>@context</code> is set to <em>null</em>, the <tref>active context</tref> is reset and when used
       within a <tref>context</tref>, it removes any definition associated with the key, unless otherwise specified.
     </dd>
+    <dt><tdef>subject definition</tdef></dt><dd>
+      A <tref>JSON object</tref> used to represent a <tref>subject</tref> and one or more properties
+      of that subject. A <tref>JSON object</tref> is a subject definition if it does not contain they keys
+      <code>@value</code>, <code>@list</code> or <code>@set</code> and it has one or more keys other than <code>@id</code>.</dd>
+    <dt><tdef>subject reference</tdef></dt><dd>
+      A <tref>JSON object</tref> used to reference a subject having only the <code>@id</code> key.</dd>
   </dl>
 </p>
 
@@ -740,6 +746,11 @@
 <code>@id</code> keyword unless the data is not intended to be linked to
 from other data sets.</p>
 
+<p>A <tref>JSON object</tref> used to define property values is called a
+  <tref>subject definition</tref>. <tref title="subject definition">Subject definitions</tref>
+  do not require a <code>@id</code>, in which case they are considered to be an
+  <tref>unlabeled node</tref>.</p>
+
 </section>
 </section>
 
@@ -911,6 +922,11 @@
 <code>http://example.org/people#joebob</code>.
 </p>
 
+<p>A <tref>JSON object</tref> used to define property values is called a
+  <tref>subject definition</tref>. <tref title="subject definition">Subject definitions</tref>
+  do not require a <code>@id</code>, in which case they are considered to be an
+  <tref>unlabeled node</tref>.</p>
+
 <p class="note">To ensure the best possible performance, it is a best practice
 to put the <code>@id</code> keyword before other key-value pairs in an object.
 If it isn't listed first, processors have to save each key-value pair until
@@ -2321,6 +2337,37 @@
 }
 -->
 </pre>
+
+<section>
+<h3>Framing Operators</h3>
+<p>A <tref>frame</tref> is a JSON-LD document with some extra syntactic elements used to match against
+  parts of an input document. These operators work by matching on elements of
+  <tref title="subject definition">subject definitions</tref> comprising the document.</p>
+<dl>
+  <dt>Type Matching</dt><dd>
+    A <tref>frame</tref> including a <code>@type</code> with one or more values
+    matches any <tref>subject definition</tref> having a <code>@type</code> property that includes
+    the specified type.</dd>
+  <dt>Type Wildcard</dt><dd>
+    A <tref>frame</tref> including a <code>@type</code> having only an empty <tref>JSON object</tref>
+    matches any <tref>subject definition</tref> having a <code>@type</code> property with
+    any value.</dd>
+  <dt>Duck Typing</dt><dd>
+    A <tref>frame</tref> without a <code>@type</code> definition but with other non-keyword
+    property definitions matches any <tref>subject definition</tref> having at least the
+    same set of properties.</dt>
+  <dt>Embedding</dt><dd>
+    A <tref>frame</tref> including a property which references another <tref>frame</tref> causes
+    <tref title="subject definition">subject definitions</tref> containing that property
+    and referencing either other <tref title="subject definition">subject definitions</tref>
+    or <tref title="subject reference">subject references</tref> to embed
+    <tref title="subject definition">subject definitions</tref> matching the embed <tref>frame</tref>
+    to be defined within that property. <tref title="subject reference">Subject references</tref>
+    that don't match the embed <tref>frame</tref> are dropped.</dd>
+</dl>
+<p>The [[!JSON-LD-API]] describes other flags and keywords
+  that are used to gain even more control over the framed output.</p>
+</section>
 </section>
 
 </section>