Как мне связать элементы в schema.org?
Предположим, у меня есть простая HTML-страница о парне, который получает работу:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>New Job for John Doe</title>
</head>
<body>
<h1>New Job for John Doe</h1>
<p>This week John Doe accepted an offer to become a Software Engineer at MITRE. John graduated from MIT in 2005 with a BS in Computer Science. He previously worked at a small company near Boston. Blah, blah, blah.</p>
<p>The MITRE Corporation is a not-for-profit organization chartered to work in the public interest. The MITRE Corporation has two principal locations: Bedford, Massachusetts, and McLean, Virginia. Blah, blah, blah.</p>
</body>
</html>
Если я добавлю семантические данные, используя словарь schema.org, это может выглядеть так:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>New Job for John Doe</title>
</head>
<body>
<h1>New Job for John Doe</h1>
<p itemscope itemtype="http://schema.org/Person">This week John Doe accepted an offer to become a <span itemprop="jobTitle">Software Engineer</span> at <span itemprop="worksFor">MITRE</span>. John graduated from <span itemprop="alumniOf">MIT</span> in 2005 with a BS in Computer Science. He previously worked at a small company near Boston. Blah, blah, blah.</p>
<p itemscope itemtype="http://schema.org/Corporation">The MITRE Corporation is a not-for-profit organization chartered to work in the public interest. The MITRE Corporation has two principal locations: <span itemprop="location">Bedford, Massachusetts</span>, and <span itemprop="location">McLean, Virginia</span>. Blah, blah, blah.</p>
</body>
</html>
Первый абзац, очевидно, о человеке, Джоне Доу, а второй абзац о компании, MITRE Corporation. Но "МИТЕР" в первом абзаце совпадает с "Корпорацией МИТЕР" во втором. Как я могу явно объявить, что это одно и то же, используя schema.org?
2 ответа
Моя первая попытка ответить на мой собственный вопрос состояла в том, чтобы использовать атрибут itemref, например:
<p itemscope itemtype="http://schema.org/Person">
This week John Doe accepted an offer to become a
<span itemprop="jobTitle">Software Engineer</span>
at <span itemprop="worksFor" itemref="TheMitreCorporation">MITRE</span>.
John graduated from <span itemprop="alumniOf">MIT</span>
in 2005 with a BS in Computer Science.
He previously worked at a small company near Boston. Blah, blah, blah.
</p>
<p itemscope itemtype="http://schema.org/Corporation" id="TheMitreCorporation">
The MITRE Corporation is a not-for-profit organization chartered to work in the public interest.
The MITRE Corporation has two principal locations:
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="name">Bedford, Massachusetts</span>
</span>, and
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="name">McLean, Virginia</span>
</span>. Blah, blah, blah.
</p>
Но некоторые из комментаторов справедливо отметили, что это неправильное использование этого атрибута.
Итак, вот моя вторая попытка: использовать itemid
атрибут вместо. Оба экземпляра названия компании даны itemscope
а также itemtype
атрибут, и они оба установлены на одно и то же itemid
значение, которое является URL.
В спецификации говорится: "Атрибут itemid, если он указан, должен иметь значение, которое является действительным URL-адресом, потенциально окруженным пробелами... Глобальный идентификатор элемента - это значение атрибута itemid его элемента, если он есть, разрешенный относительно к элементу, для которого указан атрибут... Атрибут itemid нельзя указывать для элементов, для которых не указан ни атрибут itemscope, ни атрибут itemtype."
<p itemscope itemtype="http://schema.org/Person">This week John Doe accepted an offer to become a <span itemprop="jobTitle">Software Engineer</span> at <span itemprop="worksFor" itemscope itemtype="http://schema.org/Corporation" itemid="http://www.mitre.org">MITRE</span>. John graduated from <span itemprop="alumniOf">MIT</span> in 2005 with a BS in Computer Science. He previously worked at a small company near Boston. Blah, blah, blah.</p>
<p itemscope itemtype="http://schema.org/Corporation" itemid="http://www.mitre.org">The MITRE Corporation is a not-for-profit organization chartered to work in the public interest. The MITRE Corporation has two principal locations: <span itemprop="location" itemscope itemtype="http://schema.org/Place"><span itemprop="name">Bedford, Massachusetts</span></span>, and <span itemprop="location" itemscope itemtype="http://schema.org/Place"><span itemprop="name">McLean, Virginia</span></span>. Blah, blah, blah.</p>
// Обновление: Schema.org расширил свои спецификации схемы perso
очевидно, что Person связан с Компанией, поэтому вы можете установить отношение между человеком и организацией с помощью "принадлежность" к человеку "так, что я сделал, заключив абзацы в itemscope itemtype =" Person"и расширив Человек Схемы, добавив itemprop "affiliation" и itemscope itemtype = "Organization", так что теперь есть семантическое отношение, человек связан с организацией. Я также добавил метатег с itemprop = "name", потому что это необходимо для выполнения спецификаций "Person"
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>New Job for John Doe</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Person">
<h1>New Job for John Doe</h1>
<meta itemprop="name" content="John Doe" />
<p>This week John Doe accepted an offer to become a <span itemprop="jobTitle">Software Engineer</span> at <span itemprop="worksFor">MITRE</span>. John graduated from <span itemprop="alumniOf">MIT</span> in 2005 with a BS in Computer Science. He previously worked at a small company near Boston. Blah, blah, blah.</p>
<p itemprop="affiliation" itemscope itemtype="http://schema.org/Organization">The MITRE Corporation is a not-for-profit organization chartered to work in the public interest. The MITRE Corporation has two principal locations: <span itemprop="location">Bedford, Massachusetts</span>, and <span itemprop="location">McLean, Virginia</span>. Blah, blah, blah.</p>
</div> <!-- closing Schema "Person" -->
</body>
</html>
Вы можете поместить это в инструмент тестирования фрагментов Google, и я предполагаю, что вывод - это то, что вы ищете
Item
type: http://schema.org/person
property:
name: John Doe
jobtitle: Software Engineer
worksfor: MITRE
alumniof: MIT
affiliation: Item 1
Item 1
type: http://schema.org/organization
property:
location: Bedford, Massachusetts
location: McLean, Virginia