「SunIndustries」などの組織のWebサイトで、従業員のリストを追加したいと考えています。組織の住所と連絡先情報はすでにWebページにありますが、従業員のリストは別の場所にあります。
だから私たちは持っています
<div id="organization" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
後でHTML5コードで
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
次の子を「employee-1」オブジェクトに追加しようとしました
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
しかし、それは機能しませんでした(少なくともGoogleの構造化データテストツールでは機能しませんでした)。
itemref
を正しく使用するにはどうすればよいですか?明確にするために、私は次のことも試しました。
itemprop="worksFor"
を追加します。itemref="organization"
を追加します。そう
<div id="organization" itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
...
</div>
...
<div id="employee-1" itemscope itemtype="http://schema.org/Person" itemref="organization">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
しかし、それは私に「組織」オブジェクトのWarning: Page contains property "worksfor" which is not part of the schema.
を与えました。
実際、最後のコードスニペットは問題ないように見えます。たぶん Yandex Validator 出力はより明確になります
person
itemType = http://schema.org/Person
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
name = John Doe
jobtitle = Sales Manager
他のいくつかの実用的な例。
<body>
<div id="organization" itemscope itemtype="http://schema.org/Organization" itemref="employee-1">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
<div id="employee-1" itemprop="employee" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
</body>
次のようになります。
organization
itemType = http://schema.org/Organization
employee
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
またはこれ
<body>
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
</div>
<div id="organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
</body>
その結果、
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
仕様はitemrefの使用についてあまり明確ではありませんが、例は役に立ちます
<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>
あなたの最後の例は正しいです。
(Googleのテストツールで上記のエラーが発生しなくなりました。当時は、Schema.orgの語彙に新たに追加された最新のものではなかった可能性があります。)
itemref
仕様へのリンク:
tl; dr:
itemref
を使用)にitemscope
を指定します。id
を使用して)itemprop
を指定します。最小限の例:
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="org">
<!-- this property (worksFor) gets added to the Person item below -->
</div>
<div itemscope itemtype="http://schema.org/Person" itemref="org">
<!-- looks for the element with the ID "org" -->
</div>
これは次と同等です。
<div itemscope itemtype="http://schema.org/Person">
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
</div>
</div>
その他の例:
meta
からhead
要素を追加body
要素で指定されたプロパティをそのbody
の子である要素に追加するEvent
をAction
に追加name
プロパティを追加するOffer
の代わりにProduct
アイテムの子であるプロパティを親のOffer
アイテムに追加しますbreadcrumb
をWebPage
に追加Hotel
をbranchOf
としてOrganization
として追加Product
に追加Product
をOffer
に追加Event
アイテムを関連付ける2つの例:superEvent
またはsubEvent
を介してitemref
属性は、同じドキュメント内の要素にのみ使用できます。
1つのitemref
属性から複数の要素を参照できます(IDトークンをスペース文字で区切ります)。
参照される要素は、複数のプロパティのコンテナである可能性があります。
参照される要素がitemscope
を持つ要素の子ではないことを確認する必要があります。そうでない場合、それらのプロパティはalsoこのアイテムに追加されます(ただし、これを回避するには ダミーのitemscope
を追加します)。
スキーマデータをリンクする方法は2つあります。
1つ目は簡単です。リンクするアイテムにitemid
プロパティを追加し、他のアイテムにlink
を追加するだけです。
<div itemid='#org' itemscope itemType='http://schema.org/Organization'>
<!-- ..... -->
</div>
<article itemscope itemType='http://schema.org/Article'>
<link itemprop='publisher' href='#org'>
</article>
2つ目はそれほど簡単ではありません。あなたのブログ投稿へのコメントがどこか遠くにあるとしたらどうでしょう。それらをブログ投稿にどのように接続しますか? IDを使用して空のアイテムを作成し、次のようにブログ投稿に接続できます。
<div id="comments" itemscope>
<span itemprop="commentCount">0</span>
</div>
<div id="words" itemscope>
<span itemprop="wordCount">0</span>
</div>
コメントにitemType
を付ける必要はありません。必要なのはitemscope
を追加することだけです。このようにして、検証エラーは発生しません。これで、コメントを次のようにブログ投稿にリンクできます。
<div itemscope itemtype="http://schema.org/BlogPosting" itemref="comments words">
<!-- .... -->
</div>
多田! wordCount
もインポートできました。