Полное значение знака фунта / хэш-метки в RDFa - PullRequest
1 голос
/ 20 февраля 2012

Как правило, в XML знак #, когда он ставится перед короткой строкой текста, используется для обозначения «фрагмента» XML. Он просто говорит браузеру перейти к элементу XHTML с этим текстом, назначенным в качестве идентификатора, используя атрибут @ID после после загрузки всей страницы.

В RDFa кажется, что люди склонны использовать это при создании словарей, чтобы избежать необходимости создавать разные URL для каждого отдельного термина. Предположим, что основной URI является чем-то вроде «www.example.com/vocabulary/», тогда создатель словаря может сделать так, чтобы URI для терминов словаря имели такие URI: «www.example.com/vocabulary/term1» или как это: "www.example.com/vocabulary#term1". Если эти URI только когда-либо будут использоваться в качестве эфирных URI, которые не преобразуются в реальную веб-страницу, тогда это различие без разницы. Однако, если указанный создатель намерен создать веб-страницу для описания указанного словаря, им будет проще использовать последний, потому что тогда описание всего словаря появится на одной веб-странице с URL-адресом «www.example.com/ vocabulary / index.html "и # term1 заставит браузер перейти к элементу XHTML с term1, установленным в качестве идентификатора с помощью атрибута @ID.

Однако, и вот в чем вопрос, я также видел, как хеш-метка использовалась по-разному в различных объяснениях и руководствах по RDFa. Я видел, как он используется в атрибуте @about так:

<span about="#jane">
    <!-- Other RDFa or XHTML in here. -->
</span>

В этом случае в этих руководствах утверждается, что #jane теперь является URI субъекта, о котором можно писать предикаты и объекты. Но если #jane - это URI, каким будет полный URI для "нее"? Будет ли это текущий базовый URI страницы с добавлением #jane в конце? Если это так, то предоставляет ли атрибут about = "# jane" эквивалентную функцию в качестве атрибута ID = "jane" в том же элементе XHTML? Но about = "# jane" может использоваться во многих различных элементах XHTML, которые дают им одинаковые идентификаторы, что недопустимо.

Мы создали пустой узел (bNode), который использует #jane в качестве идентификатора узла, а затем начали говорить что-то об этом пустом узле? Но я думал, что правильный способ создания пустого узла - это примерно = "[_: jane]", поэтому я запутался.

Или речь идет о каком-то элементе XHTML, содержащем атрибут ID = "jane", в другом месте на той же странице, который может быть создан или не создан, но просто не упоминается в примерах?

Или все авторы всех этих учебных пособий и примеров просто используют стенографию, которая является общепринятой в учебных пособиях, но без объяснения, какого черта они делают ? Если так, у меня есть много парней, которых я буду бить головой вверх, когда я их встречу.

1 Ответ

2 голосов
/ 20 февраля 2012

В RDFa about = "# xyz" назначает относительный URI в качестве идентификатора для субъекта следующих операторов RDF.Формальная спецификация того, как глобальный URI получен из локального идентификатора, немного сложна, но практически это будет базовый URI ресурса плюс часть фрагмента.Если базовый URI документа не задан явно, это будет URI, из которого было получено представление.

Так что если у вас есть файл product.html и сделаете его доступным под URI

http://www.example.org/product.html (обратите внимание, что локальное имя файла и общедоступный URI не имеют аппаратной привязки),

, тогда узел

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
...
</div>

назначит этот элемент данныхглобальный URI

http://www.example.org/product.html#offer

Теперь, для чего вам это нужно?

Наиболее распространенным случаем является то, что вы можете захотеть сделать заявления об этой сущности в другом ресурсе,который затем может быть использован для сопоставления всей информации об одном и том же объекте в гигантском графе.

Но вы также можете использовать технику для сбора метаданных, разбросанных по одному и тому же HTML-документу, потому что вы совершенно законноиспользуйте «about» с одним и тем же идентификатором несколько раз.

Например, вы можете использовать следующие строки:

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
<span property="gr:name">ACME Anvil</span>
</div>

и 500 строк:

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer">
<span property="gr:description">The ACME Anvil is the most advanced anvil that money can buy</span>
</div>

Парсер RDFaтогда будет знать, что босвойства gr: name и gr: description принадлежат одному и тому же объекту.

В синтаксисе микроданных у вас есть несколько более элегантное ключевое слово "itemref" для прямой ссылки на элементы HTML, которые содержат метаданные, относящиеся ктот же объект.В RDFa косвенную интеграцию содержимого, разбросанного по всему HTML, можно выполнить только путем повторного использования одного и того же идентификатора для «about».

В двух словах:

  1. Использование about в RDFa - этоочень хорошая практика, потому что это помогает связать ваши данные с другими данными.Сделайте это!
  2. Не используйте повторно фрагмент, который вы используете для навигационных целей, с id = "# xyz" для свойства about.

Так что если к идентификатору фрагмента нужно перейтипродукт

<div id="product"> blablabla> </div>

не используйте about = # product ", но, например, about =" # product_data "для идентификации объекта данных.

  1. Это совершенно нормально использоватьатрибут about несколько раз с одним и тем же идентификатором, если речь идет об одном и том же объекте (например, об одном и том же продукте, одной и той же компании).

Теперь, почему идентификатор фрагмента так популярен впримеры? Потому что вы легко получите глобальные идентификаторы для каждой отдельной страницы, используя этот шаблон - представьте себе магазин с 1 000 товаров в продаже. Если вы добавите

about="#product_data" 

к элементу разметки данных о продукте, то каждый отдельный продуктбудет иметь глобальный идентификатор, к которому могут обращаться другие.

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

...