--- a/microdata-rdf/index.html Mon Oct 31 15:16:12 2011 -0700
+++ b/microdata-rdf/index.html Fri Nov 04 22:11:57 2011 -0700
@@ -345,7 +345,7 @@
by adding the property to the type URI as a fragment.</li>
<li>When there are multiple top-level items in a document, place items in an RDF Collection.
Alternatively, simply list the items as multiple values, or do not generate an
- <code>http://www.w3.org/1999/xhtml/microdata#item</code> mapping at all.</li>
+ <code>http://www.w3.org/ns/md#item</code> mapping at all.</li>
<li>When there are multiple values for an <aref>itemprop</aref>, place items in an RDF Collection.
Alternatively, do not use collections, use an alternative such as <code>rdf:Seq</code>, or place all values,
whether or not multiple, into some form of collection.</li>
@@ -367,6 +367,12 @@
An attribute appropriate for use with the <code>object</code> element for creating URI<tref>URI
reference</tref>s.
</dd>
+ <dt><adef>datetime</adef></dt><dd>
+ An attribute appropriate for use with the <code>date</code> element for creating typed literals.
+ <div class="issue">
+ The <code>date</code> element will likely be replaced with something more general purpose.
+ </div>
+ </dd>
<dt><adef>href</adef></dt><dd>
An attribute appropriate for use with <code>a</code>, <code>area</code> or <code>link</code> elements for
creating <tref>URI reference</tref>s.
@@ -470,17 +476,55 @@
<h2>Property URI Generation</h2>
<p>For <tref>property names</tref> which are not <tref>absolute URI</tref>s,
the <tdef><code>propertyURI</code></tdef> rule defines the algorithm for generating an <tref>absolute URI</tref>
- given an <tref>evaluation context</tref> including an <tref>current type</tref> and <tref>current
- property</tref>.</p>
+ given an <tref>evaluation context</tref> including a <tref>current type</tref>, <tref>current property</tref> and
+ <tref>current vocabulary</tref>.</p>
<p>The procedure for generating property URIs is defined in
<a href="#generate-predicate-URI">Generate Predicate URI</a>.</p>
<p>Possible values for <tref><code>propertyURI</code></tref> are the following:</p>
<dl>
- <dt><code>context</code></dt><dd>
- The <code>context</code> URI generation scheme guarantees that generated property URIs are
- unique for each <tref>current type</tref> and <tref>current property</tref> combination. This is
- required as the Microdata model requires that property names are associated with specific
+ <dt><code>contextual</code></dt><dd>
+ The <code>contextual</code> URI generation scheme guarantees that generated property URIs are
+ unique based on the value of <tref>current property</tref>. This is
+ required as the Microdata data model requires that property names are associated with specific
items and do not have a global scope.
+ <div class="note">
+ <p>URI creation uses a base URI with query parameters to indicate the in-scope
+ type and property name list. Consider the following example:</p>
+ <pre class="example" data-transform="updateExample">
+<!--
+<span itemscope itemtype="http://microformats.org/profile/hcard">
+ <span itemprop="n" itemscope>
+ <span itemprop="given-name">
+ Princeton
+ </span>
+ </span>
+</span>
+-->
+ </pre>
+ <p>The first property name <em>n</em> generates the URI
+ <code>http://www.w3.org/ns/md?type=http://microformats.org/profile/hcard?prop=n</code>.
+ However, the included property name <em>given-name</em> is included in untyped item.
+ The inherited property URI is used to create a new property URI:
+ <code>http://www.w3.org/ns/md?type=http://microformats.org/profile/hcard?prop=n.first-name</code>.</p>
+ <p>This scheme is compatible with the needs of other RDF serialization formats such as
+ RDF/XML [[RDF-SYNTAX-GRAMMAR]],
+ which rely on <em>QNames</em> for expressing properties. For example, the generated property URIs
+ can be split as follows:
+ <pre class="example" data-transform="updateExample">
+<!--
+<rdf:Description xmlns:hcard="http://www.w3.org/ns/md?type=http://microformats.org/profile/hcard?prop="
+ rdf:type="http://microformats.org/profile/hcard">
+ <hcard:n>
+ <rdf:Description>
+ <hcard:n.given-name>
+ Princeton
+ </hcard:n.given-name>
+ </rdf:Description>
+ </hcard:n>
+</rdf:Description>
+-->
+ </pre>
+ </div>
</dd>
<dt><code>type</code></dt><dd>
The <code>type</code> URI generation scheme appends <tref>property names</tref> that are not
@@ -491,7 +535,7 @@
<tref>absolute URI</tref>s to the <tref>URI prefix</tref>.
</dd>
</dl>
- <p>The default value of <tref><code>propertyURI</code></tref> is <code>context</code>.</p>
+ <p>The default value of <tref><code>propertyURI</code></tref> is <code>contextual</code>.</p>
</section>
<section>
@@ -546,6 +590,10 @@
<dt><tdef>current property</tdef></dt><dd>
an <tref>absolute URI</tref> for the <em>current property</em>, used for generating URIs
for properties of items without an explicit <aref>itemtype</aref>.
+ <div class="note">
+ <tref>current property</tref> is required for the <code>contextual</code> property URI generation
+ scheme. Without this scheme, this evaluation context component would not be required.
+ </div>
</dd>
<dt><tdef>current type</tdef></dt><dd>
an <tref>absolute URI</tref> for the <em>current type</em>, used when an <tref>item</tref> does not
@@ -625,9 +673,49 @@
The value is <tref>URI reference</tref> that results from resolving the value of the element's
<aref>data</aref> attribute relative to the element at the time the attribute is set.
</dd>
- <dt>If the element is a <code>data</code> element with a <aref>value</aref> attribute
- </dt>
+ <dt>If the element is a <code>data</code> element with a <aref>value</aref> attribute</dt>
<dd>The value is a <tref>plain literal</tref> created from the value.</dd>
+ <dt>If the element is a <code>time</code> element with a <aref>datetime</aref> attribute</dt>
+ <dd>
+ <dl>
+ <dt>
+ If the value has the lexical form of <cite><a
+ href="http://www.w3.org/TR/xmlschema-2/#date">xsd:date</a></cite> [[!RDF-SCHEMA]].
+ </dt>
+ <dd>
+ The value is a <tref>typed literal</tref> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#date</code>.
+ </dd>
+ <dt>
+ If the value has the lexical form of <cite><a
+ href="http://www.w3.org/TR/xmlschema-2/#time">xsd:time</a></cite> [[!RDF-SCHEMA]].
+ </dt>
+ <dd>
+ The value is a <tref>typed literal</tref> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#time</code>.
+ </dd>
+ <dt>
+ If the value has the lexical form of <cite><a
+ href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime</a></cite> [[!RDF-SCHEMA]].
+ </dt>
+ <dd>
+ The value is a <tref>typed literal</tref> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#dateTime</code>.
+ </dd>
+ <!-- revisit when/if content model for @datetime is updated to allow for xsd:duration
+ <dt>
+ If the value has the lexical form of <cite><a
+ href="http://www.w3.org/TR/xmlschema-2/#duration">xsd:duration</a></cite> [[!RDF-SCHEMA]].
+ </dt>
+ <dd>
+ The value is a <tref>typed literal</tref> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#duration</code>.
+ </dd>
+ -->
+ <dt>Otherwise</dt>
+ <dd>The value is a <tref>plain literal</tref> created from the value.</dd>
+ </dl>
+ </dd>
<dt>Otherwise</dt>
<dd>
The value is a <tref>plain literal</tref>, with the language information set from the language of the
@@ -705,7 +793,7 @@
<dt>subject</dt>
<dd><tref>Document base</tref></dd>
<dt>predicate</dt>
- <dd><code>http://www.w3.org/1999/xhtml/microdata#item</code></dd>
+ <dd><code>http://www.w3.org/ns/md#item</code></dd>
<dt>object</dt>
<dd><em>value</em></dd>
</dl>
@@ -767,8 +855,8 @@
to <em>type</em> and <tref>current vocabulary</tref> set to <em>vocab</em>.
<li>
Let <em>predicate</em> be the result of <a href="generate-predicate-uri">generate predicate URI</a>
- using <em>context</em> and <em>name</em>. Update <em>context</em> by setting
- <tref>current property</tref> to <em>predicate</em>.
+ using <em>context</em> and <em>name</em>.
+ Update <em>context</em> by setting <tref>current property</tref> to <em>predicate</em>.
</li>
<li>
Let <em>value</em> be the <tref>property value</tref> of <em>element</em>.
@@ -789,8 +877,8 @@
For each <em>predicate</em> in <em>property list</em>:
<ol class="algorithm">
<li><a href="#generate-property-values">Generate property values</a> using a copy of
- <tref>evaluation context</tref> with <tref>current property</tref> set to <em>predicate</em> and
- <tref>current vocabulary</tref> set to <em>vocab</em> along with <em>subject</em> and
+ <tref>evaluation context</tref> with
+ <tref>current vocabulary</tref> set to <em>vocab</em> along with <em>subject</em>, <em>predicate</em> and
the list of values associated with <em>predicate</em> from <em>property list</em> as <em>values</em>.
</li>
</ol>
@@ -801,13 +889,29 @@
<section>
<h3>Generate Predicate URI</h3>
- <p>Predicate URI generation makes use of <tref>current type</tref>, <tref>current property</tref>
+ <p>Predicate URI generation makes use of <tref>current type</tref>, <tref>current property</tref>,
and <tref>current vocabulary</tref> from an <tref>evaluation context</tref> <em>context</em>
along with <em>name</em>.</p>
<ol class="algorithm">
<li>If <em>name</em> is an <tref>absolute URI</tref>, return <em>name</em>
as a <tref>URI reference</tref>.</li>
+ <li>If <tref>current type</tref> from <em>context</em> is null, there can be no <tref>current vocabulary</tref>.
+ Return the <tref>URI reference</tref> constructed as follows:
+ <ol class="algorithm">
+ <li>Let <em>s</em> be <tref>document base</tref>.</li>
+ <li>If <em>s</em> does not contain a U+0023 NUMBER SIGN character (#),
+ then append a U+0023 NUMBER SIGN character (#) to <em>s</em>.</li>
+ <li>Return the concatenation of <em>s</em>
+ and the fragment-escaped value of <em>name</em> as a <tref>URI reference</tref>.</li>
+ </ol>
+ <div class="note">
+ This rule is intended to allow for a the case where no type is set, and therefore there is no
+ vocabulary from which to extract rules. For example, if there is a <tref>document base</tref> of
+ <code>http://example.org/doc</code> and an <aref>itemprop</aref> of 'title', a URI will be constructed
+ to be <code>http://example.org/doc#title</code>.
+ </div>
+ </li>
<li>Otherwise, if <tref>current vocabulary</tref> from <em>context</em> is not null
and <tref>registry</tref> has an entry for <tref>current vocabulary</tref> having a
<tref>propertyURI</tref> entry that is not null, set that as <em>method</em>. Otherwise,
@@ -822,25 +926,23 @@
<li>Return the concatenation of <em>s</em>
and the fragment-escaped value of <em>name</em> as a <tref>URI reference</tref>.</li>
</ol>
+ <div class="note">
+ The use of the NUMER SIGN as a separator is somewhat arbitrary. A future edition of this document
+ may include additional registry parameters that could identify a different separator character (such
+ as SOLIDUS (/)).
+ </div>
</li>
- <li>Otherwise, if <tref>current type</tref> from <em>context</em> return the
- <tref>URI reference</tref> constructed as follows:
- <ol class="algorithm">
- <li>Let <em>s</em> be <tref>document base</tref>.</li>
- <li>If <em>s</em> does not contain a U+0023 NUMBER SIGN character (#),
- then append a U+0023 NUMBER SIGN character (#) to <em>s</em>.</li>
- <li>Return the concatenation of <em>s</em>
- and the fragment-escaped value of <em>name</em> as a <tref>URI reference</tref>.</li>
- </ol>
- <li>Otherwise, return the <tref>URI reference</tref> constructed as follows:
+ <li>If <em>method</em> is <code>contextual</code>, return the <tref>URI reference</tref> constructed as follows:
<ol class="algorithm">
<li>Let <em>s</em> be <tref>current type</tref> from <em>context</em>.</li>
- <li>If the last character of <em>s</em> is not a U+003A COLON character (:),
- append a U+0025 PERCENT SIGN character (%), a U+0032 DIGIT TWO character (2), and a U+0030 DIGIT ZERO
- character (0) to s.</li>
- <li>Append the fragment-escaped value of <em>name</em> to <em>s</em>.</li>
- <li>Return the concatenation of <code>http://www.w3.org/1999/xhtml/microdata#</code>
- and the fragment-escaped value of <em>s</em> as a <tref>URI reference</tref>.</li>
+ <li>If <code>http://www.w3.org/ns/md?type=</code> is a prefix of <em>s</em>,
+ return the concatenation of <em>s</em>, a U+002E FULL STOP character (.) and
+ the fragment-escaped value of <em>name</em>.
+ </li>
+ <li>Otherwise, return the concatenation of <code>http://www.w3.org/ns/md?type=</code>,
+ the fragment-escaped value of <em>s</em>, the string <code>&prop=</code>,
+ and the fragment-escaped value of <em>name</em>.
+ </li>
</ol>
</li>
</ol>
@@ -849,11 +951,10 @@
<section>
<h2>Generate Property Values</h2>
<p>Property value serialization makes use of <tref>current vocabulary</tref>
- from an <tref>evaluation context</tref> <em>context</em> along with <em>subject</em>
+ from an <tref>evaluation context</tref> <em>context</em> along with <em>subject</em>, <em>predicate</em>
and <em>values</em>.</p>
<ol class="algorithm">
- <li>Let <em>predicate</em> be <tref>current property</tref> from <em>context</em>.</li>
<li>If <tref>current vocabulary</tref> from <em>context</em> is not null
and <tref>registry</tref> has an entry for <tref>current vocabulary</tref> having a
<tref><code>multipleValues</code></tref> entry that is not null, set that as <em>method</em>. Otherwise,
@@ -987,7 +1088,7 @@
<!--
@base <http://books.example.com/> .
@prefix dc: <http://purl.org/dc/terms/> .
-@prefix md: <http://www.w3.org/1999/xhtml/microdata#> .
+@prefix md: <http://www.w3.org/ns/md#> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .
<> md:item <works/45U8QJGZSQKDH8N> .
@@ -1013,13 +1114,13 @@
<!--
<p>
Both
- <span itemscope itemtype="http://microformats.org/profile/hcard#" itemref="home">
+ <span itemscope itemtype="http://microformats.org/profile/hcard" itemref="home">
<span itemprop="fn"
><span itemprop="n" itemscope
><span itemprop="given-name">Princeton</span></span></span>
</span>
and
- <span itemscope itemtype="http://microformats.org/profile/hcard#" itemref="home">
+ <span itemscope itemtype="http://microformats.org/profile/hcard" itemref="home">
<span itemprop="fn"
><span itemprop="n" itemscope
><span itemprop="given-name">Trekkie</span></span></span>
@@ -1038,8 +1139,8 @@
<pre class="example" data-transform="updateExample">
<!--
-@prefix md: <http://www.w3.org/1999/xhtml/microdata#> .
-@prefix hcard: <http://microformats.org/profile/hcard#> .
+@prefix md: <http://www.w3.org/ns/md#> .
+@prefix hcard: <http://microformats.org/profile/hcard> .
<> md:item
[ a hcard:;