Еще одно интересное решение по реализации отображения семантических данных — разметка 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, он требует вполне определенной структуры. Если она не подразумевалась с самого начала, потребуется серьезно модифицировать имеющийся документ.
Добавить комментарий