Смешивание JSON-LD CollectionPage и микроданных `hasPart` из Schema.org - PullRequest
0 голосов
/ 03 июня 2018

Разметка микроданных ниже работает отлично, Инструмент тестирования структурированных данных 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 Ответ

0 голосов
/ 03 июня 2018

как если бы у них не было соединения

Ну, они не подключены в вашем примере.JSON-LD и микроданные не могут работать вместе на уровне синтаксиса.

Если вы хотите соединить сущности, определенные в разных синтаксисах, единственный способ -

  • дать эти сущностиURI (тот же URI, если они являются одним и тем же), и
  • ссылаются на эти URI как на значения свойств (если один объект является значением свойства другого объекта).

Предоставление URI сущностей работает так, как вы упомянули: с @id в JSON-LD и с itemid в микроданных (и с resource в RDFa Lite).

Потребители (службы)подобно поисковым системам или Google SDTT, локальные клиенты, такие как надстройки браузера и т. д.) должны будут поддерживать следующие ссылки (не все это делают), а если они поддерживают следующие ссылки, они также должны поддерживать синтаксический анализ дополнительного синтаксиса (не всеdo).

Но даже если вы используете такие ссылки 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>

SDTT от Google по-прежнему отображает две записи CollectionPage (, если синтаксис смешан ), ноони (правильно) имеют одинаковый URI.Google должен решить, что делать с этой информацией для их различных функций структурированных данных.Может быть, ссылки со смешанным синтаксисом поддерживаются ни для одной / некоторых / всех их функций ( они, похоже, не документируют это );то, как их SDTT отображает вещи, не обязательно отражает то, как они интерпретируют это для своих функций.

Дополнительные примеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...