Концепции для ссылок RDFa DRY

Недавно я начал копаться в RDFa и попытаться приправить свой веб-сайт семантической информацией. Сайт предлагает услуги, события, блог и может предлагать продукты в будущем. К счастью, на schema.org есть грубые, но адекватные категории для всего этого. Но теперь дело доходит до практических вопросов.

Все примеры содержат всю информацию на одной странице, что мне кажется довольно академическим. Например. на моей целевой странице есть список с предстоящими событиями. События имеют свойство местоположения. Мои мероприятия проходят в двух разных местах. Я мог бы вставить информацию о местоположении для каждой записи и раздуть свой html. Я бы предпочел ссылки на страницы, которые описывают места и содержат полную информацию. Не уверен, что для этого предназначен тот же самый. Но даже в этом случае, как он узнает, какая RDFa-информация о целевом URL-адресе должна использоваться в качестве подходящей vCard?

Точно так же на моей целевой странице отображается только частичная информация о компании. Я мог бы добавить много <meta>, но снова ссылка на страницу контактов была бы неплохой.

Просто не хочется верить, что этот аспект ускользнул от создателей RDF. Существуют ли какие-либо передовые методы сокращения избыточности?


person Lars Hanke    schedule 12.05.2014    source источник


Ответы (2)


URI! (или IRI, например, в RDFa 1.1)

Это одно из основных качеств RDF, и оно делает возможным связанные данные, поскольку придуман Тимом Бернерсом-Ли (выделено мной):

Семантическая паутина — это не просто размещение данных в сети. Речь идет о создании ссылок, чтобы человек или машина могли исследовать сеть данных.

Подобно сети гипертекста, сеть данных создается с помощью документов в сети. Однако, в отличие от сети гипертекста, где ссылки являются якорями отношений в гипертекстовых документах, написанных на HTML, для данных они связывают между произвольными вещами, описанными RDF

Из моего ответа на вопрос о Semantic Web:

Используйте RDF (в виде формата сериализации ваш выбор) и определить URI для своих объектов, чтобы вы и другие люди могли делать заявления о них.

Так что дайте всем своим объектам URI и используйте его как тему соответственно. объект в тройках RDF. Обратите внимание, что вы можете не захотеть использовать тот же URI, что и ваши веб-страницы, так как это затруднит различие между данными о веб-странице и данными о предмете, представленном веб-страницей (см. мой ответ, описывающий это более подробно).

Итак, допустим, на вашем веб-сайте есть эти две страницы:

  • http://example.com/event/42 (о событии 42, т. е. HTML-странице)
  • http://example.com/location/51 (о месте 51, т. е. HTML-странице)

Используя метод хеш-URI, вы можете создавать следующие URI:

  • http://example.com/event/42#it (событие 42, т.е. реальная вещь)
  • http://example.com/location/51#it (локация 51, т.е. реальная вещь)

Теперь, когда вы хотите использовать словарь Schema.org для предоставления информации о вашем мероприятии, вы можете использовать resource, чтобы указать свой URI:

<!-- on http://example.com/event/42 -->
<article resource="#it" typeof="schema:Event">
  <h1 property="schema:name">Event 42</h1>
</article>

И когда вы хотите указать место события (используя Place), вы можете использовать URI места:

<!-- on http://example.com/event/42 -->
<article about="#it" typeof="schema:Event">
  <h1 property="schema:name">Event 42</h1>
  <a property="schema:location" typeof="schema:Place" href="/location/51#it">Location 51</a>
</article>

И на странице местоположения у вас может быть что-то вроде:

<!-- on http://example.com/location/51 -->
<article about="#it" typeof="schema:Place">
  <h1 property="schema:name">Location 51</h1>
  <a property="schema:event" typeof="schema:Event" href="/event/42#it">Event 42</a>
</article>

Обобщив эти данные, вы получите следующие триплеты (в Turtle):

@prefix schema: <http://schema.org/> .

<http://example.com/location/51#it> a schema:Place .
<http://example.com/location/51#it> schema:event <http://example.com/event/42#it> .
<http://example.com/location/51#it> schema:name "Location 51" .

<http://example.com/event/42#it> a schema:Event .
<http://example.com/event/42#it> schema:location <http://example.com/location/51#it> .
<http://example.com/event/42#it> schema:name "Event 42" .

РЕДАКТИРОВАТЬ: я не уверен (и надеюсь, что это не так), но, возможно, Schema.org вместо этого ожидает пустой узел со свойством url (или sameAs?), например:

<article about="#it" typeof="schema:Event">
  <h1 property="schema:name">Event 42</h1>
  <div property="schema:location" typeof="schema:Place">
    <a property="schema:url" href="/location/51#it">Location 51</a>
  </div>
</article>
person unor    schedule 13.05.2014

Каждый ресурс RDF имеет идентификатор. Идентификатор — это IRI (а URL — это подмножество IRI). Итак, просто ссылайтесь на местоположения по их идентификаторам.

Обычно каждая страница описывает один неявный основной ресурс и несколько явных дополнительных. Взгляните на Руководство по RDFa 1.1. Там много актуальной информации

person JimiDini    schedule 13.05.2014