Pull to refresh

RDF for dummies

Reading time 4 min
Views 13K
С этой статьи я начинаю совй цикл постов «для новичков» где максимально популярно растолкую понятия веб 3.0. В последствии все статьи перекочуют в вики и будут «изданы» мною в виде PDF книги.

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

RDF это язык описания знаний. Это не совсем XML. то есть совсем не XML, просто синтаксис похож. RDF содержит тройки данных «объект — предикат — субъект». ну пример «Столб имеетВысоту 15м». Вот простейший пример; RDF.:

@prefix : <http: www.example.org> .
:john a :Person .
:john :hasMother :helga .
:john :hasFather :henrich .
:richard :hasSister :jane .


Назовем это Документ #1, он потом нам пригодиться.

Пока понятно? Нет?
@prefix - подгружаем пространство имен (тут хранятся условные всякие описания, которые понятны компьютеру, потом расскажу по-подробнее)
:john a :Person некто Джон человек (безусловно)
:john :hasMother :helga У Джона есть мама и её зовут Хельга.
:john :hasFather :henrich а отца Джона зовут Генрих
:richard :hasSister :jane — у отца есть сестра — Джейн

Такая вот себе семейка. Кстати, это короткая форма записи RDF, зовется она N3 (Нотация три). Как я понимаю, создана под влиянием ЛИСПа и после того, как поняли, что XML слишком большой. Она хороша в некоторых случаях и очень наглядна, будем использовать её в качестве примера. Но есть и XML-like версия, она и используется в вебе — RSS 0.9, (если я не ошибаюсь) тому пример. Вот XML-like пример про того же Джона:
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns="http://www.example.org/#">
<ns:person rdf:about="http://www.example.org/#john">
 <ns:hasmother rdf:resource="http://www.example.org/#helga" />
 <ns:hasfather>
  <rdf:description rdf:about="http://www.example.org/#henrich">
   <ns:hassister rdf:resource="http://www.example.org/#jane">
   </ns:hassister>
  </rdf:description>
 </ns:hasfather>
</ns:person>
</rdf:rdf>

Малопонятно и плохочитаемо. Согласен, но для компьютера удобнее, так как любой язык программирования может с легкостью разобрать XML-файл и получить данные.

Самое сильное отличие RDF от XML заключается в том, что RDF предназначен для распределенных данных. К примеру мой SIOС. Я перепечатывал посты Джона Бреслина, значит мой SIOC связан с его SIOCом и компьютер может легко, по ссылкам (ссылки главная опора Семантической Сети, помните?), собрать единое обсуждение. Роботы могут собрать разные RDF, написанные разными людьми и узнать вещи, которых не было явно ни в одном из документов, чувствуете приближение Матрицы?
Пример:
Из Документа #1 мы знаем, что у Джона есть отец, Генрих.
Вот второй документ (Документ #2):

@prefix : <http:> :</http:>henrich<http:> :hasBrother :han
{ ?a :hasFather ?b . ?b :hasBrother ?c . } => { ?a :hasUncle ?c }
</http:>


Тут написано, что у Генрихаесть брат Хан. А нижняя строчка это правило, которое говорит, что если у отца некого человека А есть брат, то он дядя для персоны А. Объединяем Документ #1 и #2, соблюдаем правило, и вуаля: компьютер знает, что у Джона есть дядя Хан!

Ричард Сиганиак высказал основные места применения RDF.
  1. Вам нужно объединять данные из различных источников, не прибегая к созданию специализированных программ.
  2. Вам нужно дать другим доступ к вашим данным.
  3. Вам нужно децентрализовать ваши данные так, чтобы ими всеми не «владел» кто-то один.
  4. Вам нужно сделать что-то особенное с большими объёмами данных — вводить, извлекать, просматривать, анализировать, выполнять поиск, и т.д. Вы хотите создать (либо использовать готовый) универсальный инструмент, который бы позволял вам всё это делать, основываясь на модели данных RDF (имеющей то преимущество, что она не привязана к закрытым технологиям хранения и представления данных — в отличие от диалектов СУБД).

В общем, это что-то вроде распределенного объединения иерархической и сетевой БД.

Имена в RDF бывают двух типов: литералы (просто текст) и URI. URI может быть ссылкой на веб сайт (http://futuri.us) но не обязательно. В целом URI это ссылка на какой-либо объект (не обязательно он имеет свое представление), к примеру urn:isbn:5-3180-0093-2. Это ссылка на книгу "Samba. Руководство системного администратора. Для профессионалов" Эда Бруксбэнка. У этой книги вряд ли есть страничка, но четко и ясно, что этот URI указывает на книгу, и ясно на какую. URI уникально. Потому позволяет привязывать RDF к какому-то единственному объекту.

@prefix : <www.example.org/>
<futuri.us/> a :Website
<futuri.us/> dc:title "Футуриус"
<futuri.us/> dc:contributor "Коробко Ник"
<futuri.us/> dc:creator "Коробко Ник"
<futuri.us/> dc:language ru-RU
<futuri.us/> dc:rights by-nc-sa
Краткое описание моего сайта при помощи пространства имен «Дублинское Ядро». Но о нем мы поговорим позднее.

В итоге:
  • RDF используется для описания знаний
  • описывается тройками значений «подлежащие-сказуемое-объект»
  • имеет несколько форм записи: XML и N3
  • Использует для значение литералы или Уникальные Идентификаторы (URI)

Полезно:


Все это с моего блога
Tags:
Hubs:
+32
Comments 71
Comments Comments 71

Articles