Технология 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 не будет опубликован. Обязательные поля помечены *