Changes to normative procedures.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 16 Nov 2011 15:23:06 -0800
changeset 24 77ea431ec4ab
parent 23 a5b9f4d67395
child 25 7011f477b9a9
Changes to normative procedures.
microdata-rdf/index.html
--- a/microdata-rdf/index.html	Wed Nov 16 13:53:03 2011 -0800
+++ b/microdata-rdf/index.html	Wed Nov 16 15:23:06 2011 -0800
@@ -377,7 +377,7 @@
       Should the <tref>registry</tref> allow property datatype specification.
     </dd>
     <dt><a href="http://www.w3.org/2011/htmldata/track/issues/4">ISSUE 4</a></dt><dd>
-      Should the <tref>registry</tref> allow a <tref>property name</tref> or URI to be used as an alias for <aref>itemid</aref>.
+      Should the <tref>registry</tref> allow a <tref>property name</tref> or URL to be used as an alias for <aref>itemid</aref>.
     </dd>
   </dl>
 
@@ -386,13 +386,11 @@
     the Task Force are the following:</p>
   <ul>
     <li>Property URI generation using the original microdata specification with a base URI and fragment
-      made up of the in-scope <aref>itemtype</aref> and <aref>itemprop</aref> elements.</li>
+      made up of the in-scope <tref>item type</tref> and <tref>property name</tref>s.</li>
     <li>Vocabulary-based URI generation, where the <tref>vocabulary</tref> is determined from the
-      in-scope <aref>itemtype</aref>, either through an algorithmic modification of the type URI or by matching the
-      URI against a <tref>registry</tref>. The vocabulary URI is then used to generate property URIs in a namespace
+      in-scope <tref>item type</tref>, either through an algorithmic modification of the type URL or by matching the
+      URL against a <tref>registry</tref>. The vocabulary URI is then used to generate property URIs in a namespace
       parallel to the type URI.</li>
-    <li>Type-based URI generation, where the URI of the in-scope <aref>itemtype</aref> forms the base of property URI
-      by adding the property to the type URI as a fragment.</li>
     <li>When there are multiple <tref>top-level item</tref>s 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/ns/md#item</code> mapping at all.</li>
@@ -435,7 +433,7 @@
       <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>.
     </dd>
     <dt><adef>itemid</adef></dt><dd>
-      An attribute containing a URI used to identify the subject of triples associated with this <tref>item</tref>.
+      An attribute containing a URL used to identify the subject of triples associated with this <tref>item</tref>.
       (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemid">Items</a></cite>
       in [[!MICRODATA]]).
     </dd>
@@ -443,7 +441,7 @@
       An attribute used to identify one or more properties to one ore more <tref>item</tref>s. An <aref>itemprop</aref>
       contains a space separated list of <tdef>name</tdef>s which may either by <tref>absolute URL</tref>s or terms
       associated with the type of the <tref>item</tref> as defined by the referencing <trdf>item</trdf>'s
-      <aref>itemtype</aref>.
+      <tref>item type</tref>.
       (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemprop">Items</a></cite>
       in [[!MICRODATA]]).
     </dd>
@@ -460,7 +458,10 @@
     </dd>
     <dt><adef>itemtype</adef></dt><dd>
       An additional attribute on an element used to specify one or more types of an <tref>item</tref>.
-      The specified type is also used to resolve non-URI <tref>name</tref>s to <tref>absolute URL</tref>s.
+      The <tdef>item type</tdef> of an item, is the first value returned from
+      <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemtype">element.itemType</a></cite></code>
+      on the element.
+      The <tref>item type</tref> is also used to resolve non-URL <tref>name</tref>s to <tref>absolute URL</tref>s.
       Available through the
       <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#microdata-dom-api">Microdata DOM API</a></cite> as
       <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemtype">element.itemType</a></cite></code>.
@@ -510,9 +511,9 @@
 -->
 </pre>
   <p>This structure associates mappings for two URIs, <code>http://schema.org/</code> and
-    <code>http://microformats.org/profile/hcard</code>. Items having an <aref>itemtype</aref> with a <tref>URI
+    <code>http://microformats.org/profile/hcard</code>. Items having an <tref>item type</tref> with a <tref>URI
     prefix</tref> from this <tref>registry</tref> use the the rules described for that prefix within the scope of that
-    <aref>itemtype</aref>. This mapping currently defines two rules: <tref><code>propertyURI</code></tref> and
+    <tref>item type</tref>. This mapping currently defines two rules: <tref><code>propertyURI</code></tref> and
     <tref><code>multipleValues</code></tref> with values to indicate specific behavior. It also allows overrides
     on a per-property basis; the <tref><code>properties</code></tref> key associates individual <tref>property name</tref>s
     with overrides for default behavior.
@@ -529,7 +530,7 @@
   <p class="issue">Richard Ciganiak has
     <cite><a href="http://richard.cyganiak.de/2011/10/microdata.html#whitelists">pointed out</a></cite> that
     &quot;Registry&quot; may be the wrong term, as the proposed <tref>registry</tref> doesn't assign identifiers or manage
-    namespace, it simply provides a mapping between URI prefixes and processor behavior and suggests the term
+    namespace, it simply provides a mapping between <tref>URI prefix</tref>ss and processor behavior and suggests the term
     &quot;Whitelist&quot;. As more than two values are required, and it describes more than binary behavior, this term
     isn't appropriate either.</p>
 
@@ -600,10 +601,10 @@
     <dt><code>vocabulary</code></dt><dd>
       The <code>vocabulary</code> URI generation scheme appends <tref>property name</tref>s that are not <tref>absolute
       URL</tref>s to the <tref>URI prefix</tref>. When generating property URIs, if the <tref>URI prefix</tref> does not end
-      with a '/' or '#', a '#' is appended to the URI prefix. (See <a href="#scheme-vocab">Step 4</a> in
+      with a '/' or '#', a '#' is appended to the <tref>URI prefix</tref>. (See <a href="#scheme-vocab">Step 4</a> in
       <a href="#generate-predicate-uri">Generate Predicate URI</a>.)
       <div>
-        <p>URI creation uses a base URI with query parameters to indicate the in-scope
+        <p>URI creation uses a base URL with query parameters to indicate the in-scope
           type and <tref>property name</tref> list. Consider the following example:</p>
         <pre class="example" data-transform="updateExample">
 <!--
@@ -637,7 +638,7 @@
   <p>If the <tref>registry</tref> contains no match for <tref>current type</tref> implementations act as if
     there is a <tref>URI prefix</tref> made from the first <aref>itemtype</aref> value by stripping either
     the fragment content or local name, if the value has no fragment.</p>
-  <p class="note">Deconstructing the <aref>itemtype</aref> URI to create or identify a vocabulary URI
+  <p class="note">Deconstructing the <aref>itemtype</aref> URL to create or identify a vocabulary URI
     is a violation of the microdata specification which is necessary to
     support the use of existing vocabularies designed for use with RDF, and
     shared or inherited properties within all vocabularies.</p>
@@ -826,7 +827,7 @@
           </dd>
           <dt><tdef>current property</tdef></dt><dd>
             an <tref>absolute URL</tref> for the <em>current property</em>, used for generating URIs
-            for properties of items without an explicit <aref>itemtype</aref>;
+            for properties of items without an <tref>item type</tref>;
             <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.
@@ -834,7 +835,7 @@
           </dd>
           <dt><tdef>current type</tdef></dt><dd>
             an <tref>absolute URL</tref> for the <em>current type</em>, used when an <tref>item</tref> does not
-            contain an explicit <aref>itemtype</aref>;
+            contain an <tref>item type</tref>;
           </dd>
           <dt><tdef>current vocabulary</tdef></dt><dd>
             an <tref>absolute URL</tref> for the <em>current vocabulary</em>, from the <tref>registry</tref>.
@@ -850,11 +851,30 @@
       </dd>
       <dt><tdef>item properties</tdef></dt><dd>
         The mechanism for finding the <tref title="item properties">properties of an item</tref> The list
-         of itemproperties items may be retrieved using the
+         of item properties items may be retrieved using the
          <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#microdata-dom-api">Microdata DOM API</a></cite>
          <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-properties">element.properties</a></cite></code>
          attribute.
       </dd>
+      <dt><tdef>fragment-escape</tdef></dt><dd>
+        The term <cite><a href="http://dev.w3.org/html5/spec/Overview.html#fragment-escaped">fragment-escape</a></cite>
+        is defined in [[!HTML5]]. This involves transforming elements added to URLs to ensure that the result
+        remains a valid URL. The following characters are subject to percent escaping:
+        <ul>
+          <li>U+0022 QUOTATION MARK character (")</li>
+          <li>U+0023 NUMBER SIGN character (#)</li>
+          <li>U+0025 PERCENT SIGN character (%)</li>
+          <li>U+003C LESS-THAN SIGN character (&lt;)</li>
+          <li>U+003E GREATER-THAN SIGN character (&gt;)</li>
+          <li>U+005B LEFT SQUARE BRACKET character ([)</li>
+          <li>U+005C REVERSE SOLIDUS character (\)</li>
+          <li>U+005D RIGHT SQUARE BRACKET character (])</li>
+          <li>U+005E CIRCUMFLEX ACCENT character (^)</li>
+          <li>U+007B LEFT CURLY BRACKET character ({)</li>
+          <li>U+007C VERTICAL LINE character (|)</li>
+          <li>U+007D RIGHT CURLY BRACKET character (})</li>
+        </ul>
+      </dd>
       <dt><tdef>global identifier</tdef></dt><dd>
         The value of an <tref>item</tref>'s <aref>itemid</aref> attribute, if it has one. (See <cite><a
         href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemscope">Items</a></cite> in
@@ -873,58 +893,25 @@
       <dt><tdef>property value</tdef></dt><dd>
         The <tref>property value</tref> of a name-value pair added by an element with an <aref>itemprop</aref>
         attribute depends on the element.
-        The
-        <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#microdata-dom-api">microdata DOM API</a></cite>
-        defines the
-        <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>
-        attribute that MAY be used to retrieve an item property value. Implementations
-        using <code>itemValue</code> MUST coerce values with the lexical form of <tref>absolute URL</tref>
-        to a <tref>URI reference</tref>. All other values MUST be coerced to an <tref>plain literal</tref>.
-        Alternatively, processors MAY provide an alternative implementation of <code>itemValue</code> to provide
-        extra fidelity in creating RDF resources. The behavior of this attribute depends on the element, as follows:
         <dl>
           <dt>If the element has no <aref>itemprop</aref> attribute</dt>
           <dd>The value is null and no triple should be generated.</dd>
-          <dt>If the element has an <aref>itemscope</aref> attribute</dt>
-          <dd>
-            The value is the <tref>item</tref> created by the element as a <tref>URI reference</tref> or
-            <tref>blank node</tref>.
-          </dd>
-          <dt>If the element is a <code>meta</code> element</dt>
-          <dd>
-            The value is the <tref>plain literal</tref> created from the value of the element's <aref>content</aref>
-            attribute, if any, or the empty string if there is no such attribute.
-            If the language of the element is known it SHOULD be used when creating the <tref>plain literal</tref>.
-          </dd>
-          <dt>
-            If the element is an <code>audio</code>, <code>embed</code>, <code>iframe</code>, <code>img</code>,
-            <code>source</code>, <code>track</code>, or <code>video</code> element with a <aref>src</aref> attribute
-          </dt>
+          <dt>If the element creates an <tref>item</tref> (by having an <aref>itemscope</aref> attribute)</dt>
           <dd>
-            The value is a <tref>URI reference</tref> that results from resolving the value of the element's
-            <aref>src</aref> attribute as defined in <cite><a
-            href="http://dev.w3.org/html5/spec/Overview.html#resolving-urls">Resolving URLs</a></cite> in
-            [[!HTML5]].
+            The value is the <tref>URI reference</tref> or <tref>blank node</tref> returned from
+            <a href="#generate-the-triples">generate the triples</a> for that <tref>item</tref>.
           </dd>
-          <dt>
-            If the element is an <code>a</code>, <code>area</code>, or <code>link</code> element with an
-            <aref>href</aref> attribute
-          </dt>
+          <dt>If the element is a URL property element (<code>a</code>, <code>area</code>, <code>audio</code>,
+            <code>embed</code>, <code>iframe</code>, <code>img</code>, <code>link</code>, <code>object</code>,
+            <code>source</code>, <code>track</code> or <code>video</code>)</dt>
           <dd>
-            The value is a <tref>URI reference</tref> that results from resolving the value of the element's
-            <aref>href</aref> attribute as defined in <cite><a
-            href="http://dev.w3.org/html5/spec/Overview.html#resolving-urls">Resolving URLs</a></cite> in
-            [[!HTML5]].
+            The value is a <tref>URI reference</tref> created from <code><cite>
+              <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>.
           </dd>
-          <dt>If the element is an <code>object</code> element with a <aref>data</aref> attribute</dt>
-          <dd>
-            The value is <tref>URI reference</tref> that results from resolving the value of the element's
-            <aref>data</aref> attribute as defined in <cite><a
-            href="http://dev.w3.org/html5/spec/Overview.html#resolving-urls">Resolving URLs</a></cite> in
-            [[!HTML5]].
+          <dt>If the element is a <code>data</code> element</dt>
+          <dd>The value is a <tref>plain literal</tref> created from <code><cite>
+            <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>.
           </dd>
-          <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.</dt>
           <dd>The value is a <tref>literal</tref> made from the value of the <aref>datetime</aref> attribute
             or the element's <code>textContent</code> if there is no <aref>datetime</aref> attribute.
@@ -974,9 +961,11 @@
             </div>
           </dd>
           <dt>Otherwise</dt>
-          <dd>
-            The value is a <tref>plain literal</tref> from the element's <code>textContent</code>,
-            with the language information set from the language of the element, if it is not unknown.
+          <dd>The value is a <tref>plain literal</tref> created from <code><cite>
+            <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>
+            with language information set from the
+            <cite><a href="http://dev.w3.org/html5/spec/Overview.html#the-lang-and-xml:lang-attributes">lang</a></cite> \
+            IDL attribute of the property element.
           </dd>
         </dl>
       </dd>
@@ -993,17 +982,15 @@
         URI. (See [[RDF-CONCEPTS]]).
         <div class="issue">
           <p>The HTML5/microdata content model for <aref>href</aref>, <aref>src</aref>,
-            <aref>data</aref> and <aref>itemid</aref> is that of a URL, not a URI reference. The attributes
-            <aref>itemtype</aref> and <aref>itemprop</aref> may take any value, including that of a <tref>URI
-            reference</tref>. Within this context, <tref>URI Reference</tref> could be replaced with <em>IRI</em> as
-            well, to provide better support for international identifiers and/or locators.</p>
+            <aref>data</aref>, <aref>itemtype</aref> and <aref>itemprop</aref> and <aref>itemid</aref> is that of a URL, not a
+            URI or IRI.</p>
           <p>A proposed mechanism for specifying the range of property values to be URI reference or IRI could
             allow these to be specified as subject or object using a <aref>content</aref> attribute.
         </div>
       </dd>
       <dt><tdef>vocabulary</tdef></dt><dd>
         A vocabulary is a collection of URIs, suitable for use as an <aref>itemtype</aref> or <aref>itemprop</aref>
-        value, that share a common <tref>URI prefix</tref>. That prefix is the vocabulary URI. A vocabulary URL is not
+        value, that share a common <tref>URI prefix</tref>. That prefix is the vocabulary URI. A vocabulary URI is not
         allowed to be a prefix of another vocabulary URI.
         <div class="note">
           This definition differs from the language in the HTML spec and is just for the purpose of this
@@ -1019,14 +1006,10 @@
     <h3>RDF Conversion Algorithm</h3>
     <p>A HTML document containing microdata MAY be converted to any other RDF-compatible document
     format using the algorithm specified in this section.</p>
-    <p>
-      The algorithm below is designed for DOM-based implementations with CSS selector access to elements.
-    </p>
-    <p>
-      A conforming microdata processor implementing RDF conversion MUST implement a
-      processing algorithm that results in the equivalent triples that the following
-      algorithm generates:
-    </p>
+    <p>The algorithm below is designed for DOM-based implementations.</p>
+    <p>A conforming microdata processor implementing RDF conversion MUST implement a
+      processing algorithm that results in the equivalent triples to those that the following
+      algorithm generates:</p>
 
     <p>Set <em>item list</em> to an empty list.</p>
 
@@ -1044,15 +1027,12 @@
         </ol>
       </li>
       <li>
-        If <em>item list</em> contains multiple values, <a
-        href="generate-collection">generate an RDF Collection</a> <em>list</em> from the ordered list of values.
+        <a
+        href="generate-collection">Generate an RDF Collection</a> <em>list</em> from the ordered list of values.
         Set <em>value</em> to the value returned from <a href="#generate-collection">generate an RDF
         Collection</a>.
       </li>
       <li>
-        Otherwise, if <em>item list</em> contains a single value set <em>value</em> to that value.
-      </li>
-      <li>
         Generate the following triple:
         <dl class="triple">
           <dt>subject</dt>
@@ -1084,7 +1064,9 @@
       </li>
       <li>Add a mapping from <em>item</em> to <em>subject</em> in <tref>memory</tref></li>
       <li>
-        If <em>item</em> has an <aref>itemtype</aref> attribute, extract the value as <em>type</em>.
+        For each <em>type</em> returned from
+        <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemtype">element.itemType</a></cite></code>
+        of the element defining the <tref>item</tref>.
       </li>
       <li>If <em>type</em> is an <tref>absolute URL</tref>, generate the following triple:
         <dl class="triple">
@@ -1097,6 +1079,10 @@
         </dl>
       </li>
       <li>
+        Set <em>type</em> to the first value returned from
+        <code><cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemtype">element.itemType</a></cite></code>
+        of the element defining the <tref>item</tref>.
+      <li>
         If <em>type</em> is not an <tref>absolute URL</tref>, set it to <tref>current type</tref> from the
         <tref>Evaluation Context</tref> if not empty.
       </li>
@@ -1164,14 +1150,8 @@
       <li>If <em>name</em> is an <tref>absolute URL</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>
+        Return the <tref>URI reference</tref> that is the <tref>document base</tref> with
+        its fragment set to the <tref>fragment-escape</tref>d value of <em>name</em></p>
         <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
@@ -1193,11 +1173,11 @@
           <li>Let <em>s</em> be <tref>current type</tref> from <em>context</em>.</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>.
+            the <tref>fragment-escape</tref>d 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>&amp;prop=</code>,
-            and the fragment-escaped value of <em>name</em>.
+            the <tref>fragment-escape</tref>d value of <em>s</em>, the string <code>&amp;prop=</code>,
+            and the <tref>fragment-escape</tref>d value of <em>name</em>.
           </li>
         </ol>
       </li>
@@ -1277,7 +1257,7 @@
         Create a new array <em>array</em> containing a <tref>blank node</tref> for every value in <em>list</em>.
       </li>
       <li>
-        For each pair of <em>bnode</em> and <em>value</em> from <em>array</em> and <em>list</em> the following
+        For each pair of <em>bnode</em> from <em>array</em> and <em>value</em> and <em>list</em> the following
         triple is generated:
         <dl class="triple">
           <dt>subject</dt>
@@ -1297,7 +1277,7 @@
           <dd><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</code></dd>
           <dt>object</dt>
           <dd>
-            next element in <em>array</em> or, if that does not exist,
+            next <em>bnode</em> in <em>array</em> or, if that does not exist,
             <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</code>
           </dd>
         </dl>