Googleの公式な例に従って、Googleの構造化データテストツールでレビューとテスト用のJSON-LDマークアップを作成しています。
同じ組織のレビューのリストを作成する場合(すべてのレビューは同じ組織に関するものです)、テストツールに重複が表示されます。
たとえば、同じThing
(本)の2つのレビューはテストに合格しましたOK:
<script type="application/ld+json">
[{
"@context": "http://schema.org/",
"@type": "Review",
"itemReviewed": {
"@type": "Thing",
"name": "Super Book"
},
"author": {
"@type": "Person",
"name": "Joe"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "8",
"bestRating": "10"
},
"publisher": {
"@type": "Organization",
"name": "Washington Times"
}
},
{
"@context": "http://schema.org/",
"@type": "Review",
"itemReviewed": {
"@type": "Thing",
"name": "Super Book"
},
"author": {
"@type": "Person",
"name": "Jane"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "7",
"bestRating": "10"
},
"publisher": {
"@type": "Organization",
"name": "Washington Times"
}
}]
</script>
結果:Googleは、各レビューのブック名への単一参照を使用して、ブックの2つのレビューを正しく検出します。
今、私はThing
をOrganization
に変更しましたが、取得したのは混乱です。
<script type="application/ld+json">
[{
"@context": "http://schema.org/",
"@type": "Review",
"itemReviewed": {
"@type": "LocalBusiness",
"@id": "www.some-url.com",
"name": "Company Name"
},
"author": {
"@type": "Person",
"name": "Jack"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"publisher": {
"@type": "Organization",
"@id": "www.some-url.com",
"name": "Company Name"
}
},
{
"@context": "http://schema.org/",
"@type": "Review",
"itemReviewed": {
"@type": "LocalBusiness",
"@id": "www.some-url.com",
"name": "Company Name"
},
"author": {
"@type": "Person",
"name": "Jane"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"publisher": {
"@type": "Organization",
"@id": "www.some-url.com",
"name": "Company Name"
}
}
]
</script>
テストツールの出力には、組織名への複数の参照が表示されます。
2回のレビューで4回。 100件のレビューを追加すると、各レビューには何百もの組織への参照が含まれます。
なぜそんなに混乱しているのですか?これがコードに影響する場合、どのように修正しますか?
今、私は
Thing
をOrganization
に変更します、[…]
これが唯一の変更ではありませんでした。 2番目の例には、会社に関するすべてのノードの@id
も含まれています。
それは良い習慣です そのようなものを提供する ノード識別子 。あなたの場合、すべてのレビューは同じ会社に関するものであり、レビューされた会社は出版社でもあることがわかります。
関係のないhowGoogleのSDTTは、何か問題が表示されない限り、それを表示します。同じ値を持っている場合でも(通常はそうであるように)、同じ@id
を持つすべてのノードのすべてのプロパティを表示するようです。これは単なる表示の問題であり、データに問題はありません。
会社について何か言いたいときに毎回完全なノードを追加する必要のない方法があります:@id
を使用して完全なノードを参照します。
これはスペースを節約するだけでなく、データの重複の問題を回避するだけでなく、SDTTの表示の問題も取り除きます。
この回答で 完全な例 を見つけることができます。
あなたの場合:
"@type": "LocalBusiness"
を使用してトップレベルノードを追加し、組織の@id
を指定して、関連するすべてのプロパティを提供します。
{
"@context": "http://schema.org/",
"@type": "LocalBusiness",
"@id": "http://www.example.com/#organization",
"name": "Company Name"
}
Review
アイテムからこのノードを参照します。
"itemReviewed": {"@id": "http://www.example.com/#organization"}
"publisher": {"@id": "http://www.example.com/#organization"}