Как связать JSON-LD и микроданные с помощью itemid? - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу связать вместе два вида структурированных данных: WebPage, который является JSON-LD, и BreadcrumbList, который является встроенными микроданными.

Тема не является дубликатом! Я видел много похожих ответов на вопросы по этой теме в SO, но я проверил всех с помощью инструмента тестирования структурированных данных Google, и ни один ответ не был проверен.

Пример кода:

<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Webpage",
"id": "https://www.example.com#Webpage",
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "https://www.example.com#BreadcrumbList"
}
}
</script>
<nav class="breadcrumbs">
<ol itemscope itemtype="http://schema.org/BreadcrumbList" itemid="https://www.example.com#BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up up up" title="a" href="/a/">
<span itemprop="name">a</span></a>
<meta itemprop="position" content="1" /></li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up up" title="b" href="/b/">
<span itemprop="name">b</span></a>
<meta itemprop="position" content="2" /></li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up" title="c" href="/c/">
<span itemprop="name">c</span></a>
<meta itemprop="position" content="3" /></li>
</ol>
</nav>

Как я уже сказал, WebPage является основным типом данных в фрагменте JSON-LD.Он имеет вторичный тип данных BreadcrumbList, который имеет идентификатор.BreadcrumbList внутри микроданных относится к itemid к тому же из JSON-LD - я ожидаю, что инструмент тестирования покажет связь между BredcrumbList из JSON-LD и данными из микроданных.Но нет: тестовый инструмент отображает их как разные и вызывает ошибку во фрагменте JSON-LD, потому что он не требует ItemList.

Это ошибка тестового инструмента или я пропустил что-то существенное?

PS : та же конструкция, сборка только на JSON-LD проверена, как и ожидалось:

<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Webpage",
"id": "https://www.example.com#Webpage",
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "https://www.example.com#BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem", 
"id": "https://www.example.com#ListItem"
}
]
}
}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "ListItem",
"id": "https://www.example.com#ListItem",
"position": "1",
"item": {
"@id": "https://www.example.com/item1",
"name": "name1"
}
}
}
</script>

1 Ответ

0 голосов
/ 12 января 2019

Я решал эту проблему около месяца;это становится очень быстро.

Итак, JSON + LD - это просто контейнер для связанных данных .Я думаю, что ваш вопрос относится к сфере «можете ли вы смешать микроформаты», например: схема, RDFa, микроданные ... и ответ: Да !

Я использую формат json + ld для Googleс определениями ссылок верхнего уровня;вещи, которые несколько абстрактны, такие как организации, локальный бизнес и т. д., а затем, чтобы уточнить, я использую встроенные RDFa / Microdata для элементов страницы.такие вещи, как крошка, заголовок, теле и т. д.

Google поддерживает каждый микроформат (с предпочтением для JSON-LD), и, кажется, не возникает никакого конфликта, когда Атрибуты смешивания , если ссылки на данные согласованы и синтаксис действителен.так что вы можете использовать то, что подходит для структуры кода.

так что ваш пример кода допустимый подход в соответствии с документами Google Dev и хорошим разработчиком, и с 2019 года этот подход создает действительную страницу.это сделало разработку намного проще.

...