- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 18 Jan 2010 12:55:47 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/md
In directory hutz:/tmp/cvs-serv28970
Modified Files:
Overview.html
Log Message:
Change how itemref='' is processed to prevent infinite loops in the algorithms that handle microdata. (Mark II) (whatwg r4610)
Index: Overview.html
===================================================================
RCS file: /sources/public/html5/md/Overview.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- Overview.html 18 Jan 2010 11:09:02 -0000 1.24
+++ Overview.html 18 Jan 2010 12:55:45 -0000 1.25
@@ -396,8 +396,7 @@
<li><a href="#items"><span class="secno">4.2 </span>Items</a></li>
<li><a href="#names:-the-itemprop-attribute"><span class="secno">4.3 </span>Names: the <code>itemprop</code> attribute</a></li>
<li><a href="#values"><span class="secno">4.4 </span>Values</a></li>
- <li><a href="#associating-names-with-items"><span class="secno">4.5 </span>Associating names with items</a></li>
- <li><a href="#examples"><span class="secno">4.6 </span>Examples</a></ol></li>
+ <li><a href="#associating-names-with-items"><span class="secno">4.5 </span>Associating names with items</a></ol></li>
<li><a href="#microdata-dom-api"><span class="secno">5 </span>Microdata DOM API</a></li>
<li><a href="#other-changes-to-html5"><span class="secno">6 </span>Other changes to HTML5</a>
<ol>
@@ -408,19 +407,21 @@
<li><a href="#vcard"><span class="secno">7.1 </span>vCard</a>
<ol>
<li><a href="#conversion-to-vcard"><span class="secno">7.1.1 </span>Conversion to vCard</a></li>
- <li><a href="#examples-0"><span class="secno">7.1.2 </span>Examples</a></ol></li>
+ <li><a href="#examples"><span class="secno">7.1.2 </span>Examples</a></ol></li>
<li><a href="#vevent"><span class="secno">7.2 </span>vEvent</a>
<ol>
<li><a href="#conversion-to-icalendar"><span class="secno">7.2.1 </span>Conversion to iCalendar</a></li>
- <li><a href="#examples-1"><span class="secno">7.2.2 </span>Examples</a></ol></li>
+ <li><a href="#examples-0"><span class="secno">7.2.2 </span>Examples</a></ol></li>
<li><a href="#licensing-works"><span class="secno">7.3 </span>Licensing works</a>
<ol>
<li><a href="#conversion-to-rdf"><span class="secno">7.3.1 </span>Conversion to RDF</a></li>
- <li><a href="#examples-2"><span class="secno">7.3.2 </span>Examples</a></ol></ol></li>
+ <li><a href="#examples-1"><span class="secno">7.3.2 </span>Examples</a></ol></ol></li>
<li><a href="#converting-html-to-other-formats"><span class="secno">8 </span>Converting HTML to other formats</a>
<ol>
<li><a href="#json"><span class="secno">8.1 </span>JSON</a></li>
- <li><a href="#rdf"><span class="secno">8.2 </span>RDF</a></ol></li>
+ <li><a href="#rdf"><span class="secno">8.2 </span>RDF</a>
+ <ol>
+ <li><a href="#examples-2"><span class="secno">8.2.1 </span>Examples</a></ol></ol></li>
<li><a href="#iana"><span class="secno">9 </span>IANA considerations</a>
<ol>
<li><a href="#application-microdata-json"><span class="secno">9.1 </span><code>application/microdata+json</code></a></ol></li>
@@ -947,9 +948,8 @@
to give a list of additional elements to crawl to find the
name-value pairs of the <a href="#concept-item" title="concept-item">item</a>.<p>The <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute, if
specified, must have a value that is an <span>unordered set of
- unique space-separated tokens</span> consisting of <span title="concept-ID">IDs</span> of elements in the same document; for
- each one, the element's nearest ancestor element with an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified, if any,
- must not be the element with the referencing <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute specified.<p>The <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute must not
+ unique space-separated tokens</span> consisting of <span title="concept-ID">IDs</span> of elements in the same <span>home
+ subtree</span>.<p>The <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute must not
be specified on elements that do not have an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified.<h3 id="names:-the-itemprop-attribute"><span class="secno">4.3 </span>Names: the <dfn title="attr-itemprop"><code>itemprop</code></dfn> attribute</h3><p>Every <span title="HTML elements">HTML element</span> may have an
<code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute specified, if
doing so <a href="#the-properties-of-an-item" title="the properties of an item">adds a
@@ -1097,108 +1097,152 @@
element</a>.<p>If a property's <a href="#concept-property-value" title="concept-property-value">value</a>
represents a <span title="concept-date">date</span>, <span title="concept-time">time</span>, or <span title="concept-datetime">global date and time</span>, the property
must be specified using the <code title="attr-time-datetime">datetime</code> attribute of a
- <code>time</code> element.<h3 id="associating-names-with-items"><span class="secno">4.5 </span>Associating names with items</h3><p>To find <dfn id="the-properties-of-an-item">the properties of an item</dfn>, the user agent must
- run the following steps:<ol><li><p>Let <var title="">root</var> be the element with the <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute.</li>
+ <code>time</code> element.<h3 id="associating-names-with-items"><span class="secno">4.5 </span>Associating names with items</h3><p>To find <dfn id="the-properties-of-an-item">the properties of an item</dfn> defined by the
+ element <var title="">root</var>, the user agent must try to
+ <a href="#crawl-the-properties">crawl the properties</a> of the element <var title="">root</var>, with an empty list as the value of <var title="">memory</var>: if this fails, then <a href="#the-properties-of-an-item" title="the
+ properties of an item">the properties of the item</a> defined by
+ the element <var title="">root</var> is an empty list; otherwise, it
+ is the returned list.<p>To <dfn id="crawl-the-properties">crawl the properties</dfn> of an element <var title="">root</var> with a list <var title="">memory</var>, the user
+ agent must run the following steps:<ol><li><p>If <var title="">root</var> is in <var title="">memory</var>, then the algorithm fails; abort these
+ steps.</li>
- <li><p>Let <var title="">pending</var> be a stack of elements
- initially containing the child elements of <var title="">root</var>, if any. This list will be the one that holds
- the elements that still need to be crawled.</li>
+ <li><p><a href="#collect-all-the-elements-in-the-item">Collect all the elements in the item</a> <var title="">root</var>, and let <var title="">results</var> be the
+ result.</li>
- <li><p>Let <var title="">properties</var> be an empty list of
- elements. This list will be the result of the algorithm: a list of
- elements with properties that apply to <var title="">root</var>.</li>
+ <li><p>If <var title="">root</var> is in <var title="">results</var>, then the algorithm fails; abort these
+ steps.</li>
- <li><p>If <var title="">root</var> has an <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute, <span title="split a
- string on spaces">split the value of that <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute on spaces</span>. For
- each resulting token, <var title="">ID</var>, if there is an
- element in the document with the <span title="concept-ID">ID</span>
- <var title="">ID</var>, then push the first such element onto <var title="">pending</var>.</li>
+ <li><p>If any elements are listed in <var title="">results</var>
+ more than once, then the algorithm fails; abort these
+ steps.</li>
- <li>
+ <li><p>Remove any elements from <var title="">results</var> that do
+ not have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute
+ specified.</li>
- <p>For each element <var title="">candidate</var> in <var title="">pending</var>, run the following substeps:</p>
+ <li><p>Let <var title="">new memory</var> be a new list consisting
+ of the old list <var title="">memory</var> with the addition of
+ <var title="">root</var>.</li>
- <ol><li><p>Let <var title="">scope</var> be <var title="">candidate</var>'s nearest ancestor element with an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified, if
- any, or null otherwise.</li>
+ <li><p>For each element in <var title="">results</var> that has an
+ <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified,
+ <a href="#crawl-the-properties">crawl the properties</a> of the element, with <var title="">new memory</var> as the memory. If this fails, then this
+ instance of the algorithm fails as well; abort these steps. (If it
+ succeeds, the return value is discarded.)</li>
- <li><p>If one of the other elements in <var title="">pending</var>
- is also <var title="">candidate</var>, then remove <var title="">candidate</var> from <var title="">pending</var>
- (i.e. remove duplicates).</li>
+ <li><p>Sort <var title="">results</var> in <span>tree
+ order</span>.</li>
- <li><p>Otherwise, if one of the other elements in <var title="">pending</var> is an ancestor element of <var title="">candidate</var>, and that element is <var title="">scope</var>, then remove <var title="">candidate</var>
- from <var title="">pending</var> (since <var title="">candidate</var> will be reached anyway as part of
- processing <var title="">scope</var>).</li>
+ <li><p>Return <var title="">results</var>.</li>
- <li><p>Otherwise, if one of the other elements in <var title="">pending</var> is an ancestor element of <var title="">candidate</var>, and either <var title="">scope</var> is
- null or that element also has <var title="">scope</var> as its
- nearest ancestor element with an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified, then
- remove <var title="">candidate</var> from <var title="">pending</var> (since <var title="">candidate</var> will
- be reached anyway as part of processing <var title="">scope</var>).</li>
+ </ol><p>To <dfn id="collect-all-the-elements-in-the-item">collect all the elements in the item</dfn> <var title="">root</var>, the user agent must run these steps:<ol><li><p>Let <var title="">results</var> and <var title="">pending</var> be empty lists of elements.</li>
- </ol></li>
+ <li><p>Add all the children elements of <var title="">root</var> to
+ <var title="">pending</var>.</li>
- <li><p>Sort <var title="">pending</var> in <span>tree
- order</span>.</li>
+ <li><p>If <var title="">root</var> has an <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute, <span title="split a
+ string on spaces">split the value of that <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute on spaces</span>. For
+ each resulting token <var title="">ID</var>, if there is an element
+ in the <span>home subtree</span> of <var title="">root</var> with
+ the <span title="concept-ID">ID</span> <var title="">ID</var>, then
+ add the first such element to <var title="">pending</var>.</li>
- <li><p><i>Loop</i>: Pop the top element from <var title="">pending</var> and let <var title="">current</var> be that
+ <li><p><i>Loop</i>: Remove an element from <var title="">pending</var> and let <var title="">current</var> be that
element.</li>
- <li><p>If <var title="">current</var> has an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute, then append <var title="">current</var> to <var title="">properties</var>.</li>
+ <li><p>Add <var title="">current</var> to <var title="">results</var>.</li>
- <li><p>If <var title="">current</var> does not have an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute, and <var title="">current</var> is an element with child elements, then:
- push all the child elements of <var title="">current</var> onto
- <var title="">pending</var>, in <span>tree order</span> (so the first
- child of <var title="">current</var> will be the next element to be
- popped from <var title="">pending</var>).</li>
+ <li><p>If <var title="">current</var> does not have an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute, then: add all
+ the child elements of <var title="">current</var> to <var title="">pending</var>.</li>
<li><p><i>End of loop</i>: If <var title="">pending</var> is not
empty, return to the step marked <i>loop</i>.</li>
- <li><p>Return <var title="">properties</var>. That is the list of
- <a href="#the-properties-of-an-item" title="the properties of an item">properties of the
- item</a> <var title="">root</var>. By definition, this list is
- in <span>tree order</span>.</li>
+ <li><p>Return <var title="">results</var>.</li>
- </ol><p>A document must not contain any elements that have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute that would not be
+ </ol><p>An <a href="#concept-item" title="concept-item">item</a> is a <dfn id="top-level-microdata-items" title="top-level microdata items">top-level microdata item</dfn> if
+ its element does not have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute.<p>An <a href="#concept-item" title="concept-item">item</a> is a <dfn id="used-microdata-items" title="used
+ microdata items">used microdata item</dfn> if it is a <a href="#top-level-microdata-items" title="top-level microdata items">top-level microdata item</a>,
+ or if it has an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code>
+ attribute and would be <a href="#the-properties-of-an-item" title="the properties of an item">found
+ to be the property</a> of an <a href="#concept-item" title="concept-item">item</a> that is itself a <a href="#used-microdata-items" title="used
+ microdata items">used microdata item</a>.<p>A document must not contain any <a href="#concept-item" title="concept-item">items</a> that are not <a href="#used-microdata-items">used microdata
+ items</a>.<p>A document must not contain any elements that have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute that would not be
found to be a property of any of the <a href="#concept-item" title="concept-item">items</a> in that document were their <a href="#the-properties-of-an-item" title="the properties of an item">properties</a> all to be
- determined.<p>An <a href="#concept-item" title="concept-item">item</a> is a <dfn id="top-level-microdata-items" title="top-level microdata items">top-level microdata item</dfn> if
- its element does not have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute.<h3 id="examples"><span class="secno">4.6 </span>Examples</h3><p>Here is an example of some HTML using Microdata to express RDF
- statements:<pre><dl itemscope
- itemtype="http://purl.org/vocab/frbr/core#Work"
- itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
- <dt>Title</dt>
- <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
- <dt>By</dt>
- <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
- <dt>Format</dt>
- <dd itemprop="http://purl.org/vocab/frbr/core#realization"
- itemscope
- itemtype="http://purl.org/vocab/frbr/core#Expression"
- itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
- <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
- Print
- </dd>
- <dd itemprop="http://purl.org/vocab/frbr/core#realization"
- itemscope
- itemtype="http://purl.org/vocab/frbr/core#Expression"
- itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
- <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
- Ebook
- </dd>
-</dl></pre><p>This is equivalent to the following Turtle:<pre>@prefix dc: <http://purl.org/dc/terms/> .
-@prefix frbr: <http://purl.org/vocab/frbr/core#> .
+ determined.<p>A document must not contain any <a href="#concept-item" title="concept-item">items</a> for which <a href="#crawl-the-properties" title="crawl the
+ properties">crawling the properties</a> of the element, with an
+ empty list as the value of <var title="">memory</var>, fails.<p class="note">The algorithms in this section are especially
+ inefficient, in the interests of keeping them easy to
+ understand. Implementors are strongly encouraged to refactor and
+ optimise them in their user agents.<div class="example">
-<http://purl.oreilly.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
- dc:creator "Wil Wheaton"@en ;
- dc:title "Just a Geek"@en ;
- frbr:realization <http://purl.oreilly.com/products/9780596007683.BOOK>,
- <http://purl.oreilly.com/products/9780596802189.EBOOK> .
+ <p>In this example, a single license statement is applied to two
+ works, using <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> from the
+ items representing the works:</p>
-<http://purl.oreilly.com/products/9780596007683.BOOK> a frbr:Expression ;
- dc:type <http://purl.oreilly.com/product-types/BOOK> .
+ <pre><!DOCTYPE HTML>
+<html>
+ <head>
+ <title>Photo gallery</title>
+ </head>
+ <body>
+ <h1>My photos</h1>
+ <figure itemscope itemtype="http://n.whatwg.org/work" itemref="licenses">
+ <img itemprop="work" src="http://dev.w3.org/html5/spec/images/house.jpeg" alt="A white house, boarded up, sits in a forest.">
+ <figcaption itemprop="title">The house I found.</figcaption>
+ </figure>
+ <figure itemscope itemtype="http://n.whatwg.org/work" itemref="licenses">
+ <img itemprop="work" src="http://dev.w3.org/html5/spec/images/mailbox.jpeg" alt="Outside the house is a mailbox. It has a leaflet inside.">
+ <figcaption itemprop="title">The mailbox.</figcaption>
+ </figure>
+ <footer>
+ <p id="licenses">All images licensed under the <a itemprop="license"
+ href="http://www.opensource.org/licenses/mit-license.php">MIT
+ license</a>.</p>
+ </footer>
+ </body>
+</html></pre>
-<http://purl.oreilly.com/products/9780596802189.EBOOK> a frbr:Expression ;
- dc:type <http://purl.oreilly.com/product-types/EBOOK> .</pre><h2 id="microdata-dom-api"><span class="secno">5 </span>Microdata DOM API</h2><pre class="idl">[Supplemental] interface <span>HTMLDocument</span> { <!--WARNING: ALSO DUPLICATED IN HTMLDocument SECTION-->
+ <p>The above results in two items with the type "<code title="">http://n.whatwg.org/work</code>", one with:</p>
+
+ <dl class="brief"><dt>work
+ <dd><code title="">images/house.jpeg</code>
+ <dt>title
+ <dd>The house I found.
+ <dt>license
+ <dd><code title="">http://www.opensource.org/licenses/mit-license.php</code>
+ </dl><p>...and one with:</p>
+
+ <dl class="brief"><dt>work
+ <dd><code title="">images/mailbox.jpeg</code>
+ <dt>title
+ <dd>The mailbox.
+ <dt>license
+ <dd><code title="">http://www.opensource.org/licenses/mit-license.php</code>
+ </dl></div><div class="example">
+
+ <p>In the following invalid example, the items are all empty,
+ because the <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute on
+ the inner nested item indirectly references the same element twice
+ in the same item:</p>
+
+ <pre class="bad"><!-- invalid example - do not copy -->
+<div itemscope>
+ <span itemprop="example">This is <em>not</em> a property of the
+ <code>div</code> element.</span>
+ <p itemprop="demo" itemscope itemref="test thing"> <!-- "thing" is a descendant
+ of "test", which leads to it being included twice, which is invalid -->
+ <span itemprop="sample">This isn't part of anything either.</span>
+ </p>
+</div>
+<p id="test">
+ <span id="thing">(this element is referenced twice by the
+ <code>p</code> above, causing all the items that involve that
+ <code>itemref=""</code> attribute to act as if they had no
+ properties.)</span>
+</p></pre>
+
+ </div><h2 id="microdata-dom-api"><span class="secno">5 </span>Microdata DOM API</h2><pre class="idl">[Supplemental] interface <span>HTMLDocument</span> { <!--WARNING: ALSO DUPLICATED IN HTMLDocument SECTION-->
NodeList <a href="#dom-document-getitems" title="dom-document-getItems">getItems</a>(in optional DOMString typeNames); // <span>microdata</span>
};
@@ -2989,7 +3033,7 @@
the input does not conform to the rules described for the <code title="md-vcard"><a href="#md-vcard">http://microformats.org/profile/hcard</a></code>
<a href="#item-type">item type</a> and <a href="#defined-property-name" title="defined property
name">defined property names</a>.</p><!-- of course since vcard
- doesn't define error handling, this is somewhat problematic. --><h4 id="examples-0"><span class="secno">7.1.2 </span>Examples</h4><div class="example">
+ doesn't define error handling, this is somewhat problematic. --><h4 id="examples"><span class="secno">7.1.2 </span>Examples</h4><div class="example">
<p>Here is a long example vCard for a fictional character called
"Jack Bauer":</p>
@@ -3766,7 +3810,7 @@
<a href="#item-type">item type</a> and <a href="#defined-property-name" title="defined property
name">defined property names</a>.</p><!-- of course since
iCalendar doesn't define error handling, this is somewhat
- problematic. --><h4 id="examples-1"><span class="secno">7.2.2 </span>Examples</h4><!-- get more from http://www.ietf.org/rfc/rfc2445.txt --><div class="example">
+ problematic. --><h4 id="examples-0"><span class="secno">7.2.2 </span>Examples</h4><!-- get more from http://www.ietf.org/rfc/rfc2445.txt --><div class="example">
<p>Here is an example of a page that uses the vEvent vocabulary to
mark up an event:</p>
@@ -3925,7 +3969,7 @@
<p class="note">The predicates mentioned in this section are the
predicates that result from <a href="#extracting-rdf" title="extracting rdf">converting
to RDF</a> an HTML page containing microdata with an item whose
- <a href="#item-type" title="item type">type</a> is "<code title="md-work"><a href="#md-work">http://n.whatwg.org/work</a></code>".<h4 id="examples-2"><span class="secno">7.3.2 </span>Examples</h4><div class="example">
+ <a href="#item-type" title="item type">type</a> is "<code title="md-work"><a href="#md-work">http://n.whatwg.org/work</a></code>".<h4 id="examples-1"><span class="secno">7.3.2 </span>Examples</h4><div class="example">
<p>This example shows an embedded image entitled <cite>My
Pond</cite>, licensed under the Creative Commons Attribution-Share
@@ -4257,7 +4301,54 @@
<li><p>Return <var title="">subject</var>.</li>
- </ol></div><h2 id="iana"><span class="secno">9 </span>IANA considerations</h2><!-- http://www.w3.org/2002/06/registering-mediatype.html --><h3 id="application-microdata-json"><span class="secno">9.1 </span><dfn><code>application/microdata+json</code></dfn></h3><p>This registration is for community review and will be submitted
+ </ol><h4 id="examples-2"><span class="secno">8.2.1 </span>Examples</h4>
+
+ <p>Here is an example of some HTML using Microdata to express RDF
+ statements:</p>
+
+ <pre><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+ <dt>Title</dt>
+ <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+ <dt>By</dt>
+ <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+ <dt>Format</dt>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+ Print
+ </dd>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</dl></pre>
+
+ <p>This is equivalent to the following Turtle:</p>
+
+ <pre>@prefix dc: <http://purl.org/dc/terms/> .
+@prefix frbr: <http://purl.org/vocab/frbr/core#> .
+
+<http://purl.oreilly.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
+ dc:creator "Wil Wheaton"@en ;
+ dc:title "Just a Geek"@en ;
+ frbr:realization <http://purl.oreilly.com/products/9780596007683.BOOK>,
+ <http://purl.oreilly.com/products/9780596802189.EBOOK> .
+
+<http://purl.oreilly.com/products/9780596007683.BOOK> a frbr:Expression ;
+ dc:type <http://purl.oreilly.com/product-types/BOOK> .
+
+<http://purl.oreilly.com/products/9780596802189.EBOOK> a frbr:Expression ;
+ dc:type <http://purl.oreilly.com/product-types/EBOOK> .</pre>
+
+
+ </div><h2 id="iana"><span class="secno">9 </span>IANA considerations</h2><!-- http://www.w3.org/2002/06/registering-mediatype.html --><h3 id="application-microdata-json"><span class="secno">9.1 </span><dfn><code>application/microdata+json</code></dfn></h3><p>This registration is for community review and will be submitted
to the IESG for review, approval, and registration with IANA.</p><!--
To: ietf-types@iana.org
Subject: Registration of media type application/microdata+json
Received on Monday, 18 January 2010 12:55:50 UTC