Технология RDFa

Еще одно интересное решение по реализации отображения семантических данных — разметка RDFa, основанная на технологии RDF (Resource Description Framework).

RDF — это модель представления данных, разработанная консорциумом W3C и задуманная как основная технология типа такая семантического веба, ключевой особенностью которой является ориентация на распределенную, децентрализованную среду распространения.

Применение RDF не ограничено дополнением к HTML — или XML-разметке. Он самодостаточен.

Основная идея RDF состоит в описании ресурсов (людей, событий, организаций) с помощью триплетов вида «субъект — предикат — объект» (или «подлежащее, сказуемое, дополнение»).

Вот примеры подобного описания:

«Горький» «написал» «Песня о буревестнике»

«Горький» «Имеет имя» «Максим»

В формате N3 (Notation3 — краткий способ записи моделей RDF) мы получим следующее:

@prefix : <Http://www. example. org/> .

:gorkiy  :write  :pesn_o_burevestnike.

:gorkiy  :hasName  :maxim.

В RDF можно определять новые отношения:

@prefix : <Http://www. example. org/> :vasya :hasFather :ivan

:ivan :hasMother :svetlana

{ ?a :hasFather? b. ?b :hasMother? c. } => { ?a :hasGrantMother? c }

Вот так мы сделали Светлану бабушкой.

Каждый субъект, предикат и ресурс в RDF обозначен именем. Имя может быть глобальным, ссылающимся на одну и ту же сущность во всех RDF-документах, где оно используется, или локальным, действующим в пределах пространства имен текущего RDF-документа. Глобальные имена имеют формат URI (Uniform Resource Identifier — унифицированный идентификатор ресурса).

В этом основная мощь представления данных RDF. Представьте, что некий производитель выпустил уникальный продукт, оповестив об этом потенциальных покупателей и описав его достоинства на официальном веб-сайте. Далее некий независимый обозреватель поделился в своем блоге некоторыми своими впечатлениями от использования новинки. RDF позволяет поисковой системе не только найти продукт, но и сразу показать независимые отзывы на него, причем распознав, что это именно отзывы, и именно на него.

Использованием URI-адресов в качестве идентификаторов RDFa позволяет избежать проблемы с неясностью и неоднозначностью терминов словарей.

Важно сразу отметить, что RTF не является каким-либо определенным форматом файлов. Это модель представления информации, которая имеет несколько воплощений. Например, RDF/XML — реализация концепции RTF в виде XML-документа:

<rdf:RDF xmlns:rdf=»Http://www. w3.org/1999/02/22-rdf-syntax-ns#» xmlns:foaf=»Http://xmlns. com/foaf/0.1/» xmlns:dc=»Http://purl. org/dc/elements/1.1/«>

<rdf:Description rdf:about=»Http://paravozov. com/about«>

<dc: creator ван Паровозов< creator>

<dc:title xml:lang=»en»>Страничка Ивана ПаровозоваШ <foaf:maker rdf:nodeID=»person» />

</rdf:Description>

<rdf:Description rdf:nodeID=»person»>

<foaf:homepage rdf:resource=»Http://paravozov. com/about«» /> <foaf:made rdf:resource=»Http://paravozov. com/about«» />

<foaf:name>Иван Паровозов</foaf:name>

<foaf:firstName>Иван</foaf:firstName>

<foaf:surname>Паровозов</foaf:surname>

<foaf:depiction rdf:resource=»Http://paravozov. com/pic. j pg» /> </rdf:Description>

</rdf:RDF>

RDF/JSON — это RDF в виде данных в формате JSON (используемый, например, семантической базой данных Freebase как формат хранения данных):

{

Http://example. org/about” : {

Http://purl. org/dc/elements/1.1/creator” : [ { ”value” : ”Иван Паровозов”
”type” : “literal” } ],
Http://purl. org/dc/elements/1.1/title” : [ { ”value” : ”Страничка Ивана
Паровозова”, ”type” : ”literal”, ”lang” : ”ru” } ] ,
”_:person” : {
Http://xmlns. com/foaf/0.1/homepage” : [ { ”value” : ”http://
Paravozov. com/about”, ”type” : ”uri” } ] ,
Http://xmlns. com/foaf/0.1/made” : [ { ”value” : ”http://
Paravozov. com/about”, ”type” : ”uri” } ] ,
”Http://xmlns. com/foaf/0.1/name” : [ { ”value” : ”Иван Паровозов”
”type” : ”literal” } ] ,
Http://xmlns. com/foaf/0.1/firstName” : [ { ”value” : ”Иван”, ”type” :
‘literal” } ] ,
Http://xmlns. com/foaf/0.1/surname” : [ { ”value” : ”Паровозов”,
”type” : ”literal” } ] ,
Http://xmlns. com/foaf/0.1/depiction” : [ { ”value” : ”http://

Paravozov. com/pic. jpg”, ”type” : ”uri” } ]

}

}

И наконец, RDFa (RDF in attributes — RDF в атрибутах) — реализация RDF с помощью записи внутри атрибутов HTML — или XHTML-разметки; именно этот случай нас и интересует.

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

В общем случае RDFa использует атрибуты в тегах XHTML (<span>, <div> или, например, <a>) для задания описательных имен сущностей и их свойств.

Изначально RDFa создавался для XHTML. В настоящее время в версии RDFa 1.1 есть спецификации как для XHTML [XHTML-RDFA], так и для HTML [HTML-RDFA].

Посмотрим, как это все работает. Ниже представлена страничка все того же нашего программиста (на этом, естественно, его мучения не заканчиваются), размеченная с помощью RDFa:

<div xmlns:v=»Http://rdf. data-vocabulary. org/#» typeof=»v:Person»> Здравствуйте! Я <span property=»v:name»>HBaH nap0B030B</span>, более известный как <span property=»v:nickname»>Crazzy</span>. Подробнее обо мне:

<a href=»Http://www. crazzy1969.com» rel=»v:url»>www. crazzy1969.com</a>. Я живу в

<span rel=»v:address»>

<span typeof=»v:Address»>

<span property=»v:locality»>Эгвекинот</span>,

<span property=»v:region»>Hукотский A0</span>

</span>

</span>

Я <span property=»v:title»>Программист</span> в <span property=»v:affiliation»>Nord Software</span>.

Мои контакты:

Мои контакты в соцсетях:

<a href=»Http://www. facebook. com/profile. php? id=100003262466667″ rel=»v:friend»>faceboock</a>,

<a href=»Http://edna-blog. example. com» rel=»v:friend»>вконтакте</a>,

<a href=»Http://www. odnoklassniki. ru/#/profile/522180651074» rel=»v:friend»>одноклассники</a>

</div>

Сначала объявляется пространство имен, содержащее некий словарь (список сущностей и их компонентов). Атрибут typeof, как нетрудно догадаться, обозначает сущность внутри этого словаря (в данном случае Person — человек). Затем каждое свойство сущности обозначается с помощью атрибутов property или rel (в случае гиперссылки и вообще связи) и префикса v:, задающего область пространства имен словаря.

В случае необходимости использовать другие сущности, определенные в словаре, задаются вложенные пространства имен — именно так в примере обозначен, с использованием сущности v:Address, адрес.

Атрибут rel в данном случае (rel=»v:address») применен для указания связи между человеком (сущностью v:Person) и адресом (сущность v:Address). Вообще же, с помощью rel можно определять связь чего угодно с чем угодно. Например, так обозначается ссылка на внешний документ:

Подробнее про стандарт RFD можно узнать, ознакомившись со

<a rel=»document» href=»Http://www. shift-web. ru/translations/RDFa/RDFa-1.1-

Primer-Ru. html#bib-RDFA-CORE»> Следующим документом

</a>.

Для добавления невидимой информации в рамках документа можно использовать тег <meta> (который, согласно новым спецификациям, может быть помещен в любое место в теле документа):

<meta property=»title» content=»Страничка Ивана Паровозова» />

RDFa, без всякого сомнения, обладает рядом достоинств, среди которых — удобная индексация данных и отсутствие привязки к конкретному интернет-ресурсу. Главный же недостаток технологии заключается в том, что ее до сих пор мало кто использует. Причины — избыточность и фактическая необходимость разработчику применять две разметки одновременно. И наконец, RDFa, как правило, трудно полноценно внедрить в существующую HTML-разметку: будучи подмножеством RDF, он требует вполне определенной структуры. Если она не подразумевалась с самого начала, потребуется серьезно модифицировать имеющийся документ.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *