ブログに構造化データを導入する。使うのは流行りの microdata ではなく,RDFa 1.1 にする。
久しぶりに Google のウェブマスター ツールを開いて,「検索のデザイン」→「構造化データ」とたどると,次のメッセージが表示された。
このサイトでは構造化データが見つかりません
そんなバカな! うちのサイトは,RDFa 1.1 を使ってメタ情報を埋め込んでいるのに (nlog(n): OGP 対応と XHTML+RDFa 1.1 への移行)。なのにどうして?
と思って調べてみると,Google の言う「構造化データ」というのは,単にメタデータを含んでいるということではなく,「HTML の構造の中に組み込まれたメタデータ」という意味だった。簡単に言うと,これまでは HTML のコメント内に書いていたメタデータを,コメントの外に,タグのプロパティとして出してしまうということである。「メタデータをコメントの外に出していく」これで構造化できる。
Google でサポートしているマークアップの形式は,microdata, microformats, RDFa の3つで,microdata が推奨とされていて (リッチ スニペットと構造化データについて - ウェブマスター ツール ヘルプ),例も microdata を使ったものがメインである (構造化データ マークアップ支援ツール - ウェブマスター ツール ヘルプ)。Microdata は HTML5 であることを前提としているみたい (HTML Microdata)。
しかし,このサイトは XHTML だし RDFa なので,せっかくだから RDFa でマークアップすることにした。インターネットで検索すると見事に microdata の情報ばかりだが,読み替えることで RDFa に適用することができる。RDFa Lite の情報も多い。RDFa Lite は RDFa のサブセットなので,基本的には RDFa Lite にしたがってよく,一部ははみ出してもよいということになる。RDFa Lite でマークアップするための丁寧な解説が RDFa 1.1 Lite を使用して HTML ページをリッチな情報が含まれたページにする にある。Microdata, microformats, RDFa の,ここで使いたい限定的な機能については,読み替えることが可能で,MicrodataとMicroformatsとRDFaとschema.org | すちゃらかコーダー に概要がまとまっていて分かりやすい。最終的には RDFa Core 1.1 - Second Edition で確認する。
メタデータのプロパティは Schemas - schema.org に従うことにする。ブログに関係しそうなものは2つある。Thing > CreativeWork > Blog をサイトに対して適用し,個別記事には Thing > CreativeWork > Article > BlogPosting を適用すればいいのではないかと思われる。
BlogPosting は Article に含まれるので,Article の形式に従えばよく,実例が Article - getSchema にあるので参考に。このブログでは,Movable Type を使っているので,テンプレートを書き換えることになる。個別記事用のテンプレートの構造化前後の対応は以下の通り。
項目 | 構造化前 | 構造化後 |
タイプ | <body> | <body vocab="http://schema.org/" typeof="Article"> |
タイトル | <$MTEntryTitle$> | <span property="name"><$MTEntryTitle$></span> |
記事本文 | <div class="blogbody"> | <div class="blogbody" property="articleBody"> |
著者 | <$MTEntryAuthor$> | <span property="author"> <span typeof="Person"> <span property="name"><$MTEntryAuthor$></span> </span> </span> |
投稿日時 | <$MTEntryDate format="%Y-%m-%d %H:%M"$> | <span property="datePublished"><$MTEntryDate format="%Y-%m-%d %H:%M"$></span> |
注意が必要なのは「著者」の項目である。著者名は property="name" で指定するが,property="name" は「タイトル」にも使われているので,何の name かを明らかにするために,「author → Person → name」とする必要がある。
プロパティ publishedDate が「投稿日」でなく「投稿日時」で時間が入ってしまっていて,このブログではよしとしているが,気になる場合には修正を。
Microdata の場合も似た感じになるようだ (ブログのHTMLをmicrodata(schema.org)を使って構造化する | HALAWATA.NET)。
ブログに構造化データを入れた。Google ウェブマスターツールに反映されるのには時間がかかるので,1週間ほど待つ必要がある。
2014年2月8日追記:
ウェブマスターツールには徐々に反映されるようです (上のグラフ参照)。
Master Archive Index
Total Entry Count: 1957