2013-04-14 12 views
5

Я немного смущен о семантике веб-сайтов. Я понимаю, что каждый URI должен представлять ressource. Я предполагаю, что вся информация, предоставленная 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, ...)?

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

<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> 

ответ

8

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

Ну, URI HTTP мог идентифицировать страницу непосредственно или предмет, о котором идет речь. Вы не можете определить, идентифицирует ли 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 является автором "John Doe". Или это может означать, что вещь, описанная этой страницей HTML (→ роман), является автором «John Doe». Конечно, это важная разница.

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

В одном случае используется хэш-код UTC (see also this answer). Пример: http://magma.com/play/42 может идентифицировать на странице о игре, http://magma.com/play/42#play может идентифицировать пьесу.

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

См Choosing between 303 and Hash.

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

Итак, скажем, 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> 
+0

отличный ответ. Могу ли я попросить вас рассказать о том, как третьи стороны, такие как google и facebook, будут интерпретировать информацию, предоставленную таким образом? Какой ресурс они будут отображать? – tobib

+1

@tobib: Это не должно влиять на то, какие URI они используют для своих результатов поиска и т. Д., Поскольку они обычно интересуются страницами, а не тем, что они могут представлять. Однако, конечно, услуги могут интерпретировать/понимать заявления о вещах, которые вы даете, и делать с этой информацией, что бы они ни хотели. Я не знаю Facebook, но AFAIK они используют только словарь [Open Graph] (http://ogp.me/). Google, вероятно, использует только документированные словари (http://support.google.com/webmasters/bin/answer.py?hl=ru&answer=99170). Но я не очень хорошо их обслуживаю. – unor

2

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

Вот пример фрагмента, который вы можете начать, вы можете включить это прямо в 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> 
+2

Спасибо, но я не думаю, что это отвечает на мой вопрос. Во-первых, я хочу использовать RDFa, а не Microdata. Но более важно, что я хочу знать о семантике с веб-сайтами, состоящими из нескольких страниц. В ваших примерах показано, как отмечать отдельные биты информации. – tobib

+0

Словарь Schema.org также представлен как RDFa: http://schema.org/docs/datamodel.html. Вы должны добавлять семантику все время, когда информация, представляющая интерес, появляется на веб-странице, вы можете добавить столько объектов, сколько хотите на одной странице, просто посмотрите на примеры. Традиционный дизайн веб-шаблонов (например, MVC) может помочь вам поддерживать содержимое ваших HTML-страниц, но это выходит за рамки этой дискуссии. – loopasam