Семантическая Сеть

индекс
94,74

RDF for dummies

С этой статьи я начинаю совй цикл постов "для новичков" где максимально популярно растолкую понятия веб 3.0. В последствии все статьи перекочуют в вики и будут "изданы" мною в виде PDF книги.

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

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

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


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

Пока понятно? Нет?
<strong>@prefix</strong> - подгружаем пространство имен (тут хранятся условные всякие описания, которые понятны компьютеру, потом расскажу по-подробнее)
<strong> :john a :Person</strong> некто Джон человек (безусловно)
: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 : <<a href="http://www.example.org/&gt;" title="http://www.example.org/&amp;gt;">http://www.example.org/></a>
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> a :Website
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> dc:title "Футуриус"
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> dc:contributor "Коробко Ник"
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> dc:creator "Коробко Ник"
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> dc:language ru-RU
<<a href="http://futuri.us/&gt;" title="http://futuri.us/&amp;gt;">http://futuri.us/></a> dc:rights by-nc-sa
Краткое описание моего сайта при помощи пространства имен "Дублинское Ядро". Но о нем мы поговорим позднее.

В итоге:

  • RDF используется для описания знаний

  • описывается тройками значений "подлежащие-сказуемое-объект"

  • имеет несколько форм записи: XML и N3

  • Использует для значение литералы или Уникальные Идентификаторы (URI)


Полезно:


Все это с моего блога
+32
24 декабря 2007, 02:26
36

комментарии (67)

+1
proxiper #
Спасибо! Хорошо, что с примерами, а то всё, что попадалось раньше только в каких-то пространственных описаниях (специально, впрочем, информацию не искал).

Какие темы планируете брать дальше? И как насчет описания того, как это можно использовать уже сейчас, не для галочки, а для дела?
+1
Africa #
"Какие темы планируете брать дальше? И как насчет описания того, как это можно использовать уже сейчас, не для галочки, а для дела?"
Вот с этим у семнатистов как раз большая проблема. Мне это любопытно и уже несколько раз брался понять, а в чём польза, где практическое применение. И ничиго. Фонтаны перспектив, удивительных возможностей, примитивные примеры... скучно.
Вообще мне это очень сильно напоминает благополучно почившие в бозе экспертные системы. От них также много ждали, а получили ноль. Может где-то и используются, но это не то, что ожидалось.
Моё мнение, семантик веб - это пузырь, поддерживаемый слепыми интузиастами и не слепыми и расчётливыми исследователями, собирающих пыльцу, пока цветёт и никто не понял, что это обман.

Если ошибаюсь - хоть кто-нибудь меня разубедите.
+1
shiko_1st #
Эксперные системы, конечно же, используются. Например, для освоения грантов, выделяемых на их создание :-)
0
morhveus #
Спасибо, что напомнили про экспертные системы, а то у меня после прочтения возникло лёгкое дежавю.
0
Klaus #
Yandex новости это уже использование семантической сети
а пресс-портреты - уж и подавно
0
Klaus #
>Какие темы планируете брать дальше?
А какие вы бы хотели услышать?
0
proxiper #
Ну вот видимо многим будет интересно что-то в духе «Примеры практического применения семантических сетей сейчас и в будущем». Сорри за сложность темы)
0
Klaus #
Ок, ждите. Сначала напишу про общие технологии, что б можно было оперировать понятиями и все будет )
0
proxiper #
Спасибо. Ждем с нетерпением
+1
404 #
Небольшая нескладуха: Отца Джона зовут Генрих, Джейн сестра Ричарда. Каким образом Джейн - сестра отца Джона?
0
youmee #
Henrich Richard - Генрих, это походу фамилия :) я тоже сначала не понял) но гугл помог:)
0
Klaus #
нет, тут действительно моя ошибка )
0
youmee #
:)) бывает..
но статья интересная
0
Klaus #
Спасибо: буду стараться
–2
cool9 #
не для чайников( не понял зачем это все надо
+3
xabk #
> описывается тройками значений "подлежащие-прилагательное-сказуемое"

На английском (вики/en) — [..] in the form of subject-predicate-object expressions. [..]
Subject — подлежащее, predicate — сказуемое, object — дополнение.. где прилагательное?:)
Исправьте, пожалуйста.

А в целом статья нормальная, спасибо:)
0
Mastyf #
А насколько такой формат быстрее (N3) парсить чем XML?
0
korchasa #
В любом случае парсер узкозаточенный на N3 будет быстрее чем XML'евский, из-за меньшего словаря, и более простых правил разделения данных (пробелы и концы узлов).
0
StranNIC #
Полезно... будем ждать продолжения :)
0
kivsiak #
Реальные примеры использования можно у мозиллы посмотреть. Геко как я понял имеет встроенную поддержку RDF. XUL приложения в качестве источников данных во всю его используют.
0
Klaus #
На сколько я смотрел, РДФ в Мозилле хранит журнал.
0
glader #
Я делал сайт с хранением информации в таких тройках. Очень быстро начинаются проблемы с необходимостью хранения 4-х позиций и т.д. Например "Студия" "выпустила_фильм" "фильм" "в_таком_то_году".
+2
edelweard #
Это можно заменить на 2 тройки:
"Студия" "выпустилаФильм" "Фильм"
"Фильм" "вышел" "вТакомТоГоду"
Кстати, с точки зрения организации хранения данных это будет, пожалуй, и более логично.
0
neithere #
Вот другие примеры:
- В таком-то году Джон был другом Тома.
- Если пойдет дождь И отключат электричество, Мэри скажет "ой".
Иногда выражение имеет смысл только в определенном контексте (1..n дополнительных условий).
Здесь не обойтись триплетом, к сожалению.
0
edelweard #
Ну да, в таких сложных фразах, конечно, тройкой не обойдёшься. Однако RDF и не предполагает возможности полного семантического разбора естественно-языковых конструкций. Речь идёт об удобном методе хранения данных, когда вместо пары имя-значение используется тройка имя-отношение-значение.
0
neithere #
Дело не в языковых конструкциях, а в том, что они описывают. К сожалению, я не вижу, как на триплеты разложить такую простую фразу как "Джон видел Мэри в 2004 году". Возможно, есть смысл триплет заменить на квадруплет: объект, предикат, субъект и контекст. В этом случае контекст будет массивом других выражений. Возможно, мы как-то так и мыслим...
0
Glebks #
Тут как-раз и проявляется разница между RDF и relational DB. С RDF должно быть так:

Студия выпустила_фильм фильмID
фильмID называется Ирония_Судьбы_3
фильмID выпущен_в 2008
0
Daymz #
Ещё есть хороший формат Turtle (гуглить "RDF Turtle").

В нём ещё сильнее проявляется близость к LISP, благодаря его формату для rdf:first/rdf:rest (они же лисповские CAR и CDR).
0
amyot #
Разъяснитие мне - чайнику для начала что такое WEB 3.0
0
Maksym #
Наверное, то до чего расширится Web2.0 :)
+1
antono #
Это когда роботы общаются с роботами :)
0
flint #
Просто громкое модное слово. Для привлечения внимания в основном
0
Klaus #
Не согласен. Кому как. Я использую, чтобы описать новый виток развития сети.
+1
Maksym #
Спасибо. Очень интересная и полезная информация. Ради такого и читаю Хабр.

Но чтобы это стандарт начал повсеместно использоваться — его должны в первую очередь начать обрабатывать роботы поисковых систем. Есть ли инфа о поддержке с их стороны?
–2
ayavryk #
Ну XML тоже поисковой машине не скормишь. Если конечно не поплясать с бубном.
0
Maksym #
Вопрос в том, когда она начнет его кушать сама... И соответственно появится смысл вставлять в свой контен описание инфы в формате RDF.
0
ayavryk #
Не раньше чем появятся сайты активно использующие RDF.
Во всяком случае Яндекс и Рэмблер не парсят JS. И все вместе с Google не понимают XSLT.
0
Maksym #
Согласен. Тут рекурсивная зависимость. Но стандарт появился — "значит это кому-нибудь нужно"(с) и процесс наверняка скоро начнет набирать обороты.
0
Klaus #
А вы просто включайте.
Это как с Линукосм "не перейду на него, пока не будут писать в основном под него". разработчики: "Не будем писать под линукс, пока все не перейдут"
0
Klaus #
Поисковики уже читают микроформаты
0
antono #
Какие например поисковики читают? И какие форматы?
0
Klaus #
гугл читает на сколько я знаю.
–1
antono #
Вообще грех не вычитать такое, конечно... Но не видел еще достоверных фактов, подтверждающих это.
0
semo #
Пролог?
А пацаны то и не знают.
0
Maksym #
Почему не знают? Похоже они как раз и хотят превратить сеть в распределенную базу знаний.
–1
semo #
Ну да. Проще сделать свой ЛИСПед чем поменять колесики на старом :)
–1
Maksym #
:D Классный каламбурег! :)
Помимо языков программирования, заточенных именно под логику предикатов, есть еще масса реализаций Rules Engines (знания описываются на RuleML и т.п.) для более распространенных технологий(типа Java или Net), которые тоже неплохо ложатся на обработку RDF.
0
beshenov #
Prolog, во-первых, оперирует предложениями более сложной структуры, а, во вторых, включает в себя не только схему описания отношений, но и схему их анализа. Не стоит путать декларативный язык программирования (Prolog) с языком описания фактов (RDF).
0
kulakowka #
и зачем все это вообще нужно? я тоже не понял ничего 6)
0
kronos #
Мне кажецо что то подобное широко применяется в экспертных системах. Почитайте про них, наверно понимание придет :)
0
kronos #
Немного похоже на то как турбо пролог сохранял факты.
0
bag #
В самом начале опечаточка "совй цикл".
И спасибо за разъяснения, но все-равно материал "не для новичков", имхо.
0
Klaus #
Ну нужно знать что такое XML и все такое. А так, поняла даже моя подруга - журналистка.
+1
edelweard #
Граждане из комментариев, это материал для новичков в RDF. То есть для тех, кто не слышал или мало слышал о RDF, но хочет узнать его поближе. Эта статья не для тех, кто ничего не хочет знать вообще. Вы не поняли или вам показалось не интересно, — можете идти дальше, значит, статья не для вас.

Автору большое спасибо. Не критикуя постов другого рода, всё же очень радуюсь появлению вот таких вот конкретных статей по существу.
0
ESQUELETO #
Автору спасибо, но надеюсь, это не выживет... Это личное мнение. Я терпеть не могу функциональное программирование и базы знаний. Хотя, декларативные БЗ не такие уж мозголомальные штуки.
0
Gospodin #
Сие описанное местами очень напоминает язык Пролог. Пролог сам по себе штука мощная и продуманная, НО(большое но) в нем все завязанно на рекурсии, т.е. сам интерпритатор рекурсивно проверяет факты и строит новые отношения так и стоящие программы без рекурсии организовать не получится средствами Пролога, вот и имеем рекурсивную рекурсию, которая работает не очень быстро, но если это вкурить то нужная логика реализуется весьма просто.
–1
rg_software #
Не хочу устраивать холивар, но кто-нибудь вообще верит, что семантик веб будет? Я вот не верю в упор! Да никто не будет аккуратно прописывать метаданные. Или будет прописывать не так, как нужно, а так, как выгодно. Естественно, можно написать про свой сайт, что он лучший в мире, что автомобили "жигули" — вершина мысли, что на сайте можно скачать видео, варез, музыку, фотографии — а на самом деле там лишь домашний хомяк васи пупкина... Т.е. в теории я понимаю, что так можно разметить страничку, и если в пределах одного (ну, одного десятка) сайтов эта концепция будет реализована — это ОК, в это верю. Но весь веб на семантику не переедет, и гугль по метаданным искать не будет. А если будет — то напрасно :)
–1
Helg #
Согласен. Повторится история с keywords и description :)
0
Klaus #
А это не будет так использоваться, это для социального графа будет использоваться.
+2
rassadin #
Для всех неверующих — очнитесь — оно уже рядом.

Вы, наверное, слышали и даже пользуетесь RSS и FOAF, а это и есть первые словари RDF, т.е это информация, уже описанная по правилам семантичкого веба.
0
antono #
Еще один интересный пример - http://ontoworld.org/wiki/Berlin
+2
sintez #
Спасибо, полезная статья, ждем продолжения! Я как раз сейчас диплом начинаю писать, суть которого в создании semantic-web проекта.
+1
mr_Engineer #
Отличная статья. Натолкнула на мысль о необходимости создания фреймворка для работы с RDF потоками. Что то вроде Lisp on rails или Prolog on rails по тому же принципу что Ruby on rails и Grails. В итоге к уже проработанным и оттестированным Java компонентам, отвечающим за работу сервисов, будут добавлены логические компоненты с формальным описанием решения для задачи.
0
Klaus #
Jena/Joseci
если я не ошибаюсь
+1
mr_Engineer #
http://jena.sourceforge.net
ага
0
ulfurinn #
> Самое сильное отличие RDF от XML заключается в том…

Вы сейчас сравниваете круглое с красным. RDF ортогонален XML'у, у которого своей собственной семантики практически нет, один только голый синтаксис. И это не "синтаксис похож", а тот самый синтаксис и есть, плюс семантика RDF.
0
bugrimov #
Существует принципиальная разница между двумя понятиями: семантическая сеть (Semantic Network) и семантическая паутина (Semantic Web).
В данной статье идет как раз подмена понятий, описана семантическя паутина, а выдается она как семантическая сеть.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.