Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Разбор

Идентификаторы @id и связывание сущностей

Завершаем большую часть блока темой, которая объединяет все предыдущие типы, — связыванием сущностей через @id.

Проблема разрозненных блоков

Если на странице просто рядом лежат разметки организации, сайта и статьи, система не знает наверняка, что издатель статьи и организация — одна и та же сущность. Идентификатор @id решает эту проблему: он даёт сущности уникальное имя, на которое можно сослаться из любого места.

Как выглядит цепочка связей

Organization@id: …/#organizationWebSitepublisher → OrganizationWebPageisPartOf → WebSiteArticlemainEntityOfPage → WebPage
Каждая сущность ссылается на предыдущую по её @id

Пример с использованием @graph

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.ru/#organization",
      "name": "Пример-Мебель",
      "url": "https://example.ru/"
    },
    {
      "@type": "WebSite",
      "@id": "https://example.ru/#website",
      "url": "https://example.ru/",
      "publisher": { "@id": "https://example.ru/#organization" }
    },
    {
      "@type": "WebPage",
      "@id": "https://example.ru/blog/chpu/#webpage",
      "url": "https://example.ru/blog/chpu/",
      "isPartOf": { "@id": "https://example.ru/#website" }
    },
    {
      "@type": "BlogPosting",
      "@id": "https://example.ru/blog/chpu/#article",
      "headline": "Как настроить ЧПУ",
      "mainEntityOfPage": { "@id": "https://example.ru/blog/chpu/#webpage" },
      "publisher": { "@id": "https://example.ru/#organization" }
    }
  ]
}
</script>

Организация описана один раз, а сайт и статья лишь ссылаются на неё по идентификатору. Так данные не дублируются и не расходятся.

Правила для идентификаторов

Правила формирования @id
ПравилоПояснение
УникальностьУ каждой сущности свой идентификатор, у разных сущностей — разные
СтабильностьИдентификатор не меняется при изменении названия или оформления
ЕдинообразиеОдна и та же сущность везде называется одним и тем же @id
ФорматОбычно адрес страницы с фрагментом, например #organization
Реальность адресаИдентификатор не обязан открываться как самостоятельная страница

Типичные ошибки

  • Несколько разных идентификаторов для одной организации на разных страницах.
  • Идентификатор, зависящий от домена тестового окружения и попавший на боевой сайт.
  • Ссылка на идентификатор, сущность с которым нигде не описана.

Как это применить: опишите организацию по правилам из статьи про Organization, сайт — по статье про WebSite, а статьи — по статье про Article и BlogPosting и свяжите их идентификаторами.

Какие связи стоит задать в первую очередь

Основные связи между сущностями разметки
ОткудаСвойствоКуда
WebSitepublisherOrganization
WebPageisPartOfWebSite
ArticlemainEntityOfPageWebPage
ArticleauthorPerson
ArticlepublisherOrganization
ProductbrandBrand

Пошаговое внедрение

  1. Договоритесь о едином правиле формирования идентификаторов, например «адрес + фрагмент».
  2. Опишите организацию и сайт один раз, на главной странице, с постоянными идентификаторами.
  3. На остальных страницах ссылайтесь на организацию и сайт по этим идентификаторам, не повторяя их описание.
  4. Проверьте, что ни одна ссылка не указывает на несуществующую сущность.

Эта дисциплина окупается на больших сайтах: изменить название компании или логотип нужно в одном месте, а не на тысячах страниц.

Частые вопросы

Зачем нужен @id в разметке?

Он даёт сущности уникальное имя, чтобы ссылаться на неё из разных частей разметки и объединять данные в связный граф, а не в набор независимых блоков.

Должен ли адрес в @id открываться в браузере?

Нет: это лишь идентификатор, и он не обязан вести на самостоятельную страницу, хотя обычно строится на основе адреса сайта с фрагментом.

Что такое @graph?

Массив сущностей внутри одного блока JSON-LD, которые могут ссылаться друг на друга по идентификаторам.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также