HTML5

マイクロデータ

  編集:2022.04.24 by T.A.

概要

この節は非規範的である。

ときには、特定の機械可読なラベル付き内容に注釈を付けることが望ましい。たとえば、ページに合わせてカスタマイズされる一般的なスクリプトを可能にするため、または一貫した方法で単一のスクリプトで処理されることをさまざまな協力する著者由来の内容を可能にするため、など。

この目的に対して、著者は、この章で説明される microdata の機能を使用することができる。Microdata は、既存のコンテンツ(内容)と並行して、名前と値のペアのネストされたグループを文書に追加することを可能にする。

基本構文

この節は非規範的である。

高いレベルで、microdata は名前と値のペアのグループで構成される。グループはアイテムと呼ばれ、それぞれの名前‐値のペアはプロパティとなる。アイテムおよびプロパティは、通常の要素によって表される。

アイテムを作成するために、itemscope 属性が使用される。

アイテムにプロパティを追加するために、itemprop 属性がアイテムの子孫のいずれかで使用される。

ここでは、プロパティ"name"をそれぞれ持つ、2つの項目がある:
<DIV itemscope>
 <P>My name is <SPAN itemprop="name">Elizabeth</SPAN>.</P>
</DIV>

<DIV itemscope>
 <P>My name is <SPAN itemprop="name">Daniel</SPAN>.</P>
</DIV>

microdata 関連の属性なしのマークアップは、microdata モデルには影響しない。

次の2つの例は、前の2つの例とそれぞれ、microdataレベルで厳密に等価である:
<DIV itemscope>
 <P>My <EM>name</EM> is <SPAN itemprop="name">E<STRONG>liz</STRONG>abeth</SPAN>.</P>
</DIV>

<SECTION>
 <DIV itemscope>
  <ASIDE>
   <P>My name is <SPAN itemprop="name"><A href="/?user=daniel">Daniel</A></SPAN>.</P>
  </ASIDE>
 </DIV>
</SECTION>

プロパティは一般に、文字列である値を持つ。

ここではアイテムが3つのプロパティを持つ:
<DIV itemscope>
 <P>My name is <SPAN itemprop="name">Neil</SPAN>.</P>
 <P>My band is called <SPAN itemprop="band">Four Parts Water</SPAN>.</P>
 <P>I am <SPAN itemprop="nationality">British</SPAN>.</P>
</DIV>

文字列値が URL である場合、その値は A 要素およびその href 属性、IMG 要素およびその src 属性または、リンクまたは埋め込み外部リソースへの他の要素を使用して表現される。

この例においてアイテムは、値が URL である、1 つのプロパティ "image" を持つ:
<DIV itemscope>
 <IMG itemprop="image" src="google-logo.png" alt="Google">
</DIV>

文字列値が人間の消費に適さない何らかの機械読み取り可能な形式である場合、要素の内容で与えられる人間可読なバージョンとともに、DATA 要素の value 属性を使用して表現される。

ここでは、値プロダクト ID であるプロパティを持つアイテムがある。ID は人に優しくないので、製品名が ID の代わりに人間可視のテキストを使用する。
<H1 itemscope>
 <DATA itemprop="product-id" value="9678AOU879">The Instigator 2000</DATA>
</H1>

数値データに関して、METER 要素とその value 属性を代わりに使用することができる。

ここでは、評価が METER 要素を用いて与えられる。
<DIV itemscope itemtype="http://schema.org/Product">
 <SPAN itemprop="name">Panasonic White 60L Refrigerator</SPAN>
 <IMG src="panasonic-fridge-60l-white.jpg" alt="">
  <DIV itemprop="aggregateRating"
       itemscope itemtype="http://schema.org/AggregateRating">
   <METER itemprop="ratingValue" min=0 value=3.5 max=5>Rated 3.5/5</METER>
   (based on <SPAN itemprop="reviewCount">11</SPAN> customer reviews)
  </DIV>
</DIV>

同様に、日付および時刻関連データのために、TIME 要素とその datetime 属性を代わりに使用することができる。

この例において、アイテムは、値が日付である 1 つのプロパティ "birthday" を持つ:
<DIV itemscope>
 I was born on <TIME itemprop="birthday" datetime="2009-05-10">May 10th 2009</TIME>.
</DIV>

プロパティはまた、プロパティを宣言する要素に itemscope 属性を置くことで、自身を名前‐値ペアのグループとすることができる。

他の一部ではないアイテムは、トップレベル microdata アイテムと呼ばれる。

この例において、外側のアイテムは人であり、内側のアイテムはバンドを表す:
<DIV itemscope>
 <P>Name: <SPAN itemprop="name">Amanda</SPAN></P>
 <P>Band: <SPAN itemprop="band" itemscope> <SPAN itemprop="name">Jazz Band</SPAN> (<SPAN itemprop="size">12</SPAN> players)</SPAN></P>
</DIV>

ここで外側のアイテムは、2つのプロパティ "name" と "band" を持つ。"name" は "Amanda" であり、"band" は、2つのプロパティ "name" と "size" で、それ自体でアイテムである。バンドの "name" は "Jazz Band" であり、"size" は "12" である。

この例において外側のアイテムは、トップレベルの microdata アイテムである。

itemscope 属性をもつ要素の子孫ではないプロパティは、itemref 属性を使用するアイテムに関連付けることができる。この属性は、itemscope 属性をもつ要素の子をクロールすることに加えて、クロールする要素の ID のリストを取る。

この例は前のものと同じであるが、すべてのプロパティは、プロパティのアイテムから分離される:
<DIV itemscope id="amanda" itemref="a b"></DIV>
<P id="a">Name: <SPAN itemprop="name">Amanda</SPAN></P>
<DIV id="b" itemprop="band" itemscope itemref="c"></DIV>
<DIV id="c">
 <P>Band: <SPAN itemprop="name">Jazz Band</SPAN></P>
 <P>Size: <SPAN itemprop="size">12</SPAN> players</P>
</DIV>

これは、前の例と同じ結果になる。最初のアイテムは "name" に "Amanda" を設定され、もう 1 つのアイテムに "band" を設定される 2 つのプロパティを持つ。2 番目のアイテムはさらに、"Jazz Band" に設定される "name" 、および "12" に設定される "size" の 2 つのプロパティを持つ。

アイテムは、同じ名前と異なる値をもつ複数のプロパティを持つことができる。

この例は、2 つのフレーバーでアイスクリームを記述する:
<DIV itemscope>
 <P>Flavors in my favorite ice cream:</P>
 <UL>
  <LI itemprop="flavor">Lemon sorbet</LI>
  <LI itemprop="flavor">Apricot sorbet</LI>
 </UL>
</DIV>

よってこれは、2 つのプロパティ値 "Lemon sorbet" と "Apricot sorbet" と両方の "flavor" を持つアイテムとなる。

プロパティを導入する要素はまた、プロパティの一部が同じ値を持つ場合に重複を避けるため、一度に複数のプロパティを導入することができる。

ここでは、2つのプロパティ "favorite-color" と "favorite-fruit" の両方が値 "orange" に設定されるアイテムを示す:
<DIV itemscope>
 <SPAN itemprop="favorite-color favorite-fruit">orange</SPAN>
</DIV>

microdata と microdata がマークアップされる文書の内容との間に関係がないことに注意することが重要である。

たとえば、次の2つの例の間に、セマンティックな違いはない:
<FIGURE>
 <IMG src="castle.jpeg">
 <FIGCAPTION><SPAN itemscope><SPAN itemprop="name">The Castle</SPAN></SPAN> (1986)</FIGCAPTION>
</FIGURE>
<SPAN itemscope><META itemprop="name" content="The Castle"></SPAN>
<FIGURE>
 <IMG src="castle.jpeg">
 <FIGCAPTION>The Castle (1986)</FIGCAPTION>
</FIGURE>

両者はキャプションをもつ図を持ち、図とは全く無関係な、名前 "name" と値 "The Castle" の名前と値のペアをもつアイテムを持つ。唯一の違いは、前者の場合に、ユーザーが文書からキャプションをドラッグする場合、アイテムはドラッグ アンド ドロップ データに含まれることである。いずれの場合も、アイテムに関連付けられる任意の方法で画像ではない。

型付きアイテム

この節は非規範的である。

前節の例は、microdata を再使用することを期待しないページに情報がマークアップすることができる方法を示している。しかし、他の著者および読者がマークアップの新たな用途を作るために協力することができる場合にコンテキストで使用されるとき、Microdataは 最も有用である。

この目的のために、"https://example.com/person" や "https://example.org/cat" や "https://band.example.net/" のように、各アイテムに型を与える必要がある。型は、URL として識別される。

アイテムの型は、itemscope 属性と同じ要素上の itemtype 属性の値として指定される。

ここでは、アイテムの型は "https://example.org/animals#cat" である:
<SECTION itemscope itemtype="https://example.org/animals#cat">
 <H1 itemprop="name">Hedral</H1>
 <P itemprop="desc">Hedral is a male american domestic
 shorthair, with a fluffy black fur with white paws and belly.</P>
 <IMG itemprop="img" src="hedral.jpeg" alt="" title="Hedral, age 18 months">
</SECTION>

この例において、"https://example.org/animals#cat" のアイテムは、"name" ("Hedral")、"desc" ("Hedral is...")、および"img" ("hedral.jpeg")の3つのプロパティを持つ。

型は、このように語彙を選択して、プロパティのコンテキストを与える:型 "https://census.example/person" をもつアイテムのために与えられた "class" という名前のプロパティは、個々の経済クラスを参照するかもしれない一方で、型 "https://example.com/school/teacher" をもつアイテムのために与えられた "class" という名前のプロパティは、教師が割り当てられている教室を参照するかもしれない。

複数の型が語彙を共有することができる。たとえば、型 "https://example.org/people/teacher" および "https://example.org/people/engineer" は、(おそらくいくつかのプロパティはいずれの場合においても特に有用ではないだろう。たとえば、おそらく "https://example.org/people/engineer" 型は典型的に "classroom" プロパティで使用されないかもしれないが、)同じ語彙を使用するように定義することができる。同じ語彙を使用するように定義される複数の型は、属性の値で空白区切りのリストとしてURLをリスト化することによって 1 つのアイテムに付与することができる。しかし、URL が同じ語彙を使用しない場合、アイテムは 2 つの型を指定することはできない。

アイテムのためのグローバル識別子

この節は非規範的である。

時には、アイテムはグローバル識別子を持つトピックについての情報を与える。たとえば、本はその ISBN 番号によって識別することができる。

( itemtype 属性によって識別されるような)語彙は、アイテムが itemid 属性で指定される URL としてグローバル識別子を表現することによって明白な方法でアイテムのグローバル識別子に関連付けられるように設計することができる。

itemid 属性で指定される URL の正確な意味は、使用される語彙に依存する。

ここでアイテムは、特定の本について話している:
<DL itemscope
    itemtype="https://vocab.example.net/book"
    itemid="urn:isbn:0-330-34032-8">
 <DT>Title
 <DD itemprop="title">The Reality Dysfunction
 <DT>Author
 <DD itemprop="author">Peter F. Hamilton
 <DT>Publication date
 <DD><TIME itemprop="pubdate" datetime="1996-01-26">26 January 1996</TIME>
</DL>

この例において "https://vocab.example.net/book" 語彙は、itemid 属性が本の ISBN を指す urn: URL を取ることを定義する。

語彙を定義するときに名前を選択する

この節は非規範的である。

microdata を使用することは、語彙を使用することを意味する。いくつかの目的のために、アドホックな語彙が適切である。他の場合に、語彙を設計する必要がある。可能であれば、内容(コンテンツ)を簡単に再利用するように、著者は既存の語彙を再利用することを勧める。

新しい語彙を設計する場合、識別子は、プロパティに、URL を使用するか、(ドットやコロンなしで)プレーンな単語としてのいずれかで作成することができる。URL の場合、他の語彙との競合は、著者が制御しているページに対応する識別子を使用することによってのみ回避することができる。

たとえば、Jon と Adam の両者がそれぞれ https://example.com/~jon/... と https://example.com/~adam/... のように example.com で内容を記述する場合、彼らはそれぞれ形式 "https://example.com/~jon/name" と "https://example.com/~adam/name" の識別子を選択することができる。

名前が単にプレーンな単語であるプロパティは、プロパティが意図する型のコンテキスト内でのみ使用することができる。URL を使用する名前付きプロパティは、任意のタイプのアイテムで再利用することができる。アイテムが型を持たず、かつ他のアイテムの一部ではない場合、そしてそのプロパティが単にプレーンな名前を持つ場合、プロパティはグローバルに一意であることが意図されず、代わりに限定された用途のためのみに意図される。一般的に言えば、著者は、グローバルに一意な名前(URL)をもつプロパティ使用するか、プロパティのアイテムが型付けされていることを確認かのいずれかを勧める。

ここで、アイテムは "https://example.org/animals#cat" であり、プロパティのほとんどは、その型のコンテキストで定義される単語である名前を持つ。名前が他のボキャブラリに由来するいくつかの追加のプロパティもある。
<SECTION itemscope itemtype="https://example.org/animals#cat">
 <H1 itemprop="name https://example.com/fn">Hedral</H1>
 <P itemprop="desc">Hedral is a male American domestic
 shorthair, with a fluffy <SPAN
 itemprop="https://example.com/color">black</SPAN> fur with <SPAN
 itemprop="https://example.com/color">white</SPAN> paws and belly.</P>
 <IMG itemprop="img" src="hedral.jpeg" alt="" title="Hedral, age 18 months">
</SECTION>

この例は、型 "https://example.org/animals#cat" をもつ 1 つのアイテムと次のプロパティを持つ:

プロパティ
name Hedral
https://example.com/fn Hedral
desc Hedral is a male American domestic shorthair, with a fluffy black fur with white paws and belly.
https://example.com/color black
https://example.com/color white
img .../hedral.jpeg

microdataをエンコーディングする

microdataモデル

microdata モデルはアイテムとして知られる名前‐値ペアのグループで構成される。

各グループは、アイテムとして知られる。各アイテムは、アイテム型グローバル識別子(アイテム型によって指定される語彙がアイテムのグローバル識別子をサポートする場合)、および名前‐値ペアのリストを持つことができる。名前‐値ペアのそれぞれの名前は、プロパティとして知られており、各プロパティは、1 つ以上のを持つ。それぞれの値は、文字列または自身の名前-値ペアのグループ(アイテム)のいずれかである。名前は互いに順不同の関係であるが、特定の名前が複数の値を持つ場合、名前は相対的な順序を持つ。

アイテム

すべての HTML 要素は、itemscope 属性を指定させてもよい。itemscope 属性は真偽属性である。

指定された itemscope 属性をもつ要素は、名前‐値ペアのグループとなる新しいアイテムを作成する。

itemscope 属性をもつ要素は、アイテムのアイテム型を与えるために、itemtype 属性を指定させてもよい。

itemtype 属性が指定される場合、順不同の一意な空白区切りトークンの集合 である値を持たなければならない。これは、別のトークンと同一でなく、それぞれが絶対URL妥当なURL文字列であり、かつこれらのすべては同じ語彙を使用するよう定義される。属性の値は、少なくとも 1 つのトークンを持たなければならない。

アイテムのアイテム型は、ASCII 空白文字で要素の itemtype 属性の値を分割することで得られるトークンである。itemtype 属性が欠損しているまたは解析によりこの方法でトークンが見つからない場合、アイテムはアイテム型を持たないと言われる。

アイテム型は、すべて適用可能な仕様で定義される型でなければならず、すべて同じ語彙を使用するように定義されなければならない。

そうでなければその仕様で指定される場合を除き、アイテム型として指定されるURLは自動的にデリファレンスされるべきでない。

注釈: たとえば、仕様は、アイテム型がヘルプ情報をユーザーに提供するためにデリファレンスできることを定義するかもしれない。実際に語彙著者は、指定されるURLで有用な情報を提供することが奨励される。

アイテム型が不透明な識別子であり、どのようにそのアイテム型を使用するアイテムを処理するかを決定するために、ユーザー エージェントは未知のアイテム型をデリファレンスしてはならない、または別の方法でそのアイテム型を分解してはならない。

itemtype 属性は、itemscope 属性を指定されない要素で指定してはならない。

アイテムは、アイテムがアイテム型を持つ、またはアイテムが型付きアイテムのプロパティの値であるかのいずれかの場合、型付きアイテムであると言われる。型付きアイテムの関連型は、アイテムがいずれかを持つ場合に、アイテムのアイテム型であり、そうでなければ、アイテムはプロパティの値に対してアイテムの関連型である。

アイテムがウェブ上の他の場所でページ上の他のアイテムに関連することができるように、アイテムのグローバル識別子をサポートするために定義される語彙を参照する itemscope 属性および itemtype 属性をもつ要素はまた、アイテムのグローバル識別子を与えるために、itemid 属性も指定されてもよい。

itemid 属性が指定される場合、潜在的にスペースで囲まれた妥当な URLである値を持たなければならない。

アイテムグローバル識別子を持つ場合、アイテムのグローバル識別子は、属性が指定される要素のノード文書に関連して解析される、その要素の itemid 属性の値である。itemid 属性が欠損する場合または、解決が失敗する場合、グローバル識別子を持たないと言われる。

itemid 属性は、itemscope 属性と指定された itemtype 属性の両方を持たない要素で指定してはならず、その語彙の仕様で定義されるように、itemtype 属性がアイテムのグローバル識別子をサポートしない語彙を指定する itemscope 属性をもつ要素に指定してはならない。

グローバル識別子の正確な意味は、語彙の仕様によって決定される。(同じページ上にせよ異なるページ上にせよ)同一のグローバル識別子をもつ複数のアイテムが存在するために許可されるかどうかを定義するかどうかはそのような仕様次第であり、その語彙に対する処理規則は、同じ ID をもつ複数のアイテムの扱うケースに対するものである。

itemscope 属性をもつ要素は、アイテムの名前‐値ペアを見つけるためにクロールするための追加の要素のリストを与えるために、itemref 属性を指定されてもよい。

itemref 属性は、指定される場合、同じツリー内の要素の ID からなる、別のトークンと同一でない順不同の一意な空白区切りトークンの集合である値を持たなければならない。

itemref 属性は、itemscope 属性に指定されない要素で指定してはならない。

注釈: itemref属性は、microdata データモデルの一部ではない。この属性は、注釈付けするデータが便利なツリー構造に従わないページに注釈を追加することで著者を支援するための単なる構文構造に過ぎない。この属性は、たとえば、セル内のプロパティを維持しながら、各列が個別のアイテムを定義するために、テーブルにおけるデータをマークアップすることを著者に可能にする。

¶省く

サンプルmicrodata語彙

vCard