separated out details about multiple types in microdata into appendix
authorJeniT
Wed, 21 Dec 2011 16:26:57 +0000
changeset 658ca69129dd76
parent 64 ffddea8db417
child 66 93e829ad570b
separated out details about multiple types in microdata into appendix
html-data-guide/index.html
     1.1 --- a/html-data-guide/index.html	Wed Dec 21 12:17:15 2011 +0000
     1.2 +++ b/html-data-guide/index.html	Wed Dec 21 16:26:57 2011 +0000
     1.3 @@ -353,209 +353,20 @@
     1.4                <a title="property">Properties</a> in microdata are either short names (in which case they are scoped to the <a>vocabulary</a> of the <a title="type">types</a> of the entity) or URLs. A URL property has no relationship to a given short name property unless that relationship is specified within the vocabulary that defines the properties.
     1.5              </p>
     1.6              <p>
     1.7 -              You might find that you need to target two consumers who each recognise items using <a title="type">types</a> from different <a title="vocabularies">vocabularies</a>. For example, you might want to both target schema.org and use the vEvent vocabulary with the original HTML:
     1.8 +              You might find that you need to target two consumers who each recognise items using <a title="type">types</a> from different <a title="vocabularies">vocabularies</a>. For example, you might want to both target schema.org and use the vEvent vocabulary when providing data about an event.
     1.9              </p>
    1.10 -            <pre>&lt;a href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
    1.11 -NBA Eastern Conference First Round Playoff Tickets:
    1.12 - Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)
    1.13 -&lt;/a&gt;
    1.14 -
    1.15 -Thu, 04/21/16
    1.16 -8:00 p.m.
    1.17 -
    1.18 -&lt;a href=&quot;wells-fargo-center.html&quot;&gt;
    1.19 -Wells Fargo Center
    1.20 -&lt;/a&gt;
    1.21 -Philadelphia, PA</pre>
    1.22              <p>
    1.23                In this case there are three options available to you. The first, if consumers support it, is to use a different <a>syntax</a> for one of the <a title="vocabulary">vocabularies</a>. For example, the vEvent vocabulary is only supported in microdata but schema.org can be consumed from either microdata or RDFa, so it would be possible to mark up the data using the vEvent vocabulary in microdata and the schema.org vocabulary in RDFa. This approach is described in more detail in <a href="#mixing-syntaxes" class="sectionRef"></a>. Mixing syntaxes within a single page is rarely a good option but in some circumstances it may be preferable to the other workarounds described here.
    1.24              </p>
    1.25              <p>
    1.26 -              The other options for marking up using multiple vocabularies in microdata are described below.
    1.27 +              The second option is to use a <a>property</a> that is treated by consumers as providing the <a>type</a> for an item, as if the <code>@itemtype</code> attribute had been used. This requires <a>vocabulary</a> authors to define such a property for a given vocabulary.
    1.28              </p>
    1.29 -            <section>
    1.30 -              <h6>Mixing Vocabularies using a Type Property</h6>
    1.31 -              <p>
    1.32 -                Some <a title="vocabulary">vocabularies</a> may define a <a>property</a> through which <a title="type">types</a> from that vocabulary can be assigned to items that are in a different vocabulary. For example, schema.org could define a <code>http://schema.org/type</code> property. It could say that the value of <code>http://schema.org/type</code> must be the URL for a schema.org type. And further, that if the property <code>http://schema.org/type</code> has the value <code>http://schema.org/Person</code>, say, then the item will be interpreted exactly as if the <code>@itemtype</code> attribute held the value <code>http://schema.org/Person</code>.
    1.33 -              </p>
    1.34 -              <p class="note">
    1.35 -                At time of writing schema.org does not specify a <code><a href="http://schema.org/type" rel="nofollow">http://schema.org/type</a></code> property, and this explanation is hypothetical.
    1.36 -              </p>
    1.37 -              <p>
    1.38 -                When using this technique, the types specified in the <code>@itemtype</code> attribute are the <b>primary types</b> of the item and those specified through the type property are the <b>secondary types</b>.
    1.39 -              </p>
    1.40 -              <p>
    1.41 -                If the schema.org <a>vocabulary</a> also stated that <a>property</a> URLs that begin with <code>http://schema.org/</code> must be treated in the same way as equivalent short-name properties on items with a schema.org type, the schema.org <a>vocabulary</a> could be mixed in with an item marked up using vEvent:
    1.42 -              </p>
    1.43 -              <pre>&lt;div itemscope itemtype=&quot;http://microformats.org/profile/hcalendar#vevent&quot;&gt;
    1.44 -  <strong>&lt;link itemprop=&quot;http://schema.org/type&quot; href=&quot;http://schema.org/Event&quot;&gt;</strong>
    1.45 -  &lt;a itemprop=&quot;url <strong>http://schema.org/url</strong>&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
    1.46 -  NBA Eastern Conference First Round Playoff Tickets:
    1.47 -  &lt;span itemprop=&quot;summary <strong>http://schema.org/name</strong>&quot;&gt; Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) &lt;/span&gt;
    1.48 -  &lt;/a&gt;
    1.49 -
    1.50 -  &lt;meta itemprop=&quot;dtstart <strong>http://schema.org/startDate</strong>&quot; content=&quot;2016-04-21T20:00&quot;&gt;
    1.51 -    Thu, 04/21/16
    1.52 -    8:00 p.m.
    1.53 -
    1.54 -  &lt;div itemprop=&quot;location&quot;&gt;
    1.55 -    <strong>&lt;div itemprop=&quot;http://schema.org/location&quot; itemscope itemtype=&quot;http://schema.org/Place&quot;&gt;
    1.56 -      &lt;a itemprop=&quot;url&quot; href=&quot;wells-fargo-center.html&quot;&gt;
    1.57 -      Wells Fargo Center
    1.58 -      &lt;/a&gt;
    1.59 -      &lt;div itemprop=&quot;address&quot; itemscope itemtype=&quot;http://schema.org/PostalAddress&quot;&gt;
    1.60 -        &lt;span itemprop=&quot;addressLocality&quot;&gt;Philadelphia&lt;/span&gt;,
    1.61 -        &lt;span itemprop=&quot;addressRegion&quot;&gt;PA&lt;/span&gt;
    1.62 -      &lt;/div&gt;
    1.63 -    &lt;/div&gt;</strong>
    1.64 -  &lt;/div&gt;
    1.65 -&lt;/div&gt;</pre>
    1.66 -              <p class="note">
    1.67 -                The vEvent <code>location</code> <a>property</a> takes text while the schema.org <code>location</code> property takes structured information about the location. These are combined by having an element for the property which requires structured information nested within the property that requires text.
    1.68 -              </p>
    1.69 -              <p>
    1.70 -                This generates the JSON:
    1.71 -              </p>
    1.72 -              <pre>{
    1.73 -  "type": [ "http://microformats.org/profile/hcalendar#vevent" ],
    1.74 -  "properties": {
    1.75 -    "http://schema.org/type": [ "http://schema.org/Event" ],
    1.76 -    "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
    1.77 -    "http://schema.org/url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
    1.78 -    "summary": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
    1.79 -    "http://schema.org/name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
    1.80 -    "dtstart": [ "2016-04-21T20:00" ],
    1.81 -    "http://schema.org/startDate": [ "2016-04-21T20:00" ],
    1.82 -    "location": [ "\n    \n      \n      Wells Fargo Center\n      \n      \n        Philadelphia,\n        PA\n      \n    \n  " ],
    1.83 -    "http://schema.org/location": [{
    1.84 -      "type": [ "http://schema.org/Place" ],
    1.85 -      "properties": {
    1.86 -        "url": [ "http://example.com/wells-fargo-center.html" ],
    1.87 -        "address": [{
    1.88 -          "type": [ "http://schema.org/PostalAddress" ],
    1.89 -          "properties": {
    1.90 -            "addressLocality": [ "Philadelphia" ],
    1.91 -            "addressRegion": [ "PA" ]
    1.92 -          }
    1.93 -        }]
    1.94 -      }
    1.95 -    }]
    1.96 -  }
    1.97 -}</pre>
    1.98 -              <p>
    1.99 -                The schema.org consumer would ignore the vEvent vocabulary but recognise the use of the <code>http://schema.org/type</code> property, and therefore treat this data in the same way as if the JSON were:
   1.100 -              </p>
   1.101 -              <pre>{
   1.102 -  "type": [ "http://schema.org/Event" ],
   1.103 -  "properties": {
   1.104 -    "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.105 -    "name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.106 -    "startDate": [ "2016-04-21T20:00" ],
   1.107 -    "location": [{
   1.108 -      "type": [ "http://schema.org/Place" ],
   1.109 -      "properties": {
   1.110 -        "url": [ "http://example.com/wells-fargo-center.html" ],
   1.111 -        "address": [{
   1.112 -          "type": [ "http://schema.org/PostalAddress" ],
   1.113 -          "properties": {
   1.114 -            "addressLocality": [ "Philadelphia" ],
   1.115 -            "addressRegion": [ "PA" ]
   1.116 -          }
   1.117 -        }]
   1.118 -      }
   1.119 -    }]
   1.120 -  }
   1.121 -}</pre>
   1.122 -              <p>
   1.123 -                Also note that in this example the <code>http://schema.org/type</code> <a>property</a> is only used where necessary, on the item which needs to be marked as an event in both <a title="vocabulary">vocabularies</a>. Where possible, the schema.org <a>type</a> for an entity is provided explicitly through the <code>@itemtype</code> attribute.
   1.124 -              </p>
   1.125 -              <p>
   1.126 -                This method of mixing <a title="vocabulary">vocabularies</a> requires vocabularies to specify how consumers should recognise items of a particular <a>type</a>. It is recommended that vocabulary authors define an <code>@itemtype</code>-equivalent <a>property</a>, and that, for better integration with RDF tools, this property is <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code>.
   1.127 -              </p>
   1.128 -              <p>
   1.129 -                A particular disadvantage of this approach is that there is no support within the microdata API for retrieving items based on the <a>value</a> of a <a>property</a>. In the example above, it would be possible to retrieve the event using:
   1.130 -              </p>
   1.131 -              <pre>document.getItems('http://microformats.org/profile/hcalendar#vevent')</pre>
   1.132 -              <p>
   1.133 -                but not through:
   1.134 -              </p>
   1.135 -              <pre>document.getItems('http://schema.org/Event')</pre>
   1.136 -              <p>
   1.137 -                Scripts that extract microdata information using the DOM will be faster if they can use the primary <a title="type">types</a> for an item, specified within the <code>@itemtype</code> attribute, so you should specify types accessed through scripts within <code>@itemtype</code> rather than through a <a>property</a>  wherever possible.
   1.138 -              </p>
   1.139 -            </section>
   1.140 -            <section>
   1.141 -              <h6>Mixing Vocabularies using Repeated Content</h6>
   1.142 -              <p>
   1.143 -                The second method of supporting multiple <a title="property">properties</a> is to have the <a>entity</a> represented by two (or more) microdata items on the page. To enable dragging and dropping the data from these items, they should be nested inside each other. Properties can be set on the outer element using <code>link</code> and <code>meta</code> elements which are hidden from users, while the visible content of the page is marked up by the inner element.
   1.144 -              </p>
   1.145 -              <pre>&lt;div itemscope itemtype=&quot;<strong>http://microformats.org/profile/hcalendar#vevent</strong>&quot;&gt;
   1.146 -  <strong>&lt;link itemprop=&quot;url&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.147 -  &lt;meta itemprop=&quot;summary&quot; content=&quot;Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)&quot;&gt;
   1.148 -  &lt;meta itemprop=&quot;dtstart&quot; content=&quot;2016-04-21T20:00&quot;&gt;
   1.149 -  &lt;meta itemprop=&quot;location&quot; content=&quot;Wells Fargo Center, Philadelphia, PA&quot;&gt;</strong>
   1.150 -  &lt;div itemscope itemtype=&quot;<strong>http://schema.org/Event</strong>&quot;&gt;
   1.151 -    &lt;a itemprop=&quot;url&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.152 -    NBA Eastern Conference First Round Playoff Tickets:
   1.153 -    &lt;span itemprop=&quot;name&quot;&gt; Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) &lt;/span&gt;
   1.154 -    &lt;/a&gt;
   1.155 -
   1.156 -    &lt;meta itemprop=&quot;startDate&quot; content=&quot;2016-04-21T20:00&quot;&gt;
   1.157 -      Thu, 04/21/16
   1.158 -      8:00 p.m.
   1.159 -
   1.160 -    &lt;div itemprop=&quot;location&quot; itemscope itemtype=&quot;http://schema.org/Place&quot;&gt;
   1.161 -      &lt;a itemprop=&quot;url&quot; href=&quot;wells-fargo-center.html&quot;&gt;
   1.162 -      Wells Fargo Center
   1.163 -      &lt;/a&gt;
   1.164 -      &lt;div itemprop=&quot;address&quot; itemscope itemtype=&quot;http://schema.org/PostalAddress&quot;&gt;
   1.165 -        &lt;span itemprop=&quot;addressLocality&quot;&gt;Philadelphia&lt;/span&gt;,
   1.166 -        &lt;span itemprop=&quot;addressRegion&quot;&gt;PA&lt;/span&gt;
   1.167 -      &lt;/div&gt;
   1.168 -    &lt;/div&gt;
   1.169 -  &lt;/div&gt;
   1.170 -&lt;/div&gt;</pre>
   1.171 -              <p>
   1.172 -                This generates two items:
   1.173 -              </p>
   1.174 -              <pre>{
   1.175 -  "items": [{
   1.176 -    "type": [ "http://microformats.org/profile/hcalendar#vevent" ],
   1.177 -    "properties": {
   1.178 -      "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.179 -      "summary": [ "Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)" ],
   1.180 -      "dtstart": [ "2016-04-21T20:00" ],
   1.181 -      "location": [ "Wells Fargo Center, Philadelphia, PA" ]
   1.182 -    }
   1.183 -  }, {
   1.184 -    "type": [ "http://schema.org/Event" ],
   1.185 -    "properties": {
   1.186 -      "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.187 -      "name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.188 -      "startDate": [ "2016-04-21T20:00" ],
   1.189 -      "location": [{
   1.190 -        "type": [ "http://schema.org/Place" ],
   1.191 -        "properties": {
   1.192 -          "url": [ "http://example.com/wells-fargo-center.html" ],
   1.193 -          "address": [{
   1.194 -            "type": [ "http://schema.org/PostalAddress" ],
   1.195 -            "properties": {
   1.196 -              "addressLocality": [ "Philadelphia" ],
   1.197 -              "addressRegion": [ "PA" ]
   1.198 -            }
   1.199 -          }]
   1.200 -        }
   1.201 -      }]
   1.202 -    }
   1.203 -  }]
   1.204 -}</pre>
   1.205 -              <p>
   1.206 -                This method does not require any special <a title="property">properties</a> to be defined in the <a title="vocabulary">vocabularies</a> used to mark up the page, and the two items are directly assigned the relevant <a>type</a> and are thus accessible to scripts through the <code>document.getItems()</code> method.
   1.207 -              </p>
   1.208 -              <p>
   1.209 -                The disadvantages of this method are that the page contains more items than there are <a title="entity">entities</a> (in the above example, two items representing the same event), and it requires repetition of data within the page.
   1.210 -              </p>
   1.211 -            </section>
   1.212 +            <p>
   1.213 +              The third option is to repeat the data markup, once in visible content and once in hidden markup (either through <code>link</code> and <code>meta</code> elements or in a section hidden using CSS).
   1.214 +            </p>
   1.215 +            <p>
   1.216 +              These two options are described in detail within <a href="#multiple-types-microdata" class="sectionRef"></a>.
   1.217 +            </p>
   1.218            </section>
   1.219          </section>
   1.220          <section id="mixing-syntaxes">
   1.221 @@ -1228,5 +1039,207 @@
   1.222          Many thanks to the members of the HTML Data Task Force for their contributions to this document.
   1.223        </p>
   1.224      </section>
   1.225 +    
   1.226 +    <section class="appendix" id="multiple-types-microdata">
   1.227 +      <h2>Multiple Item Types in Microdata</h2>
   1.228 +      <p>
   1.229 +        As discussed in <a class="sectionRef" href="#mixing-vocabularies-microdata"></a>, microdata does not support providing multiple <a title="type">types</a> from different <a title="vocabulary">vocabularies</a> to a given item within the <code>@itemtype</code> attribute. There are two work-arounds for this, which are discussed here using the example of targetting both schema.org and use the vEvent vocabulary with the original HTML:
   1.230 +      </p>
   1.231 +      <pre>&lt;a href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.232 +  NBA Eastern Conference First Round Playoff Tickets:
   1.233 +  Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)
   1.234 +&lt;/a&gt;
   1.235 +
   1.236 +Thu, 04/21/16
   1.237 +8:00 p.m.
   1.238 +
   1.239 +&lt;a href=&quot;wells-fargo-center.html&quot;&gt;
   1.240 +  Wells Fargo Center
   1.241 +&lt;/a&gt;
   1.242 +Philadelphia, PA</pre>
   1.243 +      <section>
   1.244 +        <h3>Mixing Vocabularies using a Type Property</h3>
   1.245 +        <p>
   1.246 +          Some <a title="vocabulary">vocabularies</a> may define a <a>property</a> through which <a title="type">types</a> from that vocabulary can be assigned to items that are in a different vocabulary. For example, schema.org could define a <code>http://schema.org/type</code> property. It could say that the value of <code>http://schema.org/type</code> must be the URL for a schema.org type. And further, that if the property <code>http://schema.org/type</code> has the value <code>http://schema.org/Person</code>, say, then the item will be interpreted exactly as if the <code>@itemtype</code> attribute held the value <code>http://schema.org/Person</code>.
   1.247 +        </p>
   1.248 +        <p class="note">
   1.249 +          At time of writing schema.org does not specify a <code><a href="http://schema.org/type" rel="nofollow">http://schema.org/type</a></code> property, and this explanation is hypothetical.
   1.250 +        </p>
   1.251 +        <p>
   1.252 +          When using this technique, the types specified in the <code>@itemtype</code> attribute are the <b>primary types</b> of the item and those specified through the type property are the <b>secondary types</b>.
   1.253 +        </p>
   1.254 +        <p>
   1.255 +          If the schema.org <a>vocabulary</a> also stated that <a>property</a> URLs that begin with <code>http://schema.org/</code> must be treated in the same way as equivalent short-name properties on items with a schema.org type, the schema.org <a>vocabulary</a> could be mixed in with an item marked up using vEvent:
   1.256 +        </p>
   1.257 +        <pre>&lt;div itemscope itemtype=&quot;http://microformats.org/profile/hcalendar#vevent&quot;&gt;
   1.258 +  <strong>&lt;link itemprop=&quot;http://schema.org/type&quot; href=&quot;http://schema.org/Event&quot;&gt;</strong>
   1.259 +  &lt;a itemprop=&quot;url <strong>http://schema.org/url</strong>&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.260 +    NBA Eastern Conference First Round Playoff Tickets:
   1.261 +    &lt;span itemprop=&quot;summary <strong>http://schema.org/name</strong>&quot;&gt; Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) &lt;/span&gt;
   1.262 +  &lt;/a&gt;
   1.263 +
   1.264 +  &lt;meta itemprop=&quot;dtstart <strong>http://schema.org/startDate</strong>&quot; content=&quot;2016-04-21T20:00&quot;&gt;
   1.265 +  Thu, 04/21/16
   1.266 +  8:00 p.m.
   1.267 +
   1.268 +  &lt;div itemprop=&quot;location&quot;&gt;
   1.269 +    <strong>&lt;div itemprop=&quot;http://schema.org/location&quot; itemscope itemtype=&quot;http://schema.org/Place&quot;&gt;
   1.270 +      &lt;a itemprop=&quot;url&quot; href=&quot;wells-fargo-center.html&quot;&gt;
   1.271 +      Wells Fargo Center
   1.272 +      &lt;/a&gt;
   1.273 +      &lt;div itemprop=&quot;address&quot; itemscope itemtype=&quot;http://schema.org/PostalAddress&quot;&gt;
   1.274 +        &lt;span itemprop=&quot;addressLocality&quot;&gt;Philadelphia&lt;/span&gt;,
   1.275 +        &lt;span itemprop=&quot;addressRegion&quot;&gt;PA&lt;/span&gt;
   1.276 +      &lt;/div&gt;
   1.277 +    &lt;/div&gt;</strong>
   1.278 +  &lt;/div&gt;
   1.279 +&lt;/div&gt;</pre>
   1.280 +        <p class="note">
   1.281 +          The vEvent <code>location</code> <a>property</a> takes text while the schema.org <code>location</code> property takes structured information about the location. These are combined by having an element for the property which requires structured information nested within the property that requires text.
   1.282 +        </p>
   1.283 +        <p>
   1.284 +          This generates the JSON:
   1.285 +        </p>
   1.286 +        <pre>{
   1.287 +  "type": [ "http://microformats.org/profile/hcalendar#vevent" ],
   1.288 +  "properties": {
   1.289 +    "http://schema.org/type": [ "http://schema.org/Event" ],
   1.290 +    "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.291 +    "http://schema.org/url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.292 +    "summary": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.293 +    "http://schema.org/name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.294 +    "dtstart": [ "2016-04-21T20:00" ],
   1.295 +    "http://schema.org/startDate": [ "2016-04-21T20:00" ],
   1.296 +    "location": [ "\n    \n      \n      Wells Fargo Center\n      \n      \n        Philadelphia,\n        PA\n      \n    \n  " ],
   1.297 +    "http://schema.org/location": [{
   1.298 +      "type": [ "http://schema.org/Place" ],
   1.299 +      "properties": {
   1.300 +        "url": [ "http://example.com/wells-fargo-center.html" ],
   1.301 +        "address": [{
   1.302 +          "type": [ "http://schema.org/PostalAddress" ],
   1.303 +          "properties": {
   1.304 +            "addressLocality": [ "Philadelphia" ],
   1.305 +            "addressRegion": [ "PA" ]
   1.306 +          }
   1.307 +        }]
   1.308 +      }
   1.309 +    }]
   1.310 +  }
   1.311 +}</pre>
   1.312 +        <p>
   1.313 +          The schema.org consumer would ignore the vEvent vocabulary but recognise the use of the <code>http://schema.org/type</code> property, and therefore treat this data in the same way as if the JSON were:
   1.314 +        </p>
   1.315 +        <pre>{
   1.316 +  "type": [ "http://schema.org/Event" ],
   1.317 +  "properties": {
   1.318 +    "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.319 +    "name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.320 +    "startDate": [ "2016-04-21T20:00" ],
   1.321 +    "location": [{
   1.322 +      "type": [ "http://schema.org/Place" ],
   1.323 +      "properties": {
   1.324 +        "url": [ "http://example.com/wells-fargo-center.html" ],
   1.325 +        "address": [{
   1.326 +          "type": [ "http://schema.org/PostalAddress" ],
   1.327 +          "properties": {
   1.328 +            "addressLocality": [ "Philadelphia" ],
   1.329 +            "addressRegion": [ "PA" ]
   1.330 +          }
   1.331 +        }]
   1.332 +      }
   1.333 +    }]
   1.334 +  }
   1.335 +}</pre>
   1.336 +        <p>
   1.337 +          Also note that in this example the <code>http://schema.org/type</code> <a>property</a> is only used where necessary, on the item which needs to be marked as an event in both <a title="vocabulary">vocabularies</a>. Where possible, the schema.org <a>type</a> for an entity is provided explicitly through the <code>@itemtype</code> attribute.
   1.338 +        </p>
   1.339 +        <p>
   1.340 +          This method of mixing <a title="vocabulary">vocabularies</a> requires vocabularies to specify how consumers should recognise items of a particular <a>type</a>. It is recommended that vocabulary authors define an <code>@itemtype</code>-equivalent <a>property</a>, and that, for better integration with RDF tools, this property is <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code>.
   1.341 +        </p>
   1.342 +        <p>
   1.343 +          A particular disadvantage of this approach is that there is no support within the microdata API for retrieving items based on the <a>value</a> of a <a>property</a>. In the example above, it would be possible to retrieve the event using:
   1.344 +        </p>
   1.345 +        <pre>document.getItems('http://microformats.org/profile/hcalendar#vevent')</pre>
   1.346 +        <p>
   1.347 +          but not through:
   1.348 +        </p>
   1.349 +        <pre>document.getItems('http://schema.org/Event')</pre>
   1.350 +        <p>
   1.351 +          Scripts that extract microdata information using the DOM will be faster if they can use the primary <a title="type">types</a> for an item, specified within the <code>@itemtype</code> attribute, so you should specify types accessed through scripts within <code>@itemtype</code> rather than through a <a>property</a>  wherever possible.
   1.352 +        </p>
   1.353 +      </section>
   1.354 +      <section>
   1.355 +        <h3>Mixing Vocabularies using Repeated Content</h3>
   1.356 +        <p>
   1.357 +          The second method of supporting multiple <a title="property">properties</a> is to have the <a>entity</a> represented by two (or more) microdata items on the page. To enable dragging and dropping the data from these items, they should be nested inside each other. Properties can be set on the outer element using <code>link</code> and <code>meta</code> elements which are hidden from users, while the visible content of the page is marked up by the inner element.
   1.358 +        </p>
   1.359 +        <pre>&lt;div itemscope itemtype=&quot;<strong>http://microformats.org/profile/hcalendar#vevent</strong>&quot;&gt;
   1.360 +  <strong>&lt;link itemprop=&quot;url&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.361 +  &lt;meta itemprop=&quot;summary&quot; content=&quot;Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)&quot;&gt;
   1.362 +  &lt;meta itemprop=&quot;dtstart&quot; content=&quot;2016-04-21T20:00&quot;&gt;
   1.363 +  &lt;meta itemprop=&quot;location&quot; content=&quot;Wells Fargo Center, Philadelphia, PA&quot;&gt;</strong>
   1.364 +  &lt;div itemscope itemtype=&quot;<strong>http://schema.org/Event</strong>&quot;&gt;
   1.365 +    &lt;a itemprop=&quot;url&quot; href=&quot;nba-miami-philadelphia-game3.html&quot;&gt;
   1.366 +      NBA Eastern Conference First Round Playoff Tickets:
   1.367 +      &lt;span itemprop=&quot;name&quot;&gt; Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) &lt;/span&gt;
   1.368 +    &lt;/a&gt;
   1.369 +
   1.370 +    &lt;meta itemprop=&quot;startDate&quot; content=&quot;2016-04-21T20:00&quot;&gt;
   1.371 +    Thu, 04/21/16
   1.372 +    8:00 p.m.
   1.373 +
   1.374 +    &lt;div itemprop=&quot;location&quot; itemscope itemtype=&quot;http://schema.org/Place&quot;&gt;
   1.375 +      &lt;a itemprop=&quot;url&quot; href=&quot;wells-fargo-center.html&quot;&gt;
   1.376 +      Wells Fargo Center
   1.377 +      &lt;/a&gt;
   1.378 +      &lt;div itemprop=&quot;address&quot; itemscope itemtype=&quot;http://schema.org/PostalAddress&quot;&gt;
   1.379 +        &lt;span itemprop=&quot;addressLocality&quot;&gt;Philadelphia&lt;/span&gt;,
   1.380 +        &lt;span itemprop=&quot;addressRegion&quot;&gt;PA&lt;/span&gt;
   1.381 +      &lt;/div&gt;
   1.382 +    &lt;/div&gt;
   1.383 +  &lt;/div&gt;
   1.384 +&lt;/div&gt;</pre>
   1.385 +        <p>
   1.386 +          This generates two items:
   1.387 +        </p>
   1.388 +        <pre>{
   1.389 +  "items": [{
   1.390 +    "type": [ "http://microformats.org/profile/hcalendar#vevent" ],
   1.391 +    "properties": {
   1.392 +      "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.393 +      "summary": [ "Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1)" ],
   1.394 +      "dtstart": [ "2016-04-21T20:00" ],
   1.395 +      "location": [ "Wells Fargo Center, Philadelphia, PA" ]
   1.396 +    }
   1.397 +  }, {
   1.398 +    "type": [ "http://schema.org/Event" ],
   1.399 +    "properties": {
   1.400 +      "url": [ "http://example.com/nba-miami-philadelphia-game3.html" ],
   1.401 +      "name": [ " Miami Heat at Philadelphia 76ers - Game 3 (Home Game 1) " ],
   1.402 +      "startDate": [ "2016-04-21T20:00" ],
   1.403 +      "location": [{
   1.404 +        "type": [ "http://schema.org/Place" ],
   1.405 +        "properties": {
   1.406 +          "url": [ "http://example.com/wells-fargo-center.html" ],
   1.407 +          "address": [{
   1.408 +            "type": [ "http://schema.org/PostalAddress" ],
   1.409 +            "properties": {
   1.410 +              "addressLocality": [ "Philadelphia" ],
   1.411 +              "addressRegion": [ "PA" ]
   1.412 +            }
   1.413 +          }]
   1.414 +        }
   1.415 +      }]
   1.416 +    }
   1.417 +  }]
   1.418 +}</pre>
   1.419 +        <p>
   1.420 +          This method does not require any special <a title="property">properties</a> to be defined in the <a title="vocabulary">vocabularies</a> used to mark up the page, and the two items are directly assigned the relevant <a>type</a> and are thus accessible to scripts through the <code>document.getItems()</code> method.
   1.421 +        </p>
   1.422 +        <p>
   1.423 +          The disadvantages of this method are that the page contains more items than there are <a title="entity">entities</a> (in the above example, two items representing the same event), and it requires repetition of data within the page.
   1.424 +        </p>
   1.425 +      </section>
   1.426 +    </section>
   1.427    </body>
   1.428  </html>