Проблема заключается в том, что потребитель будет думать, что различные вещи описаны (или более точно: потребитель не будет знать, если то, что одни и те же или нет).
Существует способ предотвратить это: give each thing a URI, и в случае, если все то же самое, тот же URI.
Это можно сделать с помощью @id
в JSON-LD и с itemid
в Microdata.
Так простой случай может быть:
<!-- markup on the product page,
so the fragment "#this" results in an absolute URI like
"http://example.com/products/foo#this" -->
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"@id": "#this",
"name": "Foo"
}
</script>
<!-- Microdata -->
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
<h1 itemprop="name">Foo</h1>
</article>
В случае свойство как name
имеет различные значения, очевидный способ, которым потребитель может справиться с этим, чтобы дать вещь несколько имен. Для функции, где потребителю требуется ровно одно имя (например, в богатом результате), не определено, какой из значений name
будет использоваться. Если потребитель является поисковой системой, он, скорее всего, будет использовать уже существующие запатентованные алгоритмы для обработки таких случаев.
¹ Конечно, неясно, поддерживают ли все различные потребители. Но это правильный способ сделать это, и это единственный явный способ сделать это. Неявные способы включают в себя надежду, что потребитель понимает, что идентичные значения для типичных (но не обязательно) уникальных свойств (например, url
, email
, productID
и т. Д.) Означают, что все то же самое. Но такой неявный способ можно, конечно, использовать вместе с явным.