微数据
===

概要
--

微数据是 WHATWG HTML 标准的一部分，用于在网页上的现有内容中嵌套元数据。搜索引擎、网络抓取工具可以从网页中提取和处理微数据，并使用它为用户提供更丰富的浏览体验。搜索引擎从直接访问此结构化数据中受益匪浅，因为它允许搜索引擎了解网页上的信息并向用户提供更相关的结果。微数据使用支持词汇表来描述项目和 name-value 对，以便为其属性赋值。与使用 RDFa 和微格式的类似方法相比，微数据试图提供一种使用机器可读标签注释 HTML 元素的简单方法。

从更高的角度来看，微数据由一组 name-value 对组成。这些组称为元素，每个 name-value 对都是一个属性。项目和属性由常规元素表示。

* 创建元素使用了 `itemscope` 属性。
* 向元素添加属性，`itemprop` 属性将用于其中一个元素的后代。
词汇表
---

谷歌和其他主要搜索引擎支持结构化数据的 Schema.org 词汇表。此词汇表定义了一组标准类型名称和属性名称，例如，Schema.org Music Event 表示音乐会表演，`startDate` 和 `location` 属性用于指定音乐会的关键细节。在这种情况下，Schema.org Music Event 将是 `itemtype` 和 `startDate` 使用的 URL，而 `location` 将是 Schema.org Music Event 定义的 `itemprop`。

**备注：** 有关 itemtype 属性的更多信息，请访问 https://schema.org/Thing。

微数据词汇表提供了 *`Item`* 的语义或含义。Web 开发人员可以设计自定义词汇表或使用 Web 上可用的词汇表，例如广泛使用的 schema.org 词汇表。Schema.org 提供了一组常用的标记词汇表。

常用词汇：

* 创造性工作：CreativeWork、Book、Movie、MusicRecording、Recipe、TVSeries
* 嵌入性非文字对象：AudioObject、ImageObject、VideoObject
* `Event`
* Health and medical types：注意健康和医疗类型在 MedicalEntity 之下
* `Organization`
* `Person`
* `Place`、LocalBusiness、Restaurant
* `Product`、Offer、AggregateOffer
* `Review`、AggregateRating
* `Action`
* `Thing`
* `Intangible`

谷歌，微软和雅虎等主要搜索引擎运营商依靠 schema.org 词汇表来改进搜索结果。实现一般目标，临时词汇就足够了。对于其他情况，可能需要设计一个词汇表。在可能的情况下，鼓励作者重用现有的词汇表，因为这样可以更轻松地重复使用内容。

本地化
---

在某些情况下，覆盖特定区域的搜索引擎可以提供微数据的本地特定扩展。例如，俄罗斯的主要搜索引擎 Yandex 支持如 `hCard`（公司联系信息）、`hRecipe`（食品配方）、`hReview`（市场评论）和 `hProduct`（产品数据）的微格式，并提供自己的格式来定义术语和百科全书文章。这个扩展是为了解决西里尔字母和拉丁字母之间的音译问题。由于 Schema 词汇表的附加标记参数的实现，俄语网页中的信息索引变得更加成功。

全局属性
----

`itemid`——元素的唯一全局标识符。

`itemprop`——用于向元素添加属性。每个 HTML 元素都可以指定一个 `itemprop` 属性，其中 `itemprop` 由一个名称和值对组成。

`itemref`——不具有 `itemscope` 属性的元素的后代的属性可以使用 **itemref** 与元素相关联。`itemref` 提供了元素 id 列表（而不是一些 `itemid`）以及文档中其他位置的其他属性。

`itemscope`——`itemscope`（通常）与 `itemtype` 一起使用，以指定块中包含的 HTML 是一个特定元素。`itemscope` 创建 *`Item`* 并定义与之关联的 itemtype 的范围。`itemtype` 是描述项及其属性上下文的词汇表（例如 schema.org）的有效 URL。

`itemtype`——指定将用于在数据结构中定义 `itemprop`（元素属性）的词汇表的 URL。`itemscope` 用于设置数据结构中按 `itemtype` 设置的词汇表的有效范围。

示例
--

### HTML


```html
<div itemscope itemtype="https://schema.org/SoftwareApplication">
  <span itemprop="name">Angry Birds</span> - REQUIRES
  <span itemprop="operatingSystem">ANDROID</span><br />
  <link
 itemprop="applicationCategory"
 href="https://schema.org/GameApplication" />

  <div
 itemprop="aggregateRating"
 itemscope
 itemtype="https://schema.org/AggregateRating">
    RATING:
    <span itemprop="ratingValue">4.6</span> (
    <span itemprop="ratingCount">8864</span> ratings )
  </div>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
    Price: $<span itemprop="price">1.00</span>
    <meta itemprop="priceCurrency" content="USD" />
  </div>
</div>
```

### 结构化数据

|  |  |  |
| --- | --- | --- |
| itemscope | itemtype | SoftwareApplication (https://schema.org/SoftwareApplication) |
| itemprop | name | Angry Birds |
| itemprop | operatingSystem | ANDROID |
| itemprop | applicationCategory | GameApplication (https://schema.org/GameApplication) |
| itemscope | itemprop[itemtype] | aggregateRating [AggregateRating] |
| itemprop | ratingValue | 4.6 |
| itemprop | ratingCount | 8864 |
| itemscope | itemprop[itemtype] | offers [Offer] |
| itemprop | price | 1.00 |
| itemprop | priceCurrency | USD |

### 结果

**备注：** 从 HTML 中提取微数据结构的便捷工具是 Google 的架构标记测试工具。在上面显示的 HTML 上尝试一下。

浏览器兼容性
------

在 Firefox 16 中支持，在 Firefox 49 中移除。

参见
--

* 全局属性