Лучшие практики для добавления семантики на сайт

Я немного озадачен семантикой сайтов. Я понимаю, что каждый URI должен представлять ресурс. Я предполагаю, что вся информация, предоставленная RDFa внутри веб-страницы, описывает ресурс, представленный URI этой веб-страницы. Мой вопрос: каковы лучшие практики для предоставления семантических данных для подстраниц веб-сайта.

В моем случае я хочу создать веб-сайт для театральной группы под названием магма с использованием RDFa с schema.org и словарями opengraph. Допустим, у меня есть страница приветствия (http://magma.com/), страница контактов (http://magma.com/contact/) и страницы для отдельных пьес (http://magma.com/play/<playid>/).

Теперь я думаю, что и страница приветствия, и страница контактов представляют один и тот же ресурс (магма), в то же время предоставляя различную информацию об этом ресурсе. Страницы игры, тем не менее, представляют игры, которые происходят только от магмы. Или лучше сказать, что страницы воспроизведения также представляют магму, но предоставляют информацию о играх, которые будут выполняться этой группой? Третий вариант, на который я наткнулся, это http://schema.org/WebPage. Особенно подтипы типа ContactPage кажется актуальным.

Когда дело доходит до реализации, куда мне поместить RDFa?

И наконец: как мой выбор изменит отношение сторонних веб-сайтов (Google, Facebook, ...)?

Я понимаю, что этот вопрос немного размыт. Чтобы сделать это более конкретным, я добавлю пример, который вы можете критиковать:

<html vocab="http://schema.org/" typeof="TheaterGroup">
  <head>
    <meta charset="UTF-8"/>
    <title>Magma - Romeo and Juliet</title>

    <!-- magma sematics from a template  file -->
    <meta property="name" content="Magma"/>
    <meta property="logo" content="/static/logo.png"/>
    <link rel="home" property="url" content="http://magma.com/"/>
  </head>

  <body>
    <h1>Romeo and Juliet</h1>

    <!-- semantics of the play -->
    <div typeof="CreativeWork" name="Romeo and Juliet">
      ...
    </div>

    <h2>Shows</h2>

    <!-- samantics of magma events -->
    <ul property="events">
      <li typeof="Event"><time property="startDate">...</time></li>
      ...
    </ul>
  </body>
</html>

2 ответа

Решение

Я понимаю, что каждый URI должен представлять ресурс. Я предполагаю, что вся информация, предоставленная RDFa внутри веб-страницы, описывает ресурс, представленный URI этой веб-страницы.

Ну, HTTP URI может идентифицировать саму страницу ИЛИ о чем эта страница. Вы не можете определить, идентифицирует ли URI страницу или объект, просто взглянув на него.

Пример (в синтаксисе Turtle):

<http://en.wikipedia.org/wiki/The_Lord_of_the_Rings> ex:author "John Doe"

Это может означать, что HTML-страница с URI http://en.wikipedia.org/wiki/The_Lord_of_the_Rings Автор "Джон Доу". Или это может означать, что вещь, описанная этой HTML-страницей (→ роман), написана Джоном Доу. Конечно, это важное различие.

Существуют различные способы различения того, что представляет собой URI, и в этом есть спор. Обсуждение вокруг этого известно как проблема httpRange-14. См., Например, веб-ресурс статьи Wikipedia.

Одним из способов является использование хеш-URI ( см. Также этот ответ). Пример: http://magma.com/play/42 мог бы определить страницу о спектакле, http://magma.com/play/42#play мог бы определить пьесу.

Другой способ - использовать код состояния HTTP 303. Код 200 дает представление страницы о вещи, код 303 See Other дает дополнительный URI, идентифицирующий вещь. Этот метод используется DBpedia:

См. Выбор между 303 и Hash.

Теперь, используя RDFa, вы можете делать заявления как о самой странице, так и о том, что она представляет. Просто используйте соответствующий URI в качестве темы (например, используя resource атрибут).

Так скажем http://magma.com/#magma представляет театральную группу. Теперь вы можете использовать этот URI на каждой странице (/contact, /play/,...), чтобы делать заявления о группе, соответственно. ссылаться на группу.

<div resource="http://magma.com/#magma">
  <span property="ex:name">Magma</span>
</div>

<div resource="http://magma.com/">
  <span property="ex:name">Website of Magma</span>
</div>

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

Вот пример фрагмента для начала, который вы можете включить прямо в HTML-страницу. Когда вы говорите об исполнении пьесы на странице, вы можете использовать:

<div itemscope itemtype="http://schema.org/TheaterEvent">
  <h1 itemprop="name">Romeo and Juliet</h1>
  <span itemprop="location">Council Bluffs, IA, US</span>
  <meta itemprop="startDate" content="2011-05-23">May 23
  <a href="/offers.html" itemprop="offers">Buy tickets</a>
</div>

На вашей странице контактов вы можете указать:

<div itemscope itemtype="http://schema.org/TheaterGroup">
  <span itemprop="name">Magma</span>
  Tel:<span itemprop="telephone">( 33 1) 42 68 53 00 </span>
</div>
Другие вопросы по тегам