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

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

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

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

Я просто не хочу верить, что этот аспект ускользнул от создателей RDF. Есть ли лучшие практики для сокращения избыточности?

2 ответа

Решение

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

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

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

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

Из моего ответа на вопрос о семантической паутине:

Используйте 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>

Агрегируя эти данные, вы получите эти тройки (в черепахе):

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

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

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

Другие вопросы по тегам