Подтвердить что ты не робот

HTML5 Microdata - itemref для другого предмета (Person работает для организации)

Веб-сайт организации, скажем, "Sun Industries", хотел бы добавить список сотрудников. Адрес и контактная информация организации уже присутствуют на веб-странице, но список сотрудников будет где-то еще.

Итак, мы имеем

<div id="organization" itemscope itemtype="http://schema.org/Organization">
  <span itemprop="name">Sun Industries</span>,
  <span itemprop="location" itemscope itemtype="http://schema.org/Place">
    <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
      <span itemprop="streetAddress">Technologies Street 42</span>,
      <span itemprop="addressLocality">Venustown</span>
      <span itemprop="postalCode">98765</span>
    </span>
  </span>
</div>

а затем в коде HTML5 у нас будет

<div id="employee-1" itemscope itemtype="http://schema.org/Person">
  <span itemprop="name">John Doe</span>,
  <span itemprop="jobTitle">Sales Manager</span>
</div>

Как связать два объекта "организация" и "сотрудник-1" вместе?

Я попытался добавить следующий дочерний объект к объекту "employee-1"

<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">

но это не сработало (по крайней мере, не в Google Structured Data Testing Tool).

Как я могу использовать свойство microdata itemref правильно в этом случае?

Чтобы быть ясным, я также пробовал следующее:

  • Добавить itemprop="worksFor" в объект "организация" .
  • Добавить itemref="organization" в объект "employee".

Итак,

<div id="organization" itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
  <span itemprop="name">Sun Industries</span>,
  ...
</div>
...
<div id="employee-1" itemscope itemtype="http://schema.org/Person" itemref="organization">
  <span itemprop="name">John Doe</span>,
  <span itemprop="jobTitle">Sales Manager</span>
</div>

но это дало мне Warning: Page contains property "worksfor" which is not part of the schema. для объекта "организация" .

4b9b3361

Ответ 1

Хорошо, на самом деле ваш последний фрагмент кода выглядит отлично. Возможно, с Yandex Validator результат будет более понятным

person
  itemType = http://schema.org/Person
  worksfor
    organization
      itemType = http://schema.org/Organization
      name = Sun Industries
  name = John Doe
  jobtitle = Sales Manager

Пара других рабочих примеров.

<body>
  <div id="organization" itemscope itemtype="http://schema.org/Organization" itemref="employee-1">
    <span itemprop="name">Sun Industries</span>,
    <span itemprop="location" itemscope itemtype="http://schema.org/Place">
      <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">Technologies Street 42</span>,
        <span itemprop="addressLocality">Venustown</span>
        <span itemprop="postalCode">98765</span>
      </span>
    </span>
  </div>
  <div id="employee-1" itemprop="employee" itemscope itemtype="http://schema.org/Person">
    <span itemprop="name">John Doe</span>,
    <span itemprop="jobTitle">Sales Manager</span>
  </div>
</body>

Выдает следующее:

organization
  itemType = http://schema.org/Organization
  employee
    person
      itemType = http://schema.org/Person
      name = John Doe
      jobtitle = Sales Manager
  name = Sun Industries
  location
    place
      itemType = http://schema.org/Place
      address
        postaladdress
          itemType = http://schema.org/PostalAddress
          streetaddress = Technologies Street 42
          addresslocality = Venustown
          postalcode = 98765

Или это

<body>
  <div id="employee-1" itemscope itemtype="http://schema.org/Person">
    <span itemprop="name">John Doe</span>,
    <span itemprop="jobTitle">Sales Manager</span>
    <meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization"  itemref="organization">
  </div>
  <div id="organization">
    <span itemprop="name">Sun Industries</span>,
    <span itemprop="location" itemscope itemtype="http://schema.org/Place">
      <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">Technologies Street 42</span>,
        <span itemprop="addressLocality">Venustown</span>
        <span itemprop="postalCode">98765</span>
      </span>
    </span>
  </div>
</body>

Это приводит к

person
  itemType = http://schema.org/Person
  name = John Doe
  jobtitle = Sales Manager
  worksfor
    organization
    itemType = http://schema.org/Organization
    name = Sun Industries
    location
      place      
        itemType = http://schema.org/Place
        address
          postaladdress
            itemType = http://schema.org/PostalAddress
            streetaddress = Technologies Street 42
            addresslocality = Venustown
            postalcode = 98765

Спецификация не очень понятна при использовании itemref, но пример помогает

<div itemscope id="amanda" itemref="a b"></div>
<p id="a">Name: <span itemprop="name">Amanda</span></p>
<div id="b" itemprop="band" itemscope itemref="c"></div>
<div id="c">
 <p>Band: <span itemprop="name">Jazz Band</span></p>
 <p>Size: <span itemprop="size">12</span> players</p>
</div>

Ответ 2

Ваш последний пример правильный.
(Инструмент тестирования Googles больше не дает указанной ошибки. Тогда они, вероятно, не были в курсе новых дополнений к словарю Schema.org.)

Спецификация

Ссылки на спецификации itemref:

tl; dr:

  • Вы указываете itemref для элемента (с itemscope), к которому вы хотите добавить свойства.
  • Вы указываете id для элемента (с itemprop), который вы хотите добавить.

Примеры

Минимальный пример:

<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="org">
  <!-- this property (worksFor) gets added to the Person item below -->
</div>

<div itemscope itemtype="http://schema.org/Person" itemref="org">
  <!-- looks for the element with the ID "org" -->
</div>

Это эквивалентно:

<div itemscope itemtype="http://schema.org/Person">

  <div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
  </div>

</div>

Другие примеры:

Следует иметь в виду

  • Атрибут itemref может использоваться только для элементов в одном документе.

  • Вы можете ссылаться на несколько элементов из одного атрибута itemref (разделять маркеры ID с пробелами).

  • Указанный элемент может быть контейнером для нескольких свойств.

  • Вы должны убедиться, что ссылочные элементы не являются дочерними элементами элемента с itemscope, иначе их свойства также будут добавлены к этому элементу (но вы можете обойти это с помощью добавление фиктивного itemscope).