これは何が起こるはずなのか?もしそうなら、なぜですか?
以下に例を示します( ここにテストコード ):
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "http://example.com/"
}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement":{
"@type": "ListItem",
"position": 1,
"item":{
"@id": "http://example.com/",
"name": "Lecture 12: Graphs, networks, incidence matrices"
}
}
}
</script>
はい、GoogleのSDTTがこれを行うのは理にかなっていると思います。 WebPage
アイテムをトップレベルのアイテムとしてさらに表示する必要があるかどうかは、使いやすさの問題です。セマンティクスには影響しません。
最初のscript
データブロックでは、WebPage
にURI http://example.com/
があると言います。 2番目のscript
データブロックでは、item
プロパティの値が同じURI http://example.com/
を持っていると言います。
これら2つのアイテムは同じURIであるため、同じものでなければなりません。
breadcrumb
プロパティ を使用して、BreadcrumbList
がWebPage
に属することを明確にすることができます。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "http://example.com/",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement":{
"@type": "ListItem",
"position": 1,
"item":{
"@id": "http://example.com/",
"name": "Lecture 12: Graphs, networks, incidence matrices"
}
}
}
}
</script>
SDTTで確認できるように、item
プロパティに指定したプロパティは、最上位のWebPage
アイテムの下に表示されます。
(N.B .: GoogleのSDTTは、同じURIに異なるタイプが提供される場合にバグがあるようです。)
IDをグローバル変数と考えると、その値を初めて「宣言」すると、この値はドキュメント全体に設定され、IDを呼び出す場所で指定された値を「レンダリング」します。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "http://example.com/" *here you give ID a value*
}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement":{
"@type": "ListItem",
"position": 1,
"item":{
"@id": "http://example.com/", *here you just "paste" the given value*
"name": "Lecture 12: Graphs, networks, incidence matrices"
}
}
}
</script>
それが、パンくずリスト内で文字通り完全なURLを取得する理由です。
実際には、IDは 非常に エンティティを明確にし、ホームページURLを何度か繰り返したり、 郵便番号 LocalBusinessおよびその他の種類の組織に関するコンテンツを行う場合。
大きな利点は、他の著者が外部のサイト/ドメインからこのIDを参照する可能性があり、それでも一義的な関係になることです。大きな、ちょっとしたセマンティックリンクの構築を考えてください(範囲外、考えられる使用例にすぎません)。
実例は ZeClinicsの連絡先ページ にあります。ここでは、将来のRDFおよびオンページスキーマ開発でリコールされる前例を設定するために、会社の2つの施設をハッシュしています。
さらに、WebサイトのメンテナンスにCMSを使用している場合は、BreadcrumbをRDFa(私のお気に入りとMicrodata)で実装し、このトレイルをはるかに柔軟な(したがって複雑な)JSON-LDスクリプトと区別することをお勧めします。
これは、たとえば、多くのWPテーマで絶対に一般的です。
楽しむ!