--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ED/microdata-rdf/20120919/index.html Wed Sep 19 22:49:41 2012 -0700
@@ -0,0 +1,1871 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
+<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" typeof="bibo:Document">
+<head>
+<title>Microdata to RDF</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,
+ -->
+
+
+
+<style type="text/css">
+.diff { font-weight:bold; color:#0a3; }
+dl.triple { padding: 0 0 0 1em; }
+dl.triple dt, dl.triple dd { margin: 0; display: inline }
+dl.triple dt:after { content: ':'; }
+dl.triple dd:after { content: '\A'; white-space: pre; }
+.adef {
+ font-family: monospace;
+ font-weight: bold;
+ color: #ff4500 !important;
+}
+
+.aref {
+ font-family: monospace;
+ font-weight: bold;
+ color: #ff4500 !important;
+}
+.aref:before {content: "@"; }
+</style>
+<style>/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+ border: none;
+}
+
+dfn {
+ font-weight: bold;
+}
+
+a.internalDFN {
+ color: inherit;
+ border-bottom: 1px solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: 1px dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+cite .bibref {
+ font-style: normal;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- --- */
+ol.algorithm { counter-reset:numsection; list-style-type: none; }
+ol.algorithm li { margin: 0.5em 0; }
+ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
+
+/* --- TOC --- */
+.toc a, .tof a {
+ text-decoration: none;
+}
+
+a .secno, a .figno {
+ color: #000;
+}
+
+ul.tof, ol.tof {
+ list-style: none outside none;
+}
+
+.caption {
+ margin-top: 0.5em;
+ font-style: italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+ border-spacing: 0;
+ border-collapse: collapse;
+ border-bottom: 3px solid #005a9c;
+}
+
+.simple th {
+ background: #005a9c;
+ color: #fff;
+ padding: 3px 5px;
+ text-align: left;
+}
+
+.simple th[scope="row"] {
+ background: inherit;
+ color: inherit;
+ border-top: 1px solid #ddd;
+}
+
+.simple td {
+ padding: 3px 10px;
+ border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+ background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+ margin-top: 0;
+}
+
+.section dd > p:last-child {
+ margin-bottom: 0;
+}
+
+.section dd {
+ margin-bottom: 1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+ margin-bottom: 0;
+}
+</style><style>/* --- EXAMPLES --- */
+div.example-title {
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.example-title span {
+ text-transform: uppercase;
+}
+aside.example, div.example, div.illegal-example {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+div.illegal-example { color: red }
+div.illegal-example p { color: black }
+aside.example, div.example {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+ border-color: #e0cb52;
+ background: #fcfaee;
+}
+
+aside.example div.example {
+ border-left-width: .1em;
+ border-color: #999;
+ background: #fff;
+}
+aside.example div.example div.example-title {
+ color: #999;
+}
+</style><style>/* --- ISSUES/NOTES --- */
+div.issue-title, div.note-title {
+ padding-right: 1em;
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.issue-title { color: #e05252; }
+div.note-title { color: #52e052; }
+div.issue-title span, div.note-title span {
+ text-transform: uppercase;
+}
+div.note, div.issue {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.note > p:first-child, .issue > p:first-child { margin-top: 0 }
+.issue, .note {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+}
+div.issue, div.note {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+span.note, span.issue { padding: .1em .5em .15em; }
+
+.issue {
+ border-color: #e05252;
+ background: #fbe9e9;
+}
+.note {
+ border-color: #52e052;
+ background: #e9fbe9;
+}
+
+
+</style><link rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/W3C-WD" />
+<!--[if lt IE 9]><script src='undefined://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]-->
+</head>
+
+<body><div class="head">
+ <p>
+
+ <a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C" /></a>
+
+ </p>
+ <h1 class="title" id="title">Microdata to RDF</h1>
+
+ <h2 id="subtitle">Transformation from HTML+Microdata to RDF</h2>
+
+ <h2 id="w3c-working-draft-19-september-2012"><abbr title="World Wide Web Consortium">W3C</abbr> Working Draft 19 September 2012</h2>
+ <dl>
+
+ <dt>This version:</dt>
+ <dd><a href="http://www.w3.org/TR/2012/WD-microdata-rdf-20120919/">http://www.w3.org/TR/2012/WD-microdata-rdf-20120919/</a></dd>
+ <dt>Latest published version:</dt>
+ <dd><a href="http://www.w3.org/TR/microdata-rdf/">http://www.w3.org/TR/microdata-rdf/</a></dd>
+
+
+ <dt>Latest editor's draft:</dt>
+ <dd><a href="http://dvcs.w3.org/hg/htmldata/raw-file/default/microdata-rdf/index.html">http://dvcs.w3.org/hg/htmldata/raw-file/default/microdata-rdf/index.html</a></dd>
+
+
+
+
+
+ <dt>Previous version:</dt>
+ <dd><a href="http://www.w3.org/TR/2012/NOTE-microdata-rdf-20120308/">http://www.w3.org/TR/2012/NOTE-microdata-rdf-20120308/</a></dd>
+
+
+ <dt>Editor:</dt>
+ <dd><a href="http://greggkellogg.net/">Gregg Kellogg</a>, Kellogg Associates</dd>
+
+
+ <dt>Authors:</dt>
+ <dd><a href="mailto:ian@hixie.ch">Ian Hickson</a>, Google, Inc.</dd>
+<dd><a href="http://greggkellogg.net/">Gregg Kellogg</a>, Kellogg Associates</dd>
+<dd><a href="http://www.jenitennison.com/">Jeni Tennison</a>, Independent</dd>
+<dd><a href="http://www.w3.org/People/Ivan/">Ivan Herman</a>, <a href="http://www.w3.org"><abbr title="World Wide Web Consortium">W3C</abbr></a></dd>
+
+
+ </dl>
+
+
+ <p>
+
+ This document is also available in this non-normative format:
+
+ <a href="diff-20120308.html">diff to previous version</a>
+ </p>
+
+
+
+
+ <p class="copyright">
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
+ 2011-2012
+
+ <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
+ (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
+ <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
+ <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
+ <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
+ <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
+ </p>
+
+
+ <hr />
+</div>
+<section id="abstract" class="introductory"><h2>Abstract</h2>
+ <p>HTML microdata [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>] is an extension to HTML used to embed machine-readable data into HTML documents.
+ Whereas the microdata specification describes a means of markup, the output format is JSON. This specification
+ describes processing rules that may be used to extract RDF [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>] from an HTML document containing
+ microdata.</p>
+</section><section id="sotd" class="introductory"><h2>Status of This Document</h2>
+
+
+
+ <p>
+ <em>This section describes the status of this document at the time of its publication. Other
+ documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
+ of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
+ index</a> at http://www.w3.org/TR/.</em>
+ </p>
+
+<p>This document is an experimental work in progress. The concepts described herein are intended to
+ provide guidance for a possible future Working Group chartered to provide a Recommendation
+ for this transformation. As a consequence, implementers of this specification, either producers
+ or consumers, should note that it may change prior to any possible publication as a Recommendation.</p>
+
+<p>This Working Draft is an update of the <a href="/TR/2012/NOTE-microdata-rdf-20120308/"><abbr title="World Wide Web Consortium">W3C</abbr>
+Interest Group Note</a>, published in March 2012. This update adds the
+<a href="#vocab_expansion">Vocabulary Expansion</a> feature to the conversion algorithm, in response to the
+evolution of vocabularies discussed on the <a href="/2001/sw/interest/webschema.html">Web Schemas Task Force</a>
+of the <a href="/2001/sw/interest/">Semantic Web Interest Group</a> at <abbr title="World Wide Web Consortium">W3C</abbr>. The intention is to publish
+this draft as a new version of the Interest Group Note after gathering and incorporating community input.
+</p>
+
+ <p>
+ This document was published by the <a href="http://www.w3.org/2001/sw/interest/">Semantic Web Interest Group</a> as a Working Draft.
+
+ If you wish to make comments regarding this document, please send them to
+ <a href="mailto:semantic-web@w3.org">semantic-web@w3.org</a>
+ (<a href="mailto:semantic-web-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/semantic-web/">archives</a>).
+
+
+ All feedback is welcome.
+ </p>
+
+ <p>
+ Publication as a Working Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
+ This is a draft document and may be updated, replaced or obsoleted by other documents at
+ any time. It is inappropriate to cite this document as other than work in progress.
+ </p>
+
+
+ <p>
+
+ This document was produced by a group operating under the
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+ The group does not expect this document to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
+
+
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="" rel="disclosure">public list of any patent disclosures</a>
+
+ made in connection with the deliverables of the group; that page also includes instructions for
+ disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
+ information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ 6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+
+ </p>
+
+
+
+
+</section><section id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#background" class="tocxref"><span class="secno">1.1 </span>Background</a></li><li class="tocline"><a href="#use-cases" class="tocxref"><span class="secno">1.2 </span>Use Cases</a></li><li class="tocline"><a href="#issues" class="tocxref"><span class="secno">1.3 </span>Issues</a></li></ul></li><li class="tocline"><a href="#attributes-and-syntax" class="tocxref"><span class="secno">2. </span>Attributes and Syntax</a></li><li class="tocline"><a href="#vocabulary-registry" class="tocxref"><span class="secno">3. </span>Vocabulary Registry</a><ul class="toc"><li class="tocline"><a href="#property-uri-generation" class="tocxref"><span class="secno">3.1 </span>Property URI Generation</a></li><li class="tocline"><a href="#value-ordering" class="tocxref"><span class="secno">3.2 </span>Value Ordering</a></li><li class="tocline"><a href="#value-typing" class="tocxref"><span class="secno">3.3 </span>Value Typing</a></li></ul></li><li class="tocline"><a href="#vocabulary-expansion" class="tocxref"><span class="secno">4. </span>Vocabulary Expansion</a><ul class="toc"><li class="tocline"><a href="#vocabulary-entailment" class="tocxref"><span class="secno">4.1 </span>Vocabulary Entailment</a></li><li class="tocline"><a href="#vocabulary-expansion-control-of-microdata-processors" class="tocxref"><span class="secno">4.2 </span>Vocabulary Expansion Control of Microdata Processors</a></li></ul></li><li class="tocline"><a href="#algorithm" class="tocxref"><span class="secno">5. </span>Algorithm</a><ul class="toc"><li class="tocline"><a href="#algorithm-terms" class="tocxref"><span class="secno">5.1 </span>Algorithm Terms</a></li><li class="tocline"><a href="#rdf-conversion-algorithm" class="tocxref"><span class="secno">5.2 </span>RDF Conversion Algorithm</a></li><li class="tocline"><a href="#generate-the-triples" class="tocxref"><span class="secno">5.3 </span>Generate the triples</a></li><li class="tocline"><a href="#generate-predicate-uri" class="tocxref"><span class="secno">5.4 </span>Generate Predicate URI</a></li><li class="tocline"><a href="#generate-property-values" class="tocxref"><span class="secno">5.5 </span>Generate Property Values</a></li><li class="tocline"><a href="#generate-collection" class="tocxref"><span class="secno">5.6 </span>Generate RDF Collection</a></li></ul></li><li class="tocline"><a href="#testing" class="tocxref"><span class="secno">A. </span>Testing</a></li><li class="tocline"><a href="#markup-examples" class="tocxref"><span class="secno">B. </span>Markup Examples</a></li><li class="tocline"><a href="#example-registry" class="tocxref"><span class="secno">C. </span>Example <span class="formerLink">registry</span></a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">D. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">E. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">E.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">E.2 </span>Informative references</a></li></ul></li></ul></section>
+
+
+
+<section class="informative" id="introduction">
+
+<!--OddPage-->
+<h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+ <p>This document describes a means of transforming HTML containing microdata into RDF. HTML Microdata [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]
+ is an extension to HTML used to embed machine-readable data to HTML documents. This specification describes
+ transformation directly to RDF [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>].</p>
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ <p>There are a variety of ways in which a mapping from microdata to
+ RDF might be configured to give a result that is closer to the required result for a particular vocabulary. This
+ specification defines terms that can be used as hooks for vocabulary-specific behavior, which could be defined
+ within a <a href="#dfn-registry" class="internalDFN">registry</a> or on an implementation-defined basis. However, the HTML Data TF recommends the
+ adoption of a single method of mapping in which every vocabulary is treated as if:</p>
+ <ul>
+ <li><a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> is set to <code>vocabulary</code> </li>
+ <li><a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> is set to <code>unordered</code></li>
+ </ul>
+ <p>For background on the trade-offs between these options, see
+ <a href="http://www.w3.org/wiki/Mapping_Microdata_to_RDF">http://www.w3.org/wiki/Mapping_Microdata_to_RDF</a>.</p>
+ </div></div>
+<section class="informative" id="background">
+ <h3><span class="secno">1.1 </span>Background</h3><p><em>This section is non-normative.</em></p>
+ <p>Microdata [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>] is a way of embedding data in HTML documents
+ using attributes. The HTML DOM is extended to provide an API for
+ accessing microdata information, and the microdata specification
+ defines how to generate a JSON representation from microdata markup.</p>
+
+ <p>Mapping microdata to RDF enables consumers to merge data expressed
+ in other RDF-based formats with microdata. It facilitates the use of
+ RDF vocabularies within microdata, and enables microdata to be used
+ with the full RDF toolchain. Some use cases for this mapping are
+ described in <a href="#use-cases">Section 1.2</a> below.</p>
+
+ <p>Microdata's data model does not align neatly with RDF.</p>
+ <ul>
+ <li>Non-URL microdata properties are disambiguated based on microdata
+ <a href="#dfn-item-type" class="internalDFN">item type</a>; an <a href="#dfn-item" class="internalDFN">item</a> with the type <code>http://example.org/Cat</code> can have
+ both the property <code>color</code> and the property <code>http://example.org/color</code>,
+ and these properties are semantically distinct under microdata. In
+ RDF, all properties have IRIs.</li>
+
+ <li>When an item has multiple properties with the same name, the values are
+ always ordered; in RDF, property values are unordered unless they
+ are explicitly listed in an <a href="#dfn-rdf-collection" class="internalDFN">RDF Collection</a>.</li>
+
+ <li>A value in microdata is always a simple string which is interpreted
+ by the consuming application. In RDF, values can be tagged with a
+ datatype or a language. According to the microdata specification, the
+ HTML context of microdata markup should not change how microdata is
+ interpreted, so although element names and HTML <code>@lang</code> attributes could
+ be used to provide datatype and language information for RDF data, this
+ would be contrary to the microdata specification.</li>
+ </ul>
+
+ <p>Thus, in some places the needs of RDF consumers violate requirements of
+ the microdata specification. This specification highlights where such
+ violations occur and the reasons for them.</p>
+
+ <p>This specification allows for
+ <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a>-specific rules that affect the generation of property URIs and value serializations.
+ This is facilitated by a <a href="#dfn-registry" class="internalDFN">registry</a> that associates URIs with specific rules based on matching
+ <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> values against registered URI prefixes do determine a vocabulary and potentially
+ vocabulary-specific processing rules.</p>
+
+ <p>This specification also assumes that consumers of RDF generated from
+ microdata may have to process the results in order to, for example,
+ assign appropriate datatypes to <a href="#dfn-property-value" class="internalDFN">property value</a>s.</p>
+</section>
+
+<section class="informative" id="use-cases">
+ <h3><span class="secno">1.2 </span>Use Cases</h3><p><em>This section is non-normative.</em></p>
+ <p>During the period of the task force, a number of use cases were put forth for the use of microdata
+ in generating RDF:</p>
+ <ul>
+ <li>Semantic search engines such as <a href="http://sindice.com/">Sindice</a> use RDF as their backend data model.
+ They want to gather information expressed using microdata alongside information expressed in RDF-based formats
+ and make it available to others to use, as a service. In these cases, the ultimate consumer, who will need to
+ understand the vocabularies used within the microdata, is the program or person who pulls out data from Sindice.
+ Sindice needs to retain the distinctions in the original microdata (e.g. ordering of items) and might not have
+ built-in knowledge about the <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a> of interest to the ultimate consumer. In this case, the ultimate consumer
+ is likely to have to map/validate/handle errors in the data they get from Sindice.</li>
+ <li>A consumer such as <a href="http://openelectiondata.org">openelectiondata.org</a> wants to support
+ microdata-based markup of their <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a> as well as RDFa-based markup, both going into an RDF-based data store.
+ They want to use an off-the-shelf tool to extract the microdata. They want to configure the tool to give them the
+ RDF that is appropriate for their known <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a>.</li>
+ <li>A browser plugin that captures data for the user uses an RDF model as its backend store.
+ Any time it encounters microdata on a page, it wants to pull that microdata into the store on the fly.</li>
+ <li><a href="http://purl.org/goodrelations/">GoodRelations</a> properties do not take
+ <a title="rdf collection">rdf:List</a> values; when they take
+ multiple values they are unordered. The <code>rdfs:range</code> of a GoodRelations
+ property indicates the datatype of the expected value, and GoodRelations
+ processors will expect values to be cast to that type. Language
+ information from the HTML needs to be captured as it is common that
+ multiple values will be used to specify the same information in different
+ languages.</li>
+ <li><a href="http://schema.org/">Schema.org</a> has an
+ <a href="http://schema.org/docs/extension.html">extension mechanism</a> to allow authors to express information
+ that is more detail than the pre-defined types, properties and enumerations. Property URIs are all in the same
+ flat-namespace as types, but authors can add more detail by using a '/' after the type or property to provide
+ more detail. For example, schema.org defines a <em>musicGroupMember</em> property having a URI of
+ <code>http://schema.org/musicGroupMember</code>, and an author might express more detail through an ad-hoc
+ sub-property <em>musicGroupMember/leadVocalist</em>, having the URI
+ <code>http://schema.org/musicGroupMember/leadVocalist</code>.</li>
+ </ul>
+</section>
+
+<section class="informative" id="issues">
+ <h3><span class="secno">1.3 </span>Issues</h3><p><em>This section is non-normative.</em></p>
+ <p>Decisions or open issues in the specification are tracked on the
+ <a href="http://www.w3.org/2011/htmldata/track/issues">Task Force Issue Tracker</a>. These include the
+ following:</p>
+ <div class="issue"><div class="issue-title"><a href="http://www.w3.org/2011/htmldata/track/issues/1"><span>Issue 1</span></a></div><p class="">Vocabulary specific parsing for Microdata.
+ This specification attempts to create generic
+ rules for processing microdata with typical RDF vocabularies.
+ A <a href="#dfn-registry" class="internalDFN">registry</a> allows
+ for exceptions to the default processing rules for certain well-known vocabularies.</p></div>
+ <div class="issue"><div class="issue-title"><a href="http://www.w3.org/2011/htmldata/track/issues/2"><span>Issue 2</span></a></div><p class="">Should Microdata-RDF generate XMLLiteral values.
+ This issue has been closed with no change
+ as this would violate microdata's data model.</p></div>
+ <div class="issue"><div class="issue-title"><a href="http://www.w3.org/2011/htmldata/track/issues/3"><span>Issue 3</span></a></div><p class="">Should the <a href="#dfn-registry" class="internalDFN">registry</a> allow property datatype specification.
+ The consensus is that datatypes are only derived from HTML semantics, so that only <time> values have a datatype other than plain.</p></div>
+ <div class="issue"><div class="issue-title"><a href="http://www.w3.org/2011/htmldata/track/issues/4"><span>Issue 4</span></a></div><p class="">Should the <a href="#dfn-registry" class="internalDFN">registry</a> allow a <a href="#dfn-name" class="internalDFN">name</a> or URL
+ to be used as an alias for <a class="aref internalDFN" href="#dfn-itemid">itemid</a>.</p></div>
+
+ <p>The purpose of this specification is to provide input to a future working group that can make decisions
+ about the need for a <a href="#dfn-registry" class="internalDFN">registry</a> and the details of processing. Among the options investigated by
+ the Task Force are the following:</p>
+ <ul>
+ <li>Property URI generation using the original microdata specification with a base URI and
+ <cite><a href="http://tools.ietf.org/html/rfc3986#section-3.5">fragment</a></cite> made up of the in-scope <a href="#dfn-item-type" class="internalDFN">item
+ type</a> and <a href="#dfn-properties" class="internalDFN">properties</a>.</li>
+ <li>Vocabulary-based URI generation, where the <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a> is determined from the
+ in-scope <a href="#dfn-item-type" class="internalDFN">item type</a>, either through an algorithmic modification of the type URL or by matching the
+ URL against a <a href="#dfn-registry" class="internalDFN">registry</a>. The vocabulary URI is then used to generate property URIs in a namespace
+ parallel to the type URI.</li>
+ <li>When there are multiple <a href="#dfn-top-level-item" class="internalDFN">top-level item</a>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>
+ <li>When an item has multiple values for a given <a href="#dfn-property" class="internalDFN">property</a>, place the values 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>
+ </ul>
+ <p>More examples and explanatory information are available in [<cite><a class="bibref" href="#bib-MICRODATA-RDF-SUPPLEMENT">MICRODATA-RDF-SUPPLEMENT</a></cite>], which may
+ be updated from time to time.</p>
+</section>
+</section>
+
+<section id="attributes-and-syntax">
+
+<!--OddPage-->
+<h2><span class="secno">2. </span>Attributes and Syntax</h2>
+ <p>
+ The microdata specification [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>] defines a number of attributes and the way in which those
+ attributes are to be interpreted. The
+ <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#microdata-dom-api">microdata DOM API</a></cite>
+ provides methods and attributes for retrieving microdata from the HTML DOM.</p>
+ <p>For reference, attributes used for specifying and retrieving HTML microdata are referenced here:</p>
+ <dl>
+ <dt><dfn class="adef" id="dfn-itemid">itemid</dfn></dt><dd>
+ An attribute containing a URL used to identify the subject of triples associated with this <a href="#dfn-item" class="internalDFN">item</a>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemid">Items</a></cite>
+ in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn class="adef" id="dfn-itemprop">itemprop</dfn></dt><dd>
+ An attribute used to identify one or more <a href="#dfn-name" class="internalDFN">name</a>s of an <a href="#dfn-item" class="internalDFN">item</a>s. An <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>
+ contains a space separated list of <dfn id="dfn-name">name</dfn>s which may either by <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>s or terms
+ associated with the type of the <a href="#dfn-item" class="internalDFN">item</a> as defined by the referencing <a href="#dfn-item" class="internalDFN">item</a>'s
+ <a href="#dfn-item-type" class="internalDFN">item type</a>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#names:-the-itemprop-attribute">Items</a></cite>
+ in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn class="adef" id="dfn-itemref">itemref</dfn></dt><dd>
+ An additional attribute on an element that references additional elements containing property
+ definitions to be applied to the referencing <a href="#dfn-item" class="internalDFN">item</a>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemref">Items</a></cite>
+ in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn class="adef" id="dfn-itemscope">itemscope</dfn></dt><dd>
+ An boolean attribute identifying an element as an <a href="#dfn-item" class="internalDFN">item</a>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemscope">Items</a></cite>
+ in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn class="adef" id="dfn-itemtype">itemtype</dfn></dt><dd>
+ An additional attribute on an element used to specify one or more types of an <a href="#dfn-item" class="internalDFN">item</a>.
+ The <dfn id="dfn-item-type">item type</dfn> of an <a href="#dfn-item" class="internalDFN">item</a> 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 <a href="#dfn-item-type" class="internalDFN">item type</a> is also used to resolve non-URL <a href="#dfn-name" class="internalDFN">name</a>s to <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>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>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemtype">Items</a></cite>
+ in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ </dl>
+ <p>In RDF, it is common for people to shorten vocabulary terms via abbreviated URIs that use a 'prefix'
+ and a 'reference'. throughout this document assume that the following vocabulary
+ prefixes have been defined:</p>
+ <table><tbody>
+ <tr>
+ <td>dc:</td>
+ <td>http://purl.org/dc/terms/</td>
+ </tr>
+
+ <tr>
+ <td>md:</td>
+ <td>
+ http://www.w3.org/ns/md#</td>
+ </tr>
+
+ <tr>
+ <td>rdf:</td>
+ <td>
+ http://www.w3.org/1999/02/22-rdf-syntax-ns#</td>
+ </tr>
+
+ <tr>
+ <td>rdf:</td>
+ <td>
+ http://www.w3.org/1999/02/22-rdf-syntax-ns#</td>
+ </tr>
+
+ <tr>
+ <td>rdfa:</td>
+ <td>
+ http://www.w3.org/ns/rdfa#</td>
+ </tr>
+
+ <tr>
+ <td>xsd:</td>
+ <td>http://www.w3.org/2001/XMLSchema#</td>
+ </tr>
+ </tbody></table>
+</section>
+
+<section class="informative" id="vocabulary-registry">
+
+<!--OddPage-->
+<h2><span class="secno">3. </span>Vocabulary Registry</h2><p><em>This section is non-normative.</em></p>
+ <p>In a perfect world, all processors would be able to generate the same output for a given input
+ without regards to the requirements of a particular <a href="#dfn-vocabulary" class="internalDFN">vocabulary</a>. However, microdata doesn't
+ provide sufficient syntactic help in making these decisions. Different vocabularies have different
+ needs.</p>
+ <p>The registry is located at the namespace defined for microdata: <code>http://www.w3.org/ns/md</code> in
+ a variety of formats.</p>
+ <p>The <dfn id="dfn-registry">registry</dfn> associates a <dfn id="dfn-uri-prefix">URI prefix</dfn> with one or more key-value pairs denoting
+ processor behavior. A hypothetical JSON representation of such a registry might be the following:</p>
+<div class="example"><div class="example-title"><span>Example 1</span></div><pre class="example">{
+ "http://schema.org/": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered",
+ "properties": {
+ "tracks": {"multipleValues": "list"}
+ }
+ },
+ "http://microformats.org/profile/hcard": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "list",
+ "properties" {
+ "url": {"multipleValues": "unordered"}
+ }
+ }
+}</pre></div>
+ <p>This structure associates mappings for two URIs, <code>http://schema.org/</code> and
+ <code>http://microformats.org/profile/hcard</code>. Items having an <a href="#dfn-item-type" class="internalDFN">item type</a> with a <a href="#dfn-uri-prefix" class="internalDFN">URI
+ prefix</a> from this <a href="#dfn-registry" class="internalDFN">registry</a> use the the rules described for that prefix within the scope of that
+ <a href="#dfn-item-type" class="internalDFN">item type</a>. This mapping currently defines two rules: <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> and
+ <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> with values to indicate specific behavior. It also allows overrides
+ on a per-property basis; the <a href="#dfn-properties" class="internalDFN"><code>properties</code></a> key associates an individual <a href="#dfn-name" class="internalDFN">name</a>
+ with overrides for default behavior.
+ The interpretation of these
+ rules is defined in the following sections. If an item has no <a href="#dfn-current-type" class="internalDFN">current type</a> or the
+ <a href="#dfn-registry" class="internalDFN">registry</a> contains no <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> matching <a href="#dfn-current-type" class="internalDFN">current type</a>, a conforming
+ processor <em class="rfc2119" title="must">must</em> use the default values defined for these rules.</p>
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">The concept of a <a href="#dfn-registry" class="internalDFN">registry</a>, including a hypothetical format, location and updating rules
+ is presented as an abstract concept useful for describing the function of a microdata processor.
+ There are issues surrounding update
+ frequency, URL naming, and how updates are authorized. This spec
+ just considers the semantic content of such a <a href="#dfn-registry" class="internalDFN">registry</a> and how it can be used to affect processing without
+ defining its representation or update policies.</p></div>
+
+<section class="informative" id="property-uri-generation">
+ <h3><span class="secno">3.1 </span>Property URI Generation</h3><p><em>This section is non-normative.</em></p>
+ <p>For <a href="#dfn-name" class="internalDFN">name</a>s which are not <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>s,
+ the <dfn id="dfn-propertyuri"><code>propertyURI</code></dfn> rule defines the algorithm for generating an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>
+ given an <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a> including a <a href="#dfn-current-type" class="internalDFN">current type</a>, <a href="#dfn-current-name" class="internalDFN">current name</a> and
+ <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a>.</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 <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> are the following:</p>
+ <dl>
+ <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 <a href="#dfn-current-name" class="internalDFN">current name</a>. This is
+ required as the microdata data model requires that <a href="#dfn-name" class="internalDFN">name</a>s are associated with specific
+ items and do not have a global scope. (See <a href="#scheme-context">Step 5</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
+ type and <a href="#dfn-name" class="internalDFN">name</a> list. Consider the following example:</p>
+ <div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example"><span itemscope itemtype="http://microformats.org/profile/hcard">
+ <span itemprop="n" itemscope>
+ <span itemprop="given-name">
+ Princeton
+ </span>
+ </span>
+</span></pre></div>
+ <p>The first <a href="#dfn-name" class="internalDFN">name</a> <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 <a href="#dfn-name" class="internalDFN">name</a> <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.given-name</code>.</p>
+ <p>This scheme is compatible with the needs of other RDF serialization formats such as
+ RDF/XML [<cite><a class="bibref" href="#bib-RDF-SYNTAX-GRAMMAR">RDF-SYNTAX-GRAMMAR</a></cite>],
+ which rely on <em>QNames</em> for expressing properties. For example, the generated property URIs
+ can be split as follows:</p>
+ <div class="example"><div class="example-title"><span>Example 3</span></div><pre class="example"><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>
+ <p>Looking at another example:</p>
+ <div class="example"><div class="example-title"><span>Example 4</span></div><pre class="example"><div itemscope itemtype="http://schema.org/Person">
+ <h2 itemprop="name">Jeni</h2>
+</div></pre></div>
+ <p>This would generate <code>http://www.w3.org/ns/md?type=http://schema.org/Person&prop=name</code>.</p>
+ </div>
+ </dd>
+ <dt><code>vocabulary</code></dt><dd>
+ The <code>vocabulary</code> URI generation scheme appends <a href="#dfn-name" class="internalDFN">name</a>s that are not
+ <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>s to the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a>. When generating property URIs, if the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a>
+ does not end with a '/' or '#', a '#' is appended to the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a>. (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 URL with query parameters to indicate the in-scope
+ type and <a href="#dfn-name" class="internalDFN">name</a> list. Consider the following example:</p>
+ <div class="example"><div class="example-title"><span>Example 5</span></div><pre class="example"><span itemscope itemtype="http://microformats.org/profile/hcard">
+ <span itemprop="n" itemscope>
+ <span itemprop="given-name">
+ Princeton
+ </span>
+ </span>
+</span></pre></div>
+ <p>Given the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> <code>http://microformats.org/profile/hcard</code>, this
+ would generate <code>http://microformats.org/profile/hcard#n</code> and
+ <code>http://microformats.org/profile/hcard#given-name</code>. Note that the '#' is automatically
+ added as a separator.</p>
+ <p>Looking at another example:</p>
+ <div class="example"><div class="example-title"><span>Example 6</span></div><pre class="example"><div itemscope itemtype="http://schema.org/Person">
+ <h2 itemprop="name">Jeni</h2>
+</div></pre></div>
+ <p>Given the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> <code>http://schema.org/</code>,
+ this would generate <code>http://schema.org/name</code>. Note that if the <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a>
+ were <code>http://schema.org/Person/Teacher</code>, this would generate the same property URI.</p>
+ </div>
+ </dd>
+ </dl>
+ <p>If the <a href="#dfn-registry" class="internalDFN">registry</a> contains no match for <a href="#dfn-current-type" class="internalDFN">current type</a> implementations act as if
+ there is a <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> made from the first <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> value by stripping either the <cite><a href="http://tools.ietf.org/html/rfc3986#section-3.5">fragment</a></cite> content or <cite><a href="http://tools.ietf.org/html/rfc3986#section-3.3">last path segment</a></cite>, if the value has no fragment (See
+ [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>]).</p>
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">Deconstructing the <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> 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></div>
+ <p>The default value of <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> is <code>vocabulary</code>.</p>
+ <div class="example"><div class="example-title"><span>Example 7</span></div><pre class="example"><div itemscope itemtype="http://schema.org/Book">
+ <h2 itemprop="title">Just a Geek</h2>
+</div></pre></div>
+ <p>In this example, assuming no matching entry in the <a href="#dfn-registry" class="internalDFN">registry</a>,
+ the <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> is constructed by removing the
+ <cite><a href="http://tools.ietf.org/html/rfc3986#section-3.3">last path segment</a></cite>, leaving the URI
+ <code>http://schema.org/</code>. As there is no explicit <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a>,
+ the default <code>vocabulary</code> is used, and the resulting property URI would be
+ <code>http://schema.org/title</code>.</p>
+</section>
+
+<section class="informative" id="value-ordering">
+ <h3><span class="secno">3.2 </span>Value Ordering</h3><p><em>This section is non-normative.</em></p>
+ <p>For items having multiple values for a given <a href="#dfn-property" class="internalDFN">property</a>,
+ the <dfn id="dfn-multiplevalues"><code>multipleValues</code></dfn> rule defines the algorithm for serializing these values.
+ Microdata uses document order when generating <a href="#dfn-property-value" class="internalDFN">property value</a>s, as defined in
+ <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#microdata-dom-api">Microdata DOM API</a></cite>
+ as <code>element.itemValue</code>. However, many RDF vocabularies expect multiple values to be generated
+ as triples sharing a common subject and predicate. In some cases, it may be useful to retain value ordering.</p>
+ <p>The procedure for generating <a href="#dfn-property-value" class="internalDFN">property value</a>s is defined in
+ <a href="#generate-property-values">Generate Property Values</a>.</p>
+ <p>Possible values for <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> are the following:</p>
+ <dl>
+ <dt><code>unordered</code></dt><dd>
+ Values are serialized without ordering using a common subject and predicate.
+ (See <a href="#values-unordered">Step 7</a> in
+ <a href="#generate-property-values">Generate Property Values</a>).
+ </dd>
+ <dt><code>list</code></dt><dd>
+ Multi-valued <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>s are serialized using an <a href="#dfn-rdf-collection" class="internalDFN">RDF Collection</a>.
+ (See <a href="#values-list">Step 8</a> in
+ <a href="#generate-property-values">Generate Property Values</a>).
+ </dd>
+ </dl>
+ <p>An example of how this might be specified in a <a href="#dfn-registry" class="internalDFN">registry</a> is the following:</p>
+ <div class="example"><div class="example-title"><span>Example 8</span></div><pre class="example">{
+ "http://schema.org/": {
+ "propertyURI": "vocabulary",
+ <span class="diff">"multipleValues": "unordered"</span>
+ },
+ "http://microformats.org/profile/hcard": {
+ "propertyURI": "vocabulary",
+ <span class="diff">"multipleValues": {"multipleValues": "list"}</span>
+ }
+}</pre></div>
+ <p>Additionally, some vocabularies may wish to specify this on a per-property basis. For example,
+ within <code>http://schema.org/MusicPlaylist</code> the <code>tracks</code> property might depend on the order
+ of values to to reproduce associated <code>MusicRecording</code> values.</p>
+ <div class="example"><div class="example-title"><span>Example 9</span></div><pre class="example">{
+ "http://schema.org/": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered"<span class="diff">,
+ "properties": {
+ "tracks": {"multipleValues": "list"}
+ }</span>
+ }
+}</pre></div>
+ <p>The <dfn id="dfn-properties"><code>properties</code></dfn> key takes a JSON Object as a value, which in turn has keys for each
+ property that is to be given alternate semantics. Each <a href="#dfn-name" class="internalDFN">name</a> is implicitly expanded to it's URI
+ representation as defined in <a href="#generate-predicate-uri">Generate Predicate URI</a>, so that
+ the behavior is the same whether or not the <a href="#dfn-name" class="internalDFN">name</a> is listed as an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>.</p>
+ <p>The default value of <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> is <code>unordered</code>.</p>
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ <p>An alternative mechanism would output <em>both</em> unordered and ordered values, to allow an application
+ to choose the most useful representation. For example, consider the following:</p>
+<div class="example"><div class="example-title"><span>Example 10</span></div><pre class="example"><div itemscope itemtype="http://schema.org/MusicPlaylist">
+ <span itemprop="name">Classic Rock Playlist</span>
+ <meta itemprop="numTracks" content="2"/>
+ <p>Including works by
+ <span itemprop="byArtist">Lynard Skynard</span> and
+ <span itemprop="byArtist">AC/DC</span></p>.
+
+ <div itemprop="tracks" itemscope itemtype="http://schema.org/MusicRecording">
+ 1.<span itemprop="name">Sweet Home Alabama</span> -
+ <span itemprop="byArtist">Lynard Skynard</span>
+ <link href="sweet-home-alabama" itemprop="url" />
+ </div>
+
+ <div itemprop="tracks" itemscope itemtype="http://schema.org/MusicRecording">
+ 2.<span itemprop="name">Shook you all Night Long</span> -
+ <span itemprop="byArtist">AC/DC</span>
+ <link href="shook-you-all-night-long" itemprop="url" />
+ </div>
+</div></pre></div>
+ <p>This might generate the following Turtle:</p>
+<div class="example"><div class="example-title"><span>Example 11</span></div><pre class="example">@prefix md: <http://www.w3.org/ns/md#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
+@prefix schema: <http://schema.org/> .
+
+<> md:item [
+ a schema:MusicPlaylist;
+ schema:name "Classic Rock Playlist";
+ schema:byArtist ("Lynard Skynard" "AC/DC");
+ schema:numTracks "2";
+ schema:tracks _:track1, _:track2, (_:track1 _:track2)
+ ];
+ rdfa:usesVocabulary schema:
+ .
+_:track1 a schema:MusicRecording;
+ schema:byArtist ("Lynard Skynard");
+ schema:name "Sweet Home Alabama";
+ schema:url <sweet-home-alabama> .
+_:track2 a schema:MusicRecording;
+ schema:byArtist ("AC/DC");
+ schema:name "Shook you all Night Long";
+ schema:url <shook-you-all-night-long> .</pre></div>
+ <p>By providing both <code>_:track1</code> and <code>_:track2</code> as object values of the playlist
+ along with an RDF Collection containing the ordered values, the data may be queried via a simple
+ query using the playlist subject, or as an ordered collection.</p>
+ </div></div>
+</section>
+
+<section class="informative" id="value-typing">
+ <h3><span class="secno">3.3 </span>Value Typing</h3><p><em>This section is non-normative.</em></p>
+ <p>In microdata, all values are strings. In RDF, values may be resources
+ or may be typed with an appropriate datatype.</p>
+ <p> In some cases, the type of a microdata value can be determined from the
+ element on which it is specified. In particular:</p>
+ <ul>
+ <li>URL property elements provide URLs</li>
+ <li><code>time</code> element provides dates and times</li>
+ </ul>
+ <div class="issue"><div class="issue-title"><span>Issue</span></div><p class="">Using information about the content of the document where the microdata
+ is marked up <em>might</em> be a violation of the spirit of the microdata specification, though it does not explicitly say in
+ normative text that consumers cannot use other information from the HTML DOM to interpret microdata.</p></div>
+
+ <p>Additionally, one possible use of a <a href="#dfn-registry" class="internalDFN">registry</a> would allow vocabularies to be marked with datatype information,
+ so that a <code>dc:time</code> value, for example, would be understood to represent a literal with datatype
+ <code>xsd:date</code>. This could be done by adding information for each property in the vocabulary requiring
+ special treatment.</p>
+ <p>This might be represented using a syntax such as the following:</p>
+ <div class="example"><div class="example-title"><span>Example 12</span></div><pre class="example">{
+ "http://schema.org/": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered"<span class="diff">,
+ "properties": {
+ "dateCreated": {"datatype": "http://www.w3.org/2001/XMLSchema#date"}
+ }</span>
+ }
+}</pre></div>
+ <p>The <code>datatype</code> identifies a URI to be used in constructing a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a>.</p>
+
+ <p>In most cases, the relevant datatype for a value can be derived from
+ knowledge of what property the value is for and the syntax of the value
+ itself. Thus, values can be given datatypes in a post-processing step
+ after the mapping of microdata to RDF described by this specification.
+ However, where there is information in the HTML markup, such as knowledge
+ of what element was used to mark up the value, which can help with
+ determining its datatype, that information is used by this specification.</p>
+ <p>This concept is not explored further at this time, but could be developed further in
+ a future revision of this document.</p>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">If property URI generation was fixed to <code>vocabulary</code>, multiple values always
+ generated both <code>unordered</code> and <code>ordered</code> representations, and there were <code>datatype</code>
+ support, the <a href="#dfn-registry" class="internalDFN">registry</a> could be reduced to a simple list of URLs without any further structure necessary.</p></div>
+</section>
+</section>
+
+<section id="vocabulary-expansion">
+
+<!--OddPage-->
+<h2 id="vocab_expansion"><span class="secno">4. </span>Vocabulary Expansion</h2>
+ <p>Microdata requires that all values of <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> come from the same vocabulary. This
+ is required as <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a> values are resolved relative to that vocabulary. However,
+ it is often useful to define an <a href="#dfn-item" class="internalDFN">item</a> to have types from multiple different vocabularies.</p>
+ <p>Vocabulary expansion uses simple rules to generate additional triples based on
+ rules and property relationships described in the <a href="#dfn-registry" class="internalDFN">registry</a>.
+ Within the <a href="#dfn-registry" class="internalDFN">registry</a>, a property definition may have either <code>equivalentProperty</code>
+ or <code>subPropertyOf</code> keys having a IRI value (or array of IRI values)
+ of the associated property. Such an
+ entry causes the processor to generate triples associating the source
+ property IRI with the target property IRI using either
+ <code>http://www.w3.org/2000/01/rdf-schema#subPropertyOf</code> or
+ <code>http://www.w3.org/2002/07/owl#equivalentProperty</code> predicates.</p>
+ <p>For example, the <a href="#dfn-registry" class="internalDFN">registry</a> definition for the <em>additionalType</em> property
+ within schema.org, defines <em>additionalType</em> to have an <a>rdfs:subPropertyOf</a>
+ relationship with <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code>.</p>
+
+<div class="example"><div class="example-title"><span>Example 13</span></div><pre class="example">{
+ "http://schema.org/": {
+ "properties": {
+ <span class="diff">"additionalType": {"subPropertyOf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"}</span>
+ }
+}
+
+<div itemscope itemtype="http://schema.org/Product">
+ <link itemprop="additionalType" href="http://www.productontology.org/id/Laser_printer" />
+ <p itemprop="name">Laser Printer</a>
+</div> </pre></div>
+
+ <p>The previous example, indicates a <a href="#dfn-registry" class="internalDFN">registry</a> rule, which causes the processor to emit
+ an extra triple when first seeing the <code>additionalProperty</code> <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>:</p>
+
+<div class="example"><div class="example-title"><span>Example 14</span></div><pre class="example">@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix schema: <http://schema.org/> .
+
+<> md:item (
+ [ a schema:Product;
+ schema:additionalType <http://www.productontology.org/id/Laser_printer> ;
+ schema:name "Laser Printer"]
+ );
+ rdfa:usesVocabulary schema: .
+
+schema:additionalProperty rdfs:subPropertyOf rdf:type .</pre></div>
+
+ <p>After performing vocabulary expansion, an additional <code>rdf:type</code> triple is generated:</p>
+
+<div class="example"><div class="example-title"><span>Example 15</span></div><pre class="example">@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix schema: <http://schema.org/> .
+
+<> md:item (
+ [ a schema:Product, <http://www.productontology.org/id/Laser_printer>;
+ schema:additionalType <http://www.productontology.org/id/Laser_printer> ;
+ schema:name "Laser Printer"]
+ )
+ rdfa:usesVocabulary schema: .
+
+schema:additionalProperty rdfs:subPropertyOf rdf:type .</pre></div>
+
+<section id="vocabulary-entailment">
+ <h3><span class="secno">4.1 </span>Vocabulary Entailment</h3>
+ <p>Formally, and for the purpose of vocabulary processing, microdata uses a very
+ restricted subset of the OWL2 vocabulary and is based on the RDF-Based Semantics of OWL2 [<cite><a class="bibref" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>].
+ Vocabulary Entailment uses the following terms: </p>
+ <ul>
+ <li><code>rdfs:subPropertyOf</code></li>
+ <li><code>owl:equivalentProperty</code>
+ </li>
+ </ul>
+ <p>Vocabulary Entailment considers only the entailment on individuals
+ (i.e., not on the relationships that can be deduced on the
+ properties or the classes themselves.)
+ </p>
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">While the formal definition of the Entailment
+ refers to the general OWL 2 Semantics, practical implementations may
+ rely on a subset of the OWL 2 RL Profile’s entailment expressed in
+ rules
+ (<cite><a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/#Reasoning_in_OWL_2_RL_and_RDF_Graphs_using_Rules">
+ section 4.3</a></cite>
+ of [<cite><a class="bibref" href="#bib-OWL2-PROFILES">OWL2-PROFILES</a></cite>]). The
+ relevant rules are, using the rule identifications in
+ <cite><a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/#Reasoning_in_OWL_2_RL_and_RDF_Graphs_using_Rules">
+ section 4.3</a></cite>
+ of [<cite><a class="bibref" href="#bib-OWL2-PROFILES">OWL2-PROFILES</a></cite>]): <code>prp-spo1</code>, <code>prp-eqp1</code>, and
+ <code>prp-eqp2</code>.</p></div>
+
+ <p>[<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>] implements a more complete form of vocabulary entailement,
+ including retrieving the vocabulary URI to find additional class and property expansion definitions, as
+ described in <cite><a href="http://www.w3.org/TR/rdfa-syntax/#s_vocab_entailment">RDFa Vocabulary Entailment</a></cite>.
+ Microdata implementations <em class="rfc2119" title="may">may</em> use RDFa Vocabulary Entailment as an alternative to implementing
+ a separate entailment algorithm. To allow [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>] processors to be used for microdata vocabulary expansion, microdata acts as if there is an implicit <code>@vocab</code> RDFa attribute set to a detected vocabulary by emitting
+ a triple using the <code>rdfa:usesVocabulary</code> predicate.</p>
+
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">The entailment described in this section is the <em>minimum</em>
+ useful level for microdata. Processors may, of course, choose to follow
+ more powerful entailment regimes, e.g., include full RDFS [<cite><a class="bibref" href="#bib-RDF-MT">RDF-MT</a></cite>]
+ or OWL2 [<cite><a class="bibref" href="#bib-OWL2-OVERVIEW">OWL2-OVERVIEW</a></cite>] entailments. Using those entailments
+ applications may perform datatype validation by checking <code>rdfs:range</code>
+ of a property, or use the advanced facilities offered by, e.g., OWL2’s
+ property chains to interlink vocabularies further.</p></div>
+
+</section>
+
+<section id="vocabulary-expansion-control-of-microdata-processors">
+ <h3><span class="secno">4.2 </span>Vocabulary Expansion Control of Microdata Processors</h3>
+ <p>Conforming processors <em class="rfc2119" title="must">must</em> perform the basic vocabulary expansion.</p>
+ <p>If vocabulary expansion is performed by the microdata processor using [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>] vocabulary expansion, and the
+ <code>vocab_expansion</code> option is passed to the microdata processor,
+ the full [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>] expansion <em class="rfc2119" title="must">must</em> also be performed.</p>
+</section>
+</section>
+
+<section id="algorithm">
+
+<!--OddPage-->
+<h2><span class="secno">5. </span>Algorithm</h2>
+ <p>
+ Transformation of Microdata to RDF makes use of general processing rules described in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]
+ for the treatment of <a href="#dfn-item" class="internalDFN">item</a>s.
+ </p>
+ <section id="algorithm-terms">
+ <h3><span class="secno">5.1 </span>Algorithm Terms</h3>
+ <dl>
+ <dt><dfn id="dfn-absolute-url">absolute URL</dfn></dt><dd>
+ The term <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/urls.html#absolute-url">absolute URL</a></cite>
+ is defined in [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>].
+ </dd>
+ <dt><dfn id="dfn-blank-node">blank node</dfn></dt><dd>
+ A blank node is a node in a graph that is neither a <a href="#dfn-uri-reference" class="internalDFN">URI reference</a> nor a <a href="#dfn-literal" class="internalDFN">literal</a>.
+ <a>Item</a>s without a <a href="#dfn-global-identifier" class="internalDFN">global identifier</a> have a blank node allocated to them.
+ (See [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]).
+ </dd>
+ <dt><dfn id="dfn-document-base">document base</dfn></dt><dd>
+ The base address of the document being processed, as defined in <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/urls.html#resolving-urls">Resolving URLs</a></cite> in
+ [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>].
+ </dd>
+ <dt><dfn id="dfn-evaluation-context">evaluation context</dfn></dt><dd>
+ A data structure including the following elements:
+ <dl>
+ <dt><dfn id="dfn-memory">memory</dfn></dt><dd>
+ a mapping of items to subjects, initially empty;
+ </dd>
+ <dt><dfn id="dfn-current-name">current name</dfn></dt><dd>
+ an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a> for the in-scope <a href="#dfn-name" class="internalDFN">name</a>, used for generating URIs
+ for properties of items without an <a href="#dfn-item-type" class="internalDFN">item type</a>;
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ <a href="#dfn-current-name" class="internalDFN">current name</a> is required for the <code>contextual</code> property URI generation
+ scheme. Without this scheme, this evaluation context component would not be required.
+ </div></div>
+ </dd>
+ <dt><dfn id="dfn-current-type">current type</dfn></dt><dd>
+ an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a> for the <em>current type</em>, used when an <a href="#dfn-item" class="internalDFN">item</a> does not
+ contain an <a href="#dfn-item-type" class="internalDFN">item type</a>;
+ </dd>
+ <dt><dfn id="dfn-current-vocabulary">current vocabulary</dfn></dt><dd>
+ an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a> for the <em>current vocabulary</em>, from the <a href="#dfn-registry" class="internalDFN">registry</a>.
+ </dd>
+ </dl>
+ </dd>
+ <dt><dfn id="dfn-item">item</dfn></dt><dd>
+ An <a href="#dfn-item" class="internalDFN">item</a> is described by an element containing an <a class="aref internalDFN" href="#dfn-itemscope">itemscope</a> attribute. The list
+ of top-level microdata items may be retrieved using the
+ <cite><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-document-getitems">document.getItems</a></cite></code>
+ method.
+ </dd>
+ <dt><dfn id="dfn-item-properties">item properties</dfn></dt><dd>
+ The mechanism for finding the <a title="item properties" href="#dfn-item-properties" class="internalDFN">properties of an item</a> The list
+ of item properties items may be retrieved using the
+ <cite><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><dfn id="dfn-fragment-escape">fragment-escape</dfn></dt><dd>
+ The term <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/urls.html#fragment-escaped">fragment-escape</a></cite>
+ is defined in [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>]. 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 (<)</li>
+ <li>U+003E GREATER-THAN SIGN character (>)</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><dfn id="dfn-global-identifier">global identifier</dfn></dt><dd>
+ The value of an <a href="#dfn-item" class="internalDFN">item</a>'s <a href="#dfn-itemid" class="internalDFN">itemid</a> attribute, if it has one. (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#attr-itemscope">Items</a></cite> in
+ [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn id="dfn-literal">literal</dfn></dt><dd>
+ Literals are values such as strings and dates, including <dfn id="dfn-typed-literal">typed literal</dfn>s and
+ <dfn id="dfn-plain-literal">plain literal</dfn>s.
+ (See [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]).
+ </dd>
+ <dt><dfn id="dfn-property">property</dfn></dt><dd>
+ Each <a href="#dfn-name" class="internalDFN">name</a> identifies a <a href="#dfn-property" class="internalDFN">property</a> of an <a href="#dfn-item" class="internalDFN">item</a>.
+ An <a href="#dfn-item" class="internalDFN">item</a> may have multiple elements sharing the same <a href="#dfn-name" class="internalDFN">name</a>, creating
+ a multi-valued <a href="#dfn-property" class="internalDFN">property</a>.
+ </dd>
+ <dt><dfn id="dfn-property-names">property names</dfn></dt><dd>
+ The tokens of an element's <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a> attribute. Each token is a <a href="#dfn-name" class="internalDFN">name</a>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#property-names">Names: the
+ itemprop attribute</a></cite> in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn id="dfn-property-value">property value</dfn></dt><dd>
+ The <a href="#dfn-property-value" class="internalDFN">property value</a> of a name-value pair added by an element with an <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>
+ attribute depends on the element.
+ <dl>
+ <dt>If the element has no <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a> attribute</dt>
+ <dd>The value is null and no triple should be generated.</dd>
+ <dt>If the element creates an <a href="#dfn-item" class="internalDFN">item</a> (by having an <a class="aref internalDFN" href="#dfn-itemscope">itemscope</a> attribute)</dt>
+ <dd>
+ The value is the <a href="#dfn-uri-reference" class="internalDFN">URI reference</a> or <a href="#dfn-blank-node" class="internalDFN">blank node</a> returned from
+ <a href="#generate-the-triples">generate the triples</a> for that <a href="#dfn-item" class="internalDFN">item</a>.
+ </dd>
+ <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 <a href="#dfn-uri-reference" class="internalDFN">URI reference</a> created from <code><cite>
+ <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>.
+ (See relevant attribute descriptions in [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>]).
+ </dd>
+ <dt>If the element is a <code>time</code> element.</dt>
+ <dd>The value is a <a href="#dfn-literal" class="internalDFN">literal</a> made from <code><cite>
+ <a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#dom-itemvalue">element.itemValue</a></cite></code>.
+ <dl>
+ <dt>
+ If the value is a
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-date-string">
+ valid date string
+ </a></cite>
+ having the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#date">xsd:date</a></cite> [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+ </dt>
+ <dd>
+ The value is a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#date</code>.
+ </dd>
+ <dt>
+ If the value is a
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-time-string">
+ valid time string
+ </a></cite>
+ having the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#time">xsd:time</a></cite> [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+ </dt>
+ <dd>
+ The value is a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#time</code>.
+ </dd>
+ <dt>
+ If the value is a
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-local-date-and-time-string">
+ valid local date and time string
+ </a></cite>
+ or
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-global-date-and-time-string">
+ valid global date and time string
+ </a></cite>
+ having the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime</a></cite> [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+ </dt>
+ <dd>
+ The value is a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#dateTime</code>.
+ </dd>
+ <dt>
+ If the value is a
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-month-string">
+ valid month string
+ </a></cite>
+ having the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#gYearMonth">xsd:gYearMonth</a></cite> [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+ </dt>
+ <dd>
+ The value is a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#gYearMonth</code>.
+ </dd>
+ <dt>
+ If the value is a
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#valid-non-negative-integer">
+ valid non-negative integer
+ </a></cite>
+ having the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#gYear">xsd:gYear</a></cite> [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+ </dt>
+ <dd>
+ The value is a <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#gYear</code>.
+ </dd>
+ <dt>
+ If the value has the lexical form of
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#duration">xsd:duration</a></cite>
+ [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].
+
+<!--
+ If the value is a
+ <cite><a href="http://dev.w3.org/html5/spec/Overview.html#valid-duration-string">
+ valid duration string
+ </a></cite>
+ having 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 <a href="#dfn-typed-literal" class="internalDFN">typed literal</a> composed of the value and
+ <code>http://www.w3.org/2001/XMLSchema#duration</code>.
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">The referenced version of [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>] does not include a <em>duration</em> data type,
+ but it is in the Editor's Draft and is expected to be included in a
+ forthcoming update to the Working Draft</p></div>
+ </dd>
+ <dt>Otherwise</dt>
+ <dd>
+ The value is a <a href="#dfn-plain-literal" class="internalDFN">plain literal</a> created from the value with language information set from the
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#language">language</a></cite>
+ of the property element.
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">The HTML
+ <em>valid yearless date string</em>
+ is similar to
+ <cite><a href="http://www.w3.org/TR/xmlschema-2/#gMonthDay">xsd:gMonthDay</a></cite>,
+ but the lexical forms differ, so it is not included in this conversion.</p></div>
+ </dd>
+ </dl>
+ <p>See
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/rendering.html#the-time-element-0">
+ The <code>time</code> element
+ </a></cite>
+ in [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>].</p>
+ </dd>
+ <dt>Otherwise</dt>
+ <dd>The value is a <a href="#dfn-plain-literal" class="internalDFN">plain literal</a> created from the value with language information set from the
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#language">language</a></cite> of the property element.
+ <p>See
+ <cite><a href="http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-lang-and-xml:lang-attributes">
+ The <code>lang</code> and <code>xml:lang</code> attributes
+ </a></cite>
+ in [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>] for determining the language of a node.</p>
+ </dd>
+ </dl>
+ </dd>
+ <dt><dfn id="dfn-top-level-item">top-level item</dfn></dt><dd>
+ An <a href="#dfn-item" class="internalDFN">item</a> which does not contain an <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a> attribute.
+ 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>document.getItems</code>.
+ (See <cite><a href="http://www.w3.org/TR/2011/WD-microdata-20110525/#top-level-microdata-items">Associating names with items</a></cite> in [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>]).
+ </dd>
+ <dt><dfn id="dfn-uri-reference">URI reference</dfn></dt><dd>
+ URI references are suitable to be used in <em>subject</em>, <em>predicate</em> or <em>object</em> positions
+ within an RDF triple, as opposed to a <a href="#dfn-literal" class="internalDFN">literal</a> value that may contain a string representation of a
+ URI. (See [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]).
+ <div class="issue"><div class="issue-title"><span>Issue</span></div><div class="">
+ <p>The HTML5/microdata content model for <code>@href</code>, <code>@src</code>,
+ <code>@data</code>, <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> and <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a> and <a class="aref internalDFN" href="#dfn-itemid">itemid</a> is that of
+ a URL, not a URI or IRI.</p>
+ <p>A proposed mechanism for specifying the range of <a href="#dfn-property-value" class="internalDFN">property value</a>s to be URI reference or IRI could
+ allow these to be specified as subject or object using a <code>@content</code> attribute.</p>
+ </div></div>
+ </dd>
+ <dt><dfn id="dfn-vocabulary">vocabulary</dfn></dt><dd>
+ A vocabulary is a collection of URIs, suitable for use as an <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a> or <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>
+ value, that share a common <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a>. That prefix is the vocabulary URI. A vocabulary URI is not
+ allowed to be a prefix of another vocabulary URI.
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ This definition differs from the language in the HTML spec and is just for the purpose of this
+ document. In HTML, a vocabulary is a specification, and doesn't have a URI. In our view, if one
+ specification defines ten <a class="aref internalDFN" href="#dfn-itemtype">itemtype</a>s, then these could be treated as one vocabulary or as ten
+ distinct vocabularies; it is entirely up to the vocabulary creator.
+ </div></div>
+ </dd>
+ </dl>
+ </section>
+
+ <section id="rdf-conversion-algorithm">
+ <h3><span class="secno">5.2 </span>RDF Conversion Algorithm</h3>
+ <p>A HTML document containing microdata <em class="rfc2119" title="may">may</em> be converted to any other RDF-compatible document
+ format using the algorithm specified in this section.</p>
+ <p>A conforming microdata processor implementing RDF conversion <em class="rfc2119" title="must">must</em> 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>
+
+ <ol class="algorithm">
+ <li>For each element that is also a <a href="#dfn-top-level-item" class="internalDFN">top-level item</a> run the following algorithm:
+ <ol class="algorithm">
+ <li>
+ <a href="#generate-the-triples">Generate the triples</a> for an item <em>item</em>, using the
+ <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a>.
+ Let <em>result</em> be the (<a href="#dfn-uri-reference" class="internalDFN">URI reference</a> or <a href="#dfn-blank-node" class="internalDFN">blank node</a>) subject returned.
+ </li>
+ <li>
+ Append <em>result</em> to <em>item list</em>.
+ </li>
+ </ol>
+ </li>
+ <li>
+ <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>
+ Generate the following triple:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><a href="#dfn-document-base" class="internalDFN">document base</a></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/ns/md#item</code></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ </li>
+ <li>
+ Perform <a href="#vocabulary-entailment">Vocabulary Entailment</a>.</li>
+ </ol>
+ </section>
+
+ <section id="generate-the-triples">
+ <h3><span class="secno">5.3 </span>Generate the triples</h3>
+ <p>
+ When the user agent is to Generate triples for an <a href="#dfn-item" class="internalDFN">item</a> <em>item</em>, given
+ <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a>, it must run the following steps:
+ </p>
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">
+ This algorithm has undergone substantial change from the original microdata specification [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>].
+ </p></div>
+ <ol class="algorithm">
+ <li>
+ If there is an entry for <em>item</em> in <a href="#dfn-memory" class="internalDFN">memory</a>, then let <em>subject</em> be the subject of
+ that entry. Otherwise, if <em>item</em> has a <a href="#dfn-global-identifier" class="internalDFN">global identifier</a> and that
+ <a href="#dfn-global-identifier" class="internalDFN">global identifier</a> is an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>, let <em>subject</em> be that
+ <a href="#dfn-global-identifier" class="internalDFN">global identifier</a>. Otherwise, let <em>subject</em> be a new <a href="#dfn-blank-node" class="internalDFN">blank node</a>.
+ </li>
+ <li>Add a mapping from <em>item</em> to <em>subject</em> in <a href="#dfn-memory" class="internalDFN">memory</a></li>
+ <li>
+ 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 <a href="#dfn-item" class="internalDFN">item</a>.
+ <ol class="algorithm">
+ <li>If <em>type</em> is an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>, generate the following triple:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>subject</em></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code></dd>
+ <dt>object</dt>
+ <dd><em>type</em> (as a <a href="#dfn-uri-reference" class="internalDFN">URI reference</a>)</dd>
+ </dl>
+ </li>
+ </ol>
+ </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 <a href="#dfn-item" class="internalDFN">item</a>.
+ </li>
+ <li>If <em>type</em> is an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>, set <a href="#dfn-current-name" class="internalDFN">current name</a> in
+ <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a> to null.</li>
+ <li>
+ Otherwise, set <em>type</em> to <a href="#dfn-current-type" class="internalDFN">current type</a> from
+ <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a> if not empty.
+ </li>
+ <li>If the <a href="#dfn-registry" class="internalDFN">registry</a> contains a <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> that is a
+ character for character match of <em>type</em> up to the length of the
+ <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a>, set <em>vocab</em> as that <a href="#dfn-uri-prefix" class="internalDFN">URI prefix</a> and
+ generate the following triple:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><a href="#dfn-document-base" class="internalDFN">document base</a></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/ns/rdfa#usesVocabulary</code></dd>
+ <dt>object</dt>
+ <dd><em>vocab</em> (as a <a href="#dfn-uri-reference" class="internalDFN">URI reference</a>)</dd>
+ </dl>
+ </li>
+ <li>Otherwise, if type is not empty, construct <em>vocab</em> by removing everything following the last
+ SOLIDUS U+002F ("/") or NUMBER SIGN U+0023 ("#") from the <em>path</em> component of <em>type</em>.</li>
+ <li>Update <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a> setting <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a> to <em>vocab</em>.</li>
+ <li>
+ Set <em>property list</em> to an empty array mapping properties to one or more
+ <em>value</em>s as established below.
+ </li>
+ <li>
+ For each element <em>element</em> that has one or more <a href="#dfn-property-names" class="internalDFN">property names</a> and is one of the
+ <a title="item properties" href="#dfn-item-properties" class="internalDFN">properties of the item</a> <em>item</em>, in the order those elements
+ are given by the algorithm that returns the <a title="item properties" href="#dfn-item-properties" class="internalDFN">properties of the item</a>,
+ run the following substep:
+ <ol class="algorithm">
+ <li>
+ For each <em>name</em> in the element's <a href="#dfn-property-names" class="internalDFN">property names</a>, run the following substeps:
+ <ol class="algorithm">
+ <li>
+ Let <em>context</em> be a copy of <a href="#dfn-evaluation-context" class="internalDFN">evaluation context</a> with <a href="#dfn-current-type" class="internalDFN">current type</a> set
+ to <em>type</em>.
+ </li>
+ <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 <a href="#dfn-current-name" class="internalDFN">current name</a> to <em>predicate</em>.
+ </li>
+ <li>
+ Let <em>value</em> be the <a href="#dfn-property-value" class="internalDFN">property value</a> of <em>element</em>.
+ </li>
+ <li>
+ If <em>value</em> is an <a href="#dfn-item" class="internalDFN">item</a>, then <a href="#generate-the-triples">generate the
+ triples</a> for <em>value</em> using <em>context</em>. Replace <em>value</em> by the subject returned
+ from those steps.
+ </li>
+ <li>
+ Add <em>value</em> to <em>property list</em> for <em>predicate</em>.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ For each <em>predicate</em> in <em>property list</em>:
+ <ol class="algorithm">
+ <li><a href="#generate-property-values">Generate property values</a> <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>
+ </li>
+ <li>Return <em>subject</em></li>
+ </ol>
+ </section>
+
+ <section id="generate-predicate-uri">
+ <h3><span class="secno">5.4 </span>Generate Predicate URI</h3>
+ <p>Predicate URI generation makes use of <a href="#dfn-current-type" class="internalDFN">current type</a>,
+ <a href="#dfn-current-name" class="internalDFN">current name</a>, and <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a> from an <a href="#dfn-evaluation-context" class="internalDFN">evaluation
+ context</a> <em>context</em> along with <em>name</em>.</p>
+
+ <ol class="algorithm">
+ <li>If <em>name</em> is an <a href="#dfn-absolute-url" class="internalDFN">absolute URL</a>, return <em>name</em>
+ as a <a href="#dfn-uri-reference" class="internalDFN">URI reference</a>.</li>
+ <li>If <a href="#dfn-current-type" class="internalDFN">current type</a> from <em>context</em> is null,
+ there can be no <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a>. Return the <a href="#dfn-uri-reference" class="internalDFN">URI reference</a>
+ that is the <a href="#dfn-document-base" class="internalDFN">document base</a> with its <cite><a href="http://tools.ietf.org/html/rfc3986#section-3.5">fragment</a></cite>
+ set to the <a href="#dfn-fragment-escape" class="internalDFN">fragment-escape</a>d value of <em>name</em>.
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ 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 <a href="#dfn-document-base" class="internalDFN">document base</a> of
+ <code>http://example.org/doc</code> and an <a class="aref internalDFN" href="#dfn-itemprop">itemprop</a>
+ of 'title', a URI will be constructed to be
+ <code>http://example.org/doc#title</code>.
+ </div></div>
+ </li>
+ <li>Otherwise, if <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a> from <em>context</em>
+ is not null and <a href="#dfn-registry" class="internalDFN">registry</a> has an entry for <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a>
+ having a <a href="#dfn-propertyuri" class="internalDFN">propertyURI</a> entry that is not null, set that as
+ <em>scheme</em>. Otherwise, set <em>scheme</em> to
+ <code>vocabulary</code>.</li>
+ <li id="scheme-vocab">If <em>scheme</em> is <code>vocabulary</code>
+ set <em>expandedURI</em> to the <a href="#dfn-uri-reference" class="internalDFN">URI reference</a> constructed by
+ appending the <a href="#dfn-fragment-escape" class="internalDFN">fragment-escape</a>d value of <em>name</em> to <a href="#dfn-current-vocabulary" class="internalDFN">current
+ vocabulary</a>, separated by a U+0023 NUMBER SIGN character (#) unless the
+ <a href="#dfn-current-vocabulary" class="internalDFN">current vocabulary</a> ends with either a U+0023 NUMBER SIGN character
+ (#) or SOLIDUS U+002F (/).</li>
+ <li id="scheme-context">Otherwise, if <em>scheme</em> is
+ <code>contextual</code>, set <em>expandedURI</em> to the <a href="#dfn-uri-reference" class="internalDFN">URI
+ reference</a> constructed as follows:
+ <ol class="algorithm">
+ <li>Let <em>s</em> be <a href="#dfn-current-name" class="internalDFN">current name</a> 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 <a href="#dfn-fragment-escape" class="internalDFN">fragment-escape</a>d value
+ of <em>name</em>.</li>
+ <li>Otherwise, return the concatenation of
+ <code>http://www.w3.org/ns/md?type=</code>, the
+ <a href="#dfn-fragment-escape" class="internalDFN">fragment-escape</a>d value of <a href="#dfn-current-type" class="internalDFN">current type</a>, the string
+ <code>&prop=</code>, and the <a href="#dfn-fragment-escape" class="internalDFN">fragment-escape</a>d value of
+ <em>name</em>. </li>
+ </ol>
+ </li>
+ <li>If the <a href="#dfn-registry" class="internalDFN">registry</a> entry for <a href="#dfn-propertyuri" class="internalDFN">propertyURI</a>
+ has an <code>equivalentProperty</code> key,
+ generate the following triple using the
+ <em>value</em> of that key:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>expandedURI</em></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/2002/07/owl#equivalentProperty</code></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ <p>If the value is an array, generate a triple for each value of that array.</p>
+ </li>
+ <li>If the <a href="#dfn-registry" class="internalDFN">registry</a> entry for <a href="#dfn-propertyuri" class="internalDFN">propertyURI</a>
+ has an <code>subPropertyOf</code> key, generate the following triple using the
+ <em>value</em> of that key:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>expandedURI</em></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/2000/01/rdf-schema#subPropertyOf</code></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ <p>If the value is an array, generate a triple for each value of that array.</p>
+ </li>
+ <li>Return <em>expandedURI</em>.</li>
+ </ol>
+ </section>
+
+ <section id="generate-property-values">
+ <h3><span class="secno">5.5 </span>Generate Property Values</h3>
+ <p>Property value serialization makes use of <em>subject</em>, <em>predicate</em> and <em>values</em>.</p>
+
+ <ol class="algorithm">
+ <li>If the <a href="#dfn-registry" class="internalDFN">registry</a> contains a URI prefix that is a character for character match of
+ <em>predicate</em> up to the length of the URI prefix, set <em>vocab</em> as that URI prefix.
+ Otherwise set <em>vocab</em> to null.</li>
+ <li>If <em>vocab</em> is not null
+ and <a href="#dfn-registry" class="internalDFN">registry</a> has an entry for <em>vocab</em> that is a JSON Object, let
+ <em>registry object</em> be that value. Otherwise set <em>registry object</em> to null.</li>
+ <li>If <em>registry object</em> is not null and <em>registry object</em> contains key
+ <a href="#dfn-properties" class="internalDFN"><code>properties</code></a>
+ which has a JSON Object value, let <em>properties</em> be that value. Otherwise, set <em>properties</em>
+ to null.</li>
+ <li>If <em>properties</em> is not null, and <em>properties</em> contains a key, which after
+ <a href="#generate-predicate-uri">Generate Predicate URI</a> expansion has a value which is a JSON Object, let
+ <em>property override</em> be that value. Otherwise, set <em>property override</em> to null.</li>
+ <li>If <em>property override</em> contains the key
+ <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a>, set that as <em>method</em>.</li>
+ <li>Otherwise, if <em>registry object</em> con contains the key
+ <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a>, set that as <em>method</em>.</li>
+ <li>Otherwise, set <em>method</em> to <code>unordered</code>.</li>
+ <li id="values-unordered">If <em>method</em> is <code>unordered</code>,
+ for each <em>value</em> in <em>values</em>, generate the following triple:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>subject</em></dd>
+ <dt>predicate</dt>
+ <dd><em>predicate</em></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ </li>
+ <li id="values-list">Otherwise, if <em>method</em> is <code>list</code>:
+ <ol class="algorithm">
+ <li>Set <em>value</em> to the value returned from <a href="#generate-collection">generate an RDF
+ Collection</a>.
+ </li>
+ <li>
+ Generate the following triple:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>subject</em></dd>
+ <dt>predicate</dt>
+ <dd><em>predicate</em></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </section>
+
+ <section id="generate-collection">
+ <h3><span class="secno">5.6 </span>Generate RDF Collection</h3>
+ <p>
+ An <dfn id="dfn-rdf-collection">RDF Collection</dfn> is a mechanism for defining ordered sequences of objects in RDF (See <cite><a href="http://www.w3.org/TR/rdf-syntax/#collections">RDF Collections</a></cite> in
+ [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>]). As the RDF data-model is that of an unordered graph, a linking method using properties
+ <code>rdf:first</code> and <code>rdf:next </code>is required to be able to specify a particular order.
+ </p>
+ <p>
+ In the microdata to RDF mapping, <a href="#dfn-rdf-collection" class="internalDFN">RDF Collection</a>s are used when an item has more than one value
+ associated with a given property to ensure that the original document order is maintained. The following
+ procedure should be used to generate triples when an <a href="#dfn-item" class="internalDFN">item</a> property has more than one value
+ (contained in <em>list</em>):
+ </p>
+ <ol class="algorithm">
+ <li>
+ Create a new array <em>array</em> containing a <a href="#dfn-blank-node" class="internalDFN">blank node</a> for every value in <em>list</em>.
+ </li>
+ <li>
+ For each pair of <em>bnode</em> from <em>array</em> and <em>value</em> from <em>list</em> the following
+ triple is generated:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>bnode</em></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</code></dd>
+ <dt>object</dt>
+ <dd><em>value</em></dd>
+ </dl>
+ </li>
+ <li>
+ For each <em>bnode</em> in <em>array</em> the following triple is generated:
+ <dl class="triple">
+ <dt>subject</dt>
+ <dd><em>bnode</em></dd>
+ <dt>predicate</dt>
+ <dd><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</code></dd>
+ <dt>object</dt>
+ <dd>
+ 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>
+ </li>
+ <li>
+ Return the first <a href="#dfn-blank-node" class="internalDFN">blank node</a> from <em>array</em>.
+ </li>
+ </ol>
+ </section>
+</section>
+
+<section class="appendix informative" id="testing">
+
+<!--OddPage-->
+<h2><span class="secno">A. </span>Testing</h2><p><em>This section is non-normative.</em></p>
+ <p>A test suite [<cite><a class="bibref" href="#bib-MICRODATA-RDF-TESTS">MICRODATA-RDF-TESTS</a></cite>] under development to help processor developers verify
+ conformance to this specification.</p>
+</section>
+
+<section class="appendix informative" id="markup-examples">
+
+<!--OddPage-->
+<h2><span class="secno">B. </span>Markup Examples</h2><p><em>This section is non-normative.</em></p>
+
+<p>The microdata example below expresses book information as an FRBR Work item.</p>
+
+<div class="example"><div class="example-title"><span>Example 16</span></div><pre class="example"><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://books.example.com/works/45U8QJGZSQKDH8N"
+ lang="en">
+ <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://books.example.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://books.example.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://books.example.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://books.example.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</dl></pre></div>
+
+<p>Assuming that <a href="#dfn-registry" class="internalDFN">registry</a> contains a an entry for <code>http://purl.org/vocab/frbr/core#</code>
+ with <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> set to <code>vocabulary</code>,
+ this is equivalent to the following Turtle:</p>
+<div class="example"><div class="example-title"><span>Example 17</span></div><pre class="example">@prefix dc: <http://purl.org/dc/terms/> .
+@prefix md: <http://www.w3.org/ns/md#> .
+@prefix frbr: <http://purl.org/vocab/frbr/core#> .
+@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
+
+<> md:item (<http://books.example.com/works/45U8QJGZSQKDH8N>) ;
+ rdfa:usesVocabulary frbr: .
+
+<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
+ dc:creator "Wil Wheaton"@en ;
+ dc:title "Just a Geek"@en ;
+ frbr:realization <http://books.example.com/products/9780596007683.BOOK>,
+ <http://books.example.com/products/9780596802189.EBOOK> .
+
+<http://books.example.com/products/9780596007683.BOOK> a frbr:Expression ;
+ dc:type <http://books.example.com/product-types/BOOK> .
+
+<http://books.example.com/products/9780596802189.EBOOK> a frbr:Expression ;
+ dc:type <http://books.example.com/product-types/EBOOK> .</pre></div>
+
+<p>The following snippet of HTML has microdata for two people with the same address. This illustrates two
+ <a href="#dfn-item" class="internalDFN">item</a>s referencing a third item, and how only a single RDF resource definition is created
+ for that third item.</p>
+<div class="example"><div class="example-title"><span>Example 18</span></div><pre class="example"><p>
+ Both
+ <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 itemprop="fn"
+ ><span itemprop="n" itemscope
+ ><span itemprop="given-name">Trekkie</span></span></span>
+ </span>
+ live at
+ <span id="home" itemprop="adr" itemscope>
+ <span itemprop="street-address">Avenue Q</span>.
+ </span>
+</p></pre></div>
+
+<p>Assuming that <a href="#dfn-registry" class="internalDFN">registry</a> contains a an entry for <code>http://microformats.org/profile/hcard</code>
+ with <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> set to <code>vocabulary</code>,
+ it generates these triples expressed in Turtle:</p>
+
+<div class="example"><div class="example-title"><span>Example 19</span></div><pre class="example">@prefix md: <http://www.w3.org/ns/md#> .
+@prefix hcard: <http://microformats.org/profile/hcard#> .
+@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
+
+<> md:item (
+ [ a <http://microformats.org/profile/hcard>;
+ hcard:fn "Princeton";
+ hcard:n [ hcard:given-name "Princeton" ];
+ hcard:adr _:a
+ ]
+ [ a <http://microformats.org/profile/hcard>;
+ hcard:fn "Trekkie";
+ hcard:n [ hcard:given-name "Trekkie" ];
+ hcard:adr _:a
+ ]) ;
+ rdfa:usesVocabulary <http://microformats.org/profile/hcard> .
+
+_:a hcard:street-address "Avenue Q" .</pre></div>
+
+<p>The following snippet of HTML has microdata for a playlist, and illustrates overriding a property
+ to place elements in an RDF Collection. This also illustrates the use of the <code>schema:additionalType</code>
+ property to relate recordings to the <cite><a href="http://musicontology.com/">Music Ontology</a></cite>:</p>
+<div class="example"><div class="example-title"><span>Example 20</span></div><pre class="example"><div itemscope itemtype="http://schema.org/MusicPlaylist">
+ <span itemprop="name">Classic Rock Playlist</span>
+ <meta itemprop="numTracks" content="2"/>
+ <p>Including works by
+ <span itemprop="byArtist">Lynard Skynard</span> and
+ <span itemprop="byArtist">AC/DC</span></p>.
+
+ <div itemprop="tracks" itemscope itemtype="http://schema.org/MusicRecording">
+ <link itemprop="additionalType" href="http://purl.org/ontology/mo/MusicalManifestation"/>
+ 1.<span itemprop="name">Sweet Home Alabama</span> -
+ <span itemprop="byArtist">Lynard Skynard</span>
+ <link href="sweet-home-alabama" itemprop="url" />
+ </div>
+
+ <div itemprop="tracks" itemscope itemtype="http://schema.org/MusicRecording">
+ <link itemprop="additionalType" href="http://purl.org/ontology/mo/MusicalManifestation"/>
+ 2.<span itemprop="name">Shook you all Night Long</span> -
+ <span itemprop="byArtist">AC/DC</span>
+ <link href="shook-you-all-night-long" itemprop="url" />
+ </div>
+</div></pre></div>
+
+<p>Assuming that <a href="#dfn-registry" class="internalDFN">registry</a> contains a an entry for <code>http://schema.org/</code>
+ with <a href="#dfn-propertyuri" class="internalDFN"><code>propertyURI</code></a> set to <code>vocabulary</code>,
+ <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> set to <code>unordered</code> with the properties
+ <code>track</code> and <code>byArtist</code> having <a href="#dfn-multiplevalues" class="internalDFN"><code>multipleValues</code></a> set to <code>list</code>,
+ it generates these triples expressed in Turtle:</p>
+
+<div class="example"><div class="example-title"><span>Example 21</span></div><pre class="example">@prefix md: <http://www.w3.org/ns/md#> .
+@prefix mo: <http://purl.org/ontology/mo/> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
+@prefix schema: <http://schema.org/> .
+
+<> md:item ([ a schema:MusicPlaylist;
+ schema:name "Classic Rock Playlist";
+ schema:byArtist ("Lynard Skynard" "AC/DC");
+ schema:numTracks "2";
+ schema:tracks (
+ [ a schema:MusicRecording, mo:MusicalManifestation;
+ schema:additionalType mo:MusicalManifestation;
+ schema:byArtist ("Lynard Skynard");
+ schema:name "Sweet Home Alabama";
+ schema:url <sweet-home-alabama>]
+ [ a schema:MusicRecording, mo:MusicalManifestation;
+ schema:additionalType mo:MusicalManifestation;
+ schema:byArtist ("AC/DC");;
+ schema:name "Shook you all Night Long";
+ schema:url <shook-you-all-night-long>]
+ )]);
+ rdfa:usesVocabulary schema: .
+
+schema:additionalType rdfs:subPropertyOf rdf:type .</pre></div>
+
+</section>
+
+<section class="appendix informative" id="example-registry">
+
+<!--OddPage-->
+<h2><span class="secno">C. </span>Example <a href="#dfn-registry" class="internalDFN">registry</a></h2><p><em>This section is non-normative.</em></p>
+ <p>The following is an example <a href="#dfn-registry" class="internalDFN">registry</a> in JSON format.</p>
+
+ <div class="example"><div class="example-title"><span>Example 22</span></div><pre class="example">{
+ "http://schema.org/": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered",
+ "properties": {
+ "additionalType": {"subPropertyOf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"},
+ "blogPosts": {"multipleValues": "list"},
+ "blogPosts": {"multipleValues": "list"},
+ "breadcrumb": {"multipleValues": "list"},
+ "byArtist": {"multipleValues": "list"},
+ "creator": {"multipleValues": "list"},
+ "episode": {"multipleValues": "list"},
+ "episodes": {"multipleValues": "list"},
+ "event": {"multipleValues": "list"},
+ "events": {"multipleValues": "list"},
+ "founder": {"multipleValues": "list"},
+ "founders": {"multipleValues": "list"},
+ "itemListElement": {"multipleValues": "list"},
+ "musicGroupMember": {"multipleValues": "list"},
+ "performerIn": {"multipleValues": "list"},
+ "actor": {"multipleValues": "list"},
+ "actors": {"multipleValues": "list"},
+ "performer": {"multipleValues": "list"},
+ "performers": {"multipleValues": "list"},
+ "producer": {"multipleValues": "list"},
+ "recipeInstructions": {"multipleValues": "list"},
+ "season": {"multipleValues": "list"},
+ "seasons": {"multipleValues": "list"},
+ "subEvent": {"multipleValues": "list"},
+ "subEvents": {"multipleValues": "list"},
+ "track": {"multipleValues": "list"},
+ "tracks": {"multipleValues": "list"}
+ }
+ },
+ "http://microformats.org/profile/hcard": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered"
+ },
+ "http://microformats.org/profile/hcalendar#": {
+ "propertyURI": "vocabulary",
+ "multipleValues": "unordered",
+ "properties": {
+ "categories": {"multipleValues": "list"}
+ }
+ }
+}</pre></div>
+</section>
+
+<section class="appendix informative" id="acknowledgements">
+
+<!--OddPage-->
+<h2><span class="secno">D. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+ <p>Thanks to Richard Cyganiak for property URI and vocabulary terminology and the general excellent
+ consideration of practical problems in generating RDF from microdata.</p>
+</section>
+
+
+
+<section id="references" class="appendix">
+<!--OddPage-->
+<h2><span class="secno">E. </span>References</h2><section id="normative-references"><h3><span class="secno">E.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-HTML5">[HTML5]</dt><dd>Ian Hickson; David Hyatt. <a href="http://www.w3.org/TR/html5"><cite>HTML5.</cite></a> 29 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/html5">http://www.w3.org/TR/html5</a>
+</dd><dt id="bib-MICRODATA">[MICRODATA]</dt><dd><cite><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">HTML Microdata</a></cite> Ian Hickson Editor. W3C Working Draft. (Work in progress). 29 March 2012. This edition of the HTML Microdata specification is http://www.w3.org/TR/2012/WD-microdata-20120329/. The <a href="http://www.w3.org/TR/microdata/">latest edition of HTML Microdata</a> is available at http://www.w3.org/TR/microdata/
+</dd><dt id="bib-OWL2-OVERVIEW">[OWL2-OVERVIEW]</dt><dd>W3C OWL Working Group. <a href="http://www.w3.org/TR/2009/REC-owl2-overview-20091027/"><cite>OWL 2 Web Ontology Language: Overview.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-overview-20091027/">http://www.w3.org/TR/2009/REC-owl2-overview-20091027/</a>
+</dd><dt id="bib-OWL2-PROFILES">[OWL2-PROFILES]</dt><dd>Boris Motik; Bernardo Cuenca Grau; Ian Horrocks; Zhe Wu; Achille Fokoue; Carsten Lutz. <a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/"><cite>OWL 2 Web Ontology Language:Profiles.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/">http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/</a>
+</dd><dt id="bib-OWL2-RDF-BASED-SEMANTICS">[OWL2-RDF-BASED-SEMANTICS]</dt><dd>Michael Schneider. <a href="http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/"><cite>OWL 2 Web Ontology Language:RDF-Based Semantics.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/">http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/</a>
+</dd><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd>Graham Klyne; Jeremy J. Carroll. <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210</a>
+</dd><dt id="bib-RDF-MT">[RDF-MT]</dt><dd>Patrick Hayes. <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210"><cite>RDF Semantics.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210">http://www.w3.org/TR/2004/REC-rdf-mt-20040210</a>
+</dd><dt id="bib-RDF-SCHEMA">[RDF-SCHEMA]</dt><dd>Dan Brickley; Ramanathan V. Guha. <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210"><cite>RDF Vocabulary Description Language 1.0: RDF Schema.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">http://www.w3.org/TR/2004/REC-rdf-schema-20040210</a>
+</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd>T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax.</cite></a> January 2005. Internet RFC 3986. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
+</dd></dl></section><section id="informative-references"><h3><span class="secno">E.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-MICRODATA-RDF-SUPPLEMENT">[MICRODATA-RDF-SUPPLEMENT]</dt><dd><cite><a href="http://dvcs.w3.org/hg/htmldata/raw-file/default/microdata-supplement/index.html">Microdata to RDF Supplement</a></cite> Gregg Kellogg Editor. World Wide Web Consortium (work in progress). 22 January 2012.
+</dd><dt id="bib-MICRODATA-RDF-TESTS">[MICRODATA-RDF-TESTS]</dt><dd><cite><a href="http://dvcs.w3.org/hg/htmldata/raw-file/default/microdata-rdf/tests/index.html">Microdata to RDF Tests</a></cite> Gregg Kellogg, Ivan Herman Editors. World Wide Web Consortium (work in progress). 22 March 2012.
+</dd><dt id="bib-RDF-SYNTAX-GRAMMAR">[RDF-SYNTAX-GRAMMAR]</dt><dd>Dave Beckett. <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210"><cite>RDF/XML Syntax Specification (Revised).</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210">http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210</a>
+</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd>Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/</a>
+</dd></dl></section></section></body></html>
\ No newline at end of file