Я новичок в JSON-LD, и даже после нескольких часов поиска я все еще не могу найти четких ответов на некоторые вопросы.
Мой веб-сайт похож на Википедию: он предоставляет много информации по определенной теме, с множеством небольших разделов, длинных страниц и т. д. Простой пример того, как структурирована страница:
<article id = "animals">
<header>
<h1> 1. Animals </h1>
</header>
<section id = "cats">
<h2> 1.1 Cats </h2>
<p> Some information about cats </p>
</section>
<section id = "dogs">
<h2> 1.2 Dogs </h2>
<p> Some information about dogs </p>
</section>
</article>
Я хотел разметить каждый раздел с помощью JSON-LD. Вот как я это сделал (не считая ненужных свойств):
<script type = "application/ld+json">
{
"@context": "http://schema.org",
"@graph": [
{
"@type": "CreativeWork",
"@id": "http://www.example.com/example/#animals",
"name": "Animals",
"headline": "Animals",
"genre": "http://vocab.getty.edu/aat/300048715",
"url": "http://www.example.com/example/#animals"
},
{
"@type": "CreativeWork",
"@id": "http://www.example.com/example/#cats",
"name": "Cats",
"headline": "Cats",
"genre": "http://vocab.getty.edu/aat/300048715",
"url": "http://www.example.com/example/#cats",
"isPartOf": {
"@type": "CreativeWork",
"@id": "http://www.example.com/example/#animals"
}
}
]
}
</script>
1) После многих часов поисков я так и не понял, какого типа должны быть эти разделы. Подходит ли CreativeWork? Правильно ли используется свойство genre?
2) Как указать, где находится раздел? Это сделано с помощью свойства url? Можно ли это сделать, как в этом примере, указав id раздела?
3) Я также заметил, что сценарий становится очень большим, если размечать такую длинную страницу. Это должно быть так?





Schema.org не предоставляет тип для разделов / глав. Если вы все равно хотите указать данные о каждом разделе, вам следует использовать тип CreativeWork, поскольку это наиболее специфичный тип, доступный для такого случая.
Использование genre для этих разделов может иметь смысл, но я не думаю, что http://vocab.getty.edu/aat/300048715 подходит. Я не знаком с этим словарем и не могу найти четкого определения, но, по крайней мере, название термина «статьи» предполагает, что он не подходит для разделы статьи.
Использование URL-адресов с идентификатором фрагмента для свойства url совершенно нормально, и имеет смысл делать это так же для разделов статьи.
Скорее всего, в вашем случае это будет Article (или один из его дочерних типов), а hasPart / isPartOf можно использовать для связывания Article с элементами CreativeWork.
{
"@type": "Article",
"@id": "http://www.example.com/example/#animals",
"url": "http://www.example.com/example/#animals",
"name": "Animals",
"hasPart": [
{
"@type": "CreativeWork",
"@id": "http://www.example.com/example/#cats",
"url": "http://www.example.com/example/#cats",
"name": "Cats"
},
{
"@type": "CreativeWork",
"@id": "http://www.example.com/example/#dogs",
"url": "http://www.example.com/example/#dogs".
"name": "Dogs"
}
]
}
Все это может привести к длинному script, особенно если вы также хотите использовать articleBody (для всей статьи, включая все ее разделы) и text (для каждого раздела), так как вам придется дублировать / утроить большую часть контента. Это один из недостатков использования JSON-LD. Вы можете избежать этой проблемы, используя вместо этого микроданные или RDFa. (См. Небольшое сравнение.)