У меня есть обычный веб-сайт-портфолио (простой HTML), и этот веб-сайт включает в себя навигацию со ссылками «о нас», «выходные данные» и «контакты», поэтому результирующая карта сайта выглядит так:
index
|
+-------+----+----+--------+
| | | |
about contact imprint projects
|
+-----+--+--+-----+
| | | |
A B C D
Итак, на странице index
(/
) я хочу включить JSON-LD следующим образом:
<script type = "application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
…
…
}
</script>
Как ссылки на «о нас», «контакты»… могут быть представлены в Schema.org? Было бы:
{
…
"@type": "WebSite",
"links":
[
{
"@type": "WebSite",
"@id": "https://…"
}
]
}
быть правым?
Вы использовали свойство links
, которое (с учетом вашего @context
) приводит к URI свойства http://schema.org/links
. Но это недопустимое свойство Schema.org, поэтому вы не должны его использовать.
Чтобы связать элементы WebPage
с их WebSite
, вы можете использовать свойство hasPart
/isPartOf
:
{
"@context": "http://schema.org",
"@type": "WebSite",
"@id": "/#site",
"hasPart": [
{
"@type": "WebPage",
"@id": "/page-1"
},
{
"@type": "WebPage",
"@id": "/page-2"
}
]
}
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "/page-1",
"isPartOf": {
"@type": "WebSite",
"@id": "/#site"
}
}
Для страницы контактов можно использовать тип ContactPage
. Для страницы about вы можете использовать тип AboutPage
. Оба подтипы WebPage
. Конечно, Schema.org не предлагает подтипы для каждого возможного типа страницы; для страниц, для которых не определен конкретный подтип, вы можете использовать широкий тип WebPage
; во многих случаях также можно использовать либо ItemPage
, либо CollectionPage
.
Если вы хотите представить саму навигацию, есть тип SiteNavigationElement
.
@unor В вашем примере показано использование как hasPart
, так и isPartOf
, создавая двунаправленное соединение. Что, если мы не можем определить hasPart
, можно ли (/эффективно) создавать однонаправленные соединения?
@Ethan: Поскольку это обратные свойства, (семантически) достаточно указать только одно направление (можно вывести другое направление). Это, однако, не означает, что все потребители обязательно поддерживают оба пути («плохой» потребитель может быть запрограммирован таким образом, что ищет только одно конкретное направление).
Спасибо за это! Шов, чтобы быть им!
SiteNavigationElement
- это не то, что мне нужно, так как это запрашивает существующий элемент на странице, но я хочу создать навигацию на основе данных json, чтобы это не сработало.