Смешивание JSON-LD CollectionPage и микроданных `hasPart` из Schema.org
Разметка микроданных ниже отлично работает, инструмент тестирования структурированных данных Google показывает один CollectionPage
а также WebSite/WebPage
как дети.
<body itemscope itemtype="https://schema.org/CollectionPage">
<span itemscope itemtype="https://schema.org/WebSite" itemprop="hasPart">
<a href="https://springfield-xxxx.us" itemprop="url">Official site of Springfield</a>
</span>
<span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
<a href="https://facebook.com/group/XXXX" itemprop="url">Local events in Springfield</a>
</span>
<span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
<a href="https://news.us/city/springfield-xxxx" itemprop="url">Latest news in Springfield</a>
</span>
</body>
Однако, когда я добавляю JSON-LD , инструмент тестирования структурированных данных Google показывает объекты CollectionPage
а также WebPage/WebSite
отдельно, как если бы у них не было связи. Вот пример с JSON-LD:
<!DOCTYPE html>
<html>
<head>
<script type="application/ld+json">
{
"description": "...",
"author": {"@type":"Person", "name": "Homer J. Simpson"},
"@type": "CollectionPage",
"url": "http://my-springfield.us/sites",
"publisher": {
"@type": "Organization",
"logo": "Object of type ImageObject here",
"name": "Homer J. Simpson"
},
"image": "...",
"headline": "Springfield Sites",
"sameAs": ["..."],
"@context": "http://schema.org"
}
</script>
</head>
<body>
<span itemscope itemtype="https://schema.org/WebSite" itemprop="hasPart">
<a href="https://springfield-xxxx.us" itemprop="url">Official site of Springfield</a>
</span>
<span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
<a href="https://facebook.com/group/XXXX" itemprop="url">Local events in Springfield</a>
</span>
<span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
<a href="https://news.us/city/springfield-xxxx" itemprop="url">Latest news in Springfield</a>
</span>
</body>
</html>
Я пытался положить @id
в JSON-LD и itemid
на body
безрезультатно: инструмент тестирования Google показывает две отдельные страницы CollectionPages или два отдельных элемента других типов.
Мой вопрос: как соединить JSON-LD и микроданные, чтобы инструмент тестирования Google показывал один CollectionPage
с WebPage/WebSite
как дети / реквизит?
1 ответ
как если бы они не имели никакой связи
Ну, они не связаны в вашем примере. JSON-LD и микроданные не могут работать вместе на уровне синтаксиса.
Если вы хотите соединить сущности, определенные в разных синтаксисах, единственный способ
- дать этим объектам URI (один и тот же URI, если они одно и то же), и
- ссылаться на эти URI как на значения свойств (если один объект является значением свойства другого объекта).
Предоставление URI сущностей работает так, как вы упомянули: @id
в JSON-LD и с itemid
в микроданных (и с resource
в RDFa Lite).
Потребители (такие службы, как поисковые системы или Google SDTT, локальные клиенты, такие как надстройки браузера и т. Д.) Должны будут поддерживать следующие ссылки (не все), и если они поддерживают следующие ссылки, им также придется поддерживать синтаксический анализ дополнительного синтаксиса. (не все так делают).
Но даже если вы используете такие ссылки URI, это не меняет требований соответствия используемых вами синтаксисов. Ваш HTML-документ недействителен, потому что у вас есть itemprop
атрибуты, которые не принадлежат itemscope
, Это не разрешено Поэтому, если вы хотите продолжать использовать микроданные, вы должны также предоставить родительский элемент в микроданных (CollectionPage
в твоем случае).
Это был бы способ передать, что оба CollectionPage
вхождения представляют одну и ту же сущность (они имеют одинаковый URI = базовый URL текущего документа):
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "CollectionPage",
"@id": ""
}
</script>
<div itemscope itemtype="http://schema.org/CollectionPage" itemid="">
<span itemprop="hasPart" itemscope itemtype="http://schema.org/WebSite"></span>
<span itemprop="hasPart" itemscope itemtype="http://schema.org/WebSite"></span>
<span itemprop="hasPart" itemscope itemtype="http://schema.org/WebPage"></span>
</div>
Google SDTT по-прежнему отображает два CollectionPage
записи ( если синтаксис смешан), но они (правильно) имеют одинаковый URI. Google должен решить, что делать с этой информацией для их различных функций структурированных данных. Может быть, ссылки со смешанным синтаксисом поддерживаются ни для одной / некоторых / всех их функций ( кажется, они не документируют это); то, как их SDTT отображает вещи, не обязательно отражает то, как они интерпретируют это для своих функций.
Больше примеров
- так же
Product
в JSON-LD + микроданные WebPage
(JSON-LD) +BreadcrumbList
(Микроданные)Organization
(JSON-LD) +WebPage
(Микроданные)CollegeOrUniversity
(JSON-LD) +WebPage
(Микроданные)