Вам довелось узнать что такое RDF.
Вам доводилось читать в моем блоге по каких-то страшных FOAF, SIOC, SKOS, DOAP...
Настало время узнать, что это такое, и зачем я рассказывал про RDF.
Начнем?
FOAF
Friend Of AFriend — онтология описания человека (грубо говоря), точнее личности. Короче, обычная анкета, которую вы заполняли на сайтах миллион раз. Содержит информацию об имени, дате рождения, работе, контактах, знакомствах.Он является отправной точкой в Социальном Графе. Давайте разберемся по-подробнее? Для большей понятливости, мы с вами его придумаем, заново, что б вы поняли всю логику и увидели, как тут все продумано и почему все так, а не эдак. К тому же это будет удобно людям, не читающим XML.
У нас есть человек (в данном случае я отдал себя на эксперимент, ради науки)
Итак, кто я?
Имя: Николай Коробко
Почта: admin@futuri.us
Домашняя страница: futuri.us
Ник: Nicholass
Фотография: img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg
Интересы:
Знакомства:
Это далек но не полный список, конечно, но для понятливости хватит.
Помните N3? давайте попробуем применить?
По-хорошему далее я должен создать аналогичный список для моих знакомств. Но это немного сложновато, лучше читабельно для человека, но хуже — для машины.
Для этих целей и был разработан FOAF.
Не дваваясь в подробности пространства имен, запишем информацию обо мне (пока только обо мне) в виде FOAF:
Разберем построчно?
Тут как раз и происходит подключение тех самых пространств имен. xmlns это не что иное, как XML Name Space (Пространство Имен XML). Мы подключили RDF, FOAF и RDF-schema.
RDF для того, что б создать документ RDF.
FOAF понятно для чего :)
RDF-schema это формат оформления RDF., поскольку FOAF это тоже RDF документ, машина должна проверить его оформление, согласно словарю RDF.
Эта строчка указывает, что мы описываем человека. Она равносильна „Николай Коробко A :person“. Это контейнер описания личности. „Почему он нужен, ведь мы используем FOAF, это и есть описание человека!?“ гневно прокомментируете вы, но все впереди, все продумано. смотрите дальше.
тут кажется вся ясно. Имя: Николай Коробко.
Общую структуру поняли?
Вначале мы объявили foaf:Person, это в N3 у нас субъект, имя тега — будет предикатом, а содержание — объектом. На пример. foaf:Person foaf:name „Коробко Николай“. rdf:resource используется что б передать в качестве объекта не строку, а URI.
Итак, теперь мы присвоили персоне имя, почту (для защиты от спама он иногда кодируется в sha1), домашнюю страничку, ник, и некое описание (foaf:depiction это поле может содержать любую информацию о вас, в данном случае это адрес фотографии).
Помните, что RDF у нас обладает вложенностью? То есть объектом может быть другая тройка значений. В XML это показывается просто вложением тегов.
Итак, создадим для персоны интересы, для этого используем тег foaf:interest и вкладываем в него мои интересы. Теперь тройки будут такие foaf:interest df:Description (rdf:about rdfs:label). То бишь уПерсоныЕстьинтересы: Интерес :(URI и описание интереса). Смотрим:
Примерно так. Такая же вложенность и со знакомствами, но тут мы вспомним, зачем мы объявляем foaf:Person. Ведь знакомы мы с людьми, то есть объект будет содержать вложенную персону. Еще один foaf:Person. Я думаю, многие догадались как это будет выглядеть:
Осталось собрать воедино весь документ.
Вуаля! теперь, я надеюсь, все поняли не только FOAF, но и логику составления RDF документов в формате XML.
Д/З
Попробуйте создать свой FOAF, а потом проверьте что получилось. Ниже в ссылках приведен foaf-a-matic, он вам в этом поможет.
Материалы взяты с моего блога.
Напишите, о чем вам еще будет интересно услышать в разделе „for dummies“ и я постараюсь написать.
Вам доводилось читать в моем блоге по каких-то страшных FOAF, SIOC, SKOS, DOAP...
Настало время узнать, что это такое, и зачем я рассказывал про RDF.
Начнем?
FOAF
Friend Of AFriend — онтология описания человека (грубо говоря), точнее личности. Короче, обычная анкета, которую вы заполняли на сайтах миллион раз. Содержит информацию об имени, дате рождения, работе, контактах, знакомствах.Он является отправной точкой в Социальном Графе. Давайте разберемся по-подробнее? Для большей понятливости, мы с вами его придумаем, заново, что б вы поняли всю логику и увидели, как тут все продумано и почему все так, а не эдак. К тому же это будет удобно людям, не читающим XML.
У нас есть человек (в данном случае я отдал себя на эксперимент, ради науки)
Итак, кто я?
Имя: Николай Коробко
Почта: admin@futuri.us
Домашняя страница: futuri.us
Ник: Nicholass
Фотография: img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg
Интересы:
- Веб 3.0
- Семнтическая сеть
Знакомства:
- Имя: Миша Квакин
Домашняя страница: design-freak.com
Интересы:
- Дизайн
- Юзабилити
- Имя: Роман Рыбальченко
Почта: **************
Ник: Cooluck
Домашняя страница: blog.cooluck.kiev.ua
Интересы:
- SEO
- SMO
Это далек но не полный список, конечно, но для понятливости хватит.
Помните N3? давайте попробуем применить?
@prefix <xmlns.com/foaf/0.1/>
Николай Коробко A :person
Николай Коробко :hasMail <admin@futuri.us>
Николай Коробко :hasHomepage <futuri.us>
Николай Коробко :hasNik «Nicholass»
Николай Коробко «hasPhoto <img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg>
Николай Коробко :hasInterest „Веб 3.0“
Николай Коробко :hasInterest „Семнтическая сеть“
Николай Коробко :knows :people
(на самом деле эта схема не работает!)
По-хорошему далее я должен создать аналогичный список для моих знакомств. Но это немного сложновато, лучше читабельно для человека, но хуже — для машины.
Для этих целей и был разработан FOAF.
Интерлюдия: Пространства имен
Пространство имен (в XML) определение тегов, атрибутов и их расположения относительно друг друга в документе.
Например возьмем HTML. Списки. В пространстве имен четко сказано, что <ul> может содержать одно или более <li>, а так ж другие элементы. Или в том же пространстве имен четко сказано, что <head> потомок <body> и что <head> не может содержать <img>.
Не дваваясь в подробности пространства имен, запишем информацию обо мне (пока только обо мне) в виде FOAF:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <foaf:Person rdf:about="#JW"> <foaf:name>Коробко Николай</foaf:name> <foaf:mbox rdf:resource="mailto:admin@futuri.us" /> <foaf:homepage rdf:resource="http://futuri.us/" /> <foaf:nick>Niholass</foaf:nick> <foaf:depiction rdf:resource="http://img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg" />
Разберем построчно?
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <foaf:Person rdf:about="#JW">
Тут как раз и происходит подключение тех самых пространств имен. xmlns это не что иное, как XML Name Space (Пространство Имен XML). Мы подключили RDF, FOAF и RDF-schema.
RDF для того, что б создать документ RDF.
FOAF понятно для чего :)
RDF-schema это формат оформления RDF., поскольку FOAF это тоже RDF документ, машина должна проверить его оформление, согласно словарю RDF.
<foaf:Person rdf:about="#JW">
Эта строчка указывает, что мы описываем человека. Она равносильна „Николай Коробко A :person“. Это контейнер описания личности. „Почему он нужен, ведь мы используем FOAF, это и есть описание человека!?“ гневно прокомментируете вы, но все впереди, все продумано. смотрите дальше.
<foaf:name>Коробко Николай</foaf:name>
Кстати, забыл сказать, приставка в теге (foaf:) указывает из какого пространства имен мы его берем, потмоу что есть совпадения, к примеру в Дублинском Ядре (о нем позже) и в HTML есть элемент title.
тут кажется вся ясно. Имя: Николай Коробко.
<foaf:mbox rdf:resource="mailto:admin@futuri.us" /> <foaf:homepage rdf:resource="http://futuri.us/" /> <foaf:nick>Niholass</foaf:nick> <foaf:depiction rdf:resource="http://img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg" />
Общую структуру поняли?
Вначале мы объявили foaf:Person, это в N3 у нас субъект, имя тега — будет предикатом, а содержание — объектом. На пример. foaf:Person foaf:name „Коробко Николай“. rdf:resource используется что б передать в качестве объекта не строку, а URI.
Итак, теперь мы присвоили персоне имя, почту (для защиты от спама он иногда кодируется в sha1), домашнюю страничку, ник, и некое описание (foaf:depiction это поле может содержать любую информацию о вас, в данном случае это адрес фотографии).
Помните, что RDF у нас обладает вложенностью? То есть объектом может быть другая тройка значений. В XML это показывается просто вложением тегов.
Итак, создадим для персоны интересы, для этого используем тег foaf:interest и вкладываем в него мои интересы. Теперь тройки будут такие foaf:interest df:Description (rdf:about rdfs:label). То бишь уПерсоныЕстьинтересы: Интерес :(URI и описание интереса). Смотрим:
<foaf:interest> <rdf:Description rdf:about="http://futuri.us" rdfs:label="Web 3.0" /> </foaf:interest> <foaf:interest> <rdf:Description rdf:about="http://futuri.us" rdfs:label="Семантическая сеть" /> </foaf:interest>
Примерно так. Такая же вложенность и со знакомствами, но тут мы вспомним, зачем мы объявляем foaf:Person. Ведь знакомы мы с людьми, то есть объект будет содержать вложенную персону. Еще один foaf:Person. Я думаю, многие догадались как это будет выглядеть:
<foaf:knows> <foaf:Person> <foaf:name>Миша Квакин</foaf:name> <foaf:homepage rdf:resource="http://design-freak.com/" /> <rdf:Description rdf:about="http://www.google.com.ua/search?q=design" rdfs:label="Дизайн" /> <rdf:Description rdf:about="http://www.google.com.ua/search?q=Юзабилити" rdfs:label="Юзабилити" /> </foaf:Person> <foaf:Person> <foaf:name>Роман Рыбальченко</foaf:name> <foaf:homepage rdf:resource="http://cooluck.kiev.ua" /> <foaf:nick>Cooluck</foaf:nick> <rdf:Description rdf:about="http://www.google.com.ua/search?q=SEO" rdfs:label="SEO" /> </foaf:Person> </foaf:knows>
Осталось собрать воедино весь документ.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <foaf:Person rdf:about="#JW"> <foaf:name>Коробко Николай</foaf:name> <foaf:mbox rdf:resource="mailto:admin@futuri.us" /> <foaf:homepage rdf:resource="http://futuri.us/" /> <foaf:nick>Niholass</foaf:nick> <foaf:depiction rdf:resource="http://img-fotki.yandex.ru/get/9/w88lf.8/0_9266_a7b0b5d8_L.jpg" /> <foaf:interest> <rdf:Description rdf:about="http://futuri.us" rdfs:label="Web 3.0" /> </foaf:interest> <foaf:knows> <foaf:Person> <foaf:name>Миша Квакин</foaf:name> <foaf:homepage rdf:resource="http://design-freak.com/" /> <rdf:Description rdf:about="http://www.google.com.ua/search?q=design" rdfs:label="Дизайн" /> </foaf:Person> <foaf:Person> <foaf:name>Роман Рыбальченко</foaf:name> <foaf:homepage rdf:resource="http://cooluck.kiev.ua" /> <rdf:Description rdf:about="http://www.google.com.ua/search?q=SEO" rdfs:label="SEO" /> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF>
Вуаля! теперь, я надеюсь, все поняли не только FOAF, но и логику составления RDF документов в формате XML.
Д/З
Попробуйте создать свой FOAF, а потом проверьте что получилось. Ниже в ссылках приведен foaf-a-matic, он вам в этом поможет.
- Страница проекта FOAF
- FOAF Спецификация
- RDFweb тут находиться FOAF wiki
- FOAFexplorer превращает FOAF в HTML
- FOAF+DOAC Project Homepage
- Advanced FOAF Explorer другой FOAF Browser
- FOAFnaut SVG FOAF Browser
- FoaFSpace FOAF поисковик
- FOAFiler FOAF поисковик #2
- FOAF-a-matic создание своего FOAF
- FOAFgen преобразование LDIF/vCard в FOAF
- XHTML Friends Network микроформат родственный FOAF
- FOAF dataset
Материалы взяты с моего блога.
Напишите, о чем вам еще будет интересно услышать в разделе „for dummies“ и я постараюсь написать.