Schema.orgのサイトにJSON-LDを適用するためのベストプラクティスに興味があります。
Article
を含むページがあり、ページでWebSite
を定義したい場合、次のようにします。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
}
</script>
<!- … -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
</script>
これは正しいですか、間違っていますか?これらを同じスクリプトまたはアイテムの配列にマージする利点または必要性はありますか?
有効です必要な数のデータブロック(= script
要素)を持つことができます。
script
要素を1つだけ使用することの利点:複数のアイテム間の関係を簡単にすることができます(たとえば、 hasPart
または mainEntity
)。アイテムをネストするだけです。
しかし、個別のデータブロックを使用する場合、@id
( thanks、@ Gregg Kellogg )でアイテムのURIを参照することにより、これらの関係を作成することももちろん可能です。
(参照用に、 単一のscript
に2つ以上のトップレベル項目を追加 は@graph
で可能です。)
Webサイトでスキーマデータを保存および管理する方法に関する制限を除いて、単一または複数のデータブロックを使用してもメリットはありません。
たとえば、Webサイト内の異なるコンポーネントが各データブロックを個別に生成する場合、それらを個別に必要とする場合があります。あるいは、Webサイトが1ページのすべてのスキーマを1か所で管理できる場合、単一のデータブロックを管理し、これを単一のscript
要素としてレンダリングする方が簡単な場合があります。
次のように各スキーマを配列としてリストすることにより、これらを単一のスクリプトに結合できます。
<script type="application/ld+json">
[
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
},
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
]
</script>