« Семантическая сеть. Часть 2 | Семантическая сеть. Часть 4 » |
Семантическая сеть. Часть 3
Я продолжаю рассказ о технологиях, которые составляют ядро Семантической Паутины. В прошлый раз я завершил краткое введение в RDF и рассказал о проекте Dublin core. Сегодня фокус внимания будет посвящен FOAF, XFN, openid, социальным сетям.Люди – социальные существа: любят жить в коллективе, общаться, распространять сплетни и обсуждать других. К этому можно относиться по разному: осуждать бездельников, которые тратят свое или (что еще ужаснее) время вашего работодателя на бесконечных “одноклассниках” или “в-контактах”. Можно восхищаться новыми возможностями открытого обсуждения и обмена опытом. А можно просто делать деньги. Не секрет, что львиная доля стоимости любого сайта “социальной сети” – это база его участников, и чем она больше, чем полнее и тем за большие деньги ее можно продать поставщикам рекламы. Действительно, любой рекламодатель отдаст свою правую руку за возможность получить миллионы почтовых адресов или личных сведений о своих будущих клиентах, да еще отсортированные по интересам, возрасту, кругу общения. В нашей стране эти процессы, мягко говоря, еще не выражены, но рано или поздно нам придется последовать примеру России, не говоря уже о дальнем зарубежье.
В начале 2007 года мне попался на глаза прогноз Ричарда Мак-Мануса (очень толковый блоггер http://www.readwriteweb.com/, есть переводы его постов и на русском языке). Он рассказывал о том, что прошедший год (2006) был годом пика социальных сетей, был временем, когда крупные компании выкладывали астрономические суммы за акции подобных “виртуальных компаний”. Писал о том, что в следующем году люди устанут от десятков сетей, стоимость акций должна упасть, в худшем случае фокус внимания перейдет от сетей общего назначения к специализированным сетям (для автолюбителей, для любителей хомячков и т.д.). В конце концов, социальные сети должны приносить пользу в реальном мире, а не отнимать дорогое время на болтовню (как я понимаю людей, которые во время работы отключают телефоны, icq и прочие цветки на могиле рабочего времени). В мире социальных сетей идет постоянный процесс “перемешивания”. Предположим, что вы зарегистрировались на некотором сайте, проводили там время, писали сообщения, завели круг друзей (точнее “виртуальных знакомых”), затем случилось страшное: “поменялась политика партии”, сервера стали “глючить” или просто надоело. Вы уходите на другой сайт (другую социальную сеть) и пытаетесь перетянуть за собой знакомых. Естественно, что часть людей не пойдет за вами, а останется на старом сервере – значит, сеть становится более раздробленной, затраты времени на поддержание “активной жизни” на нескольких сайтах становятся все более значительными. Выходом из сложившейся проблемы могут быть только … Нет, не построить мега-сеть, которая объединит все сети и станет сетью сетей, и придет Большой Брат (посвящается “1984” Оруэлла). Выход более простой и одновременно очень не приятный для компаний владельцев сетей-миллионников – согласовать и реализовать механизмы для переноса данных между сетями, создать средства для связывания десятков разрозненных учетных записей, сведений в блогах (как автономных, так и блого-платформах, вроде blogger, livejournal). Почему это плохо для владельцев крупных сетей? Повышение мобильности клиентов и возможность “за пару кликов мышью” перенести все свои персональные сведения и круг знакомств с одной сети в другую может за пару недель сделать из вчерашнего лидера рынка “голого короля”. Не зря же, в популярных российских социальных сетях “сами знаете, про кого я говорю” нет поддержки RSS и микроформатов. С другой стороны, альтернативы уже нет: компании-новички, желающие выйти на рынок социальных сетей и откусить свой кусочек пирога, должны предложить подобную функциональность, иначе им никогда не набрать приемлемой “начальной массы”, а значит не привлечь инвестиций и не продать рекламу. А, учитывая, что за их спиной маячит Его Величество google (я говорю про выступление в первых числах февраля этого года Brad-а Fitzpatrick-а, основателя ЖивогоЖурнала, работающего сейчас в google на проектом SocialGraph API), то пришло время менять подход к бизнесу. Скользким моментом во всех этих новомодных технологиях остается вопрос “доверия” и “идентификации людей”, также у каждого человека есть множество интересов или “ролей”, которые он играет на разных сайтах или сообществах и смешивать эти понятия в Супер-Граф он не хочет. Вопросов пока больше чем ответов, с другой стороны нас никто никуда не гонит и можно наблюдать со стороны за приключениями храброго Brad-а Fitzpatrick-а. На этом я закончу затянувшееся вступление и перейду к “немного попрограммировать”.
FOAF - это онтология (словарь терминов), в рамках которых мы можем описывать понятным для компьютера образом сведения о себе, о своих друзьях и отношениях между ними. Далее я привожу пример простейшего RDF файла (FOAF – расширением над RDF), в нем указаны сведения о некоторой персоне, адресе персональной страницы и адресе электронной почты.
<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>
<foaf:name>Вася Тапкин</foaf:name>
<foaf:mbox rdf:resource="mailto:vasyano@site.ru" />
<foaf:homepage rdf:resource="http://www.tapkin.com/" />
<foaf:nick>tapkin</foaf:nick>
</foaf:Person>
</rdf:RDF>
<foaf:name xml:lang="ru">Василий Тапкин</foaf:name>
<foaf:mbox_sha1sum>5dff4261fb72b5a6eacbf94a9faddfba2518ba25</foaf:mbox_sha1sum>
<foaf:depiction rdf:resource="http://fotka.ru/vasya.jpg" />
<foaf:Person>
<foaf:name>Вася Тапкин</foaf:name>
<foaf:depiction>
<foaf:Image rdf:about="http://fotki.ru/kanary.jpg">
<dc:title>То как Вася с Ленкой отдыхают на Канарах</dc:title>
<foaf:depicts>
<foaf:Person>
<foaf:name>Ленка</foaf:name>
</foaf:Person>
</foaf:depicts>
</foaf:Image>
</foaf:depiction>
</foaf:Person>
<foaf:weblog rdf:resource="http://my-personal-page.com/blog"/>
<foaf:homepage rdf:resource="http://my-personal-page.com/vasya"/>
<foaf:workplaceHomepage rdf:resource="http://fabrika.com"/>
<foaf:workInfoHomepage rdf:resource="http://fabrika.com/director"/>
<foaf:schoolHomepage rdf:resource="http://school_num_1.com"/>
<foaf:page>
<foaf:Document rdf:about="http://blackzorro.livejournal.com/profile">
<dc:title>LiveJournal.com Profile</dc:title>
<dc:description>Full LiveJournal.com.</dc:description>
</foaf:Document>
</foaf:page>
<foaf:holdsAccount>
<foaf:OnlineAccount>
<foaf:accountServiceHomepage rdf:resource="http://www.facebook.com/" />
<foaf:accountName>УЧЕТНАЯ_ЗАПИСЬ</foaf:accountName>
</foaf:OnlineAccount>
</foaf:holdsAccount>
<foaf:holdsAccount>
<foaf:OnlineAccount>
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/OnlineChatAccount"/>
<foaf:accountServiceHomepage rdf:resource="http://chat.ru"/>
<foaf:accountName>tapkin</foaf:accountName>
</foaf:OnlineAccount>
</foaf:holdsAccount>
<foaf:based_near>
<geo:Point geo:lat="17.5" geo:long="22.5"/>
</foaf:based_near>
<foaf:Group>
<foaf:name>Любители хомячков</foaf:name>
<foaf:member>
<foaf:Person>
<foaf:name>Вася Тапкин</foaf:name>
<foaf:homepage rdf:resource="http://tapkin.ru"/>
</foaf:Person>
<foaf:Person>
<foaf:name>Петя Пупкин</foaf:name>
<foaf:homepage rdf:resource="http://pupkin.ru"/>
</foaf:Person>
</foaf:member>
</foaf:Group>
<foaf:Person rdf:nodeID="tapkin">
<!-- информация о Тапкине -->
</foaf:Person>
<foaf:Group>
<!-- теперь сошлемся на ранее созданный узел -->
<foaf:member rdf:nodeID="tapkin"/>
</foaf:Group>
<foaf:Person rdf:nodeID="tapkin">
<foaf:name>Тапкин</foaf:name>
<rdfs:seeAlso rdf:resource="http://site.ru/tapkin.rdf"/>
</foaf:Person>
<foaf:Person rdf:nodeID="tapkin">
<foaf:name>Вася Тапкин</foaf:name>
</foaf:Person>
<foaf:Person>
<foaf:name>Петя Пупкин</foaf:name>
<foaf:knows rdf:nodeID="tapkin"/>
<foaf:knows>
<foaf:Person>
<foaf:name>Лена Кошкина</foaf:name>
</foaf:Person>
</foaf:knows>
</foaf:Person>
Предположим, что вы заинтересовались FOAF и хотите внедрить эту информацию на свою персональную страницу. Начнем мы с того, что заявим свое авторство для некоторой страницы. Для этого вы может в FOAF файле перечислить адреса тех ресурсов, автором которых вы являетесь:
<foaf:Person>
<foaf:mbox rdf:resource="mailto:tapkin@mail.ru" />
<foaf:made rdf:resource="http://mega-site.ru" />
<foaf:made rdf:resource="" />
</foaf:Person>
<link rel="meta" type="application/rdf+xml" title="FOAF" href="http://site.ru/myfoaf.rdf" />
<meta name="foaf:maker" content="foaf:mbox mailto:tapkin@mail.ru " />
<meta name="foaf:maker" content="foaf:mbox_sha1sum '5dff4261fb72b5a6eacbf94a9faddfba2518ba25' />
<rss:channel rdf:about="http://mega-site.ru/feed">
<foaf:maker>
<foaf:Person>
<foaf:mbox rdf:resource="mailto:tapkin@mail.ru" />
</foaf:Person>
</foaf:maker>
</rss:channel>
В следующий раз я продолжу рассказ о технологиях Semantic Web и перейду к XFN, openid. Попробую создать небольшое php приложение “вытягивающее” описанные в FOAF данные. Еще мы “поиграем” со специальным языком запросов к RDF-документам SPARQL.
« Семантическая сеть. Часть 2 | Семантическая сеть. Часть 4 » |