Przyjaciel mojego przyjaciela – czyli o sieciach społecznych w Sieci Semantycznej
Media społeczne stały się tak popularne w obecnym Internecie, że szczególnie młodsi użytkownicy nie wyobrażają sobie Sieci bez serwisów społecznościowych typu Nasza Klasa, Facebook, Blip, Twitter, i wiele wiele innych. W czasie prowadzonych przeze mnie badan nad semantycznymi bibliotekami cyfrowymi, wielokrotnie spotykałem się ze stanowiskiem, że w chwili obecnej system, który chce zyskać na popluralności musi umożliwiać użytkownikom połączenie się w sieć społeczną z ich znajomymi, i np. ustawienie swojego zdjęcia/awatara do profilu; pierwszymi pytaniami, które padały podczas prezentacji prototypów kolejnych systemów były: "gdzie mogę dodać znajomych ?". Jak zapewne pamiętacie z pierwszych artykułów ze Szkoły Web 3.0, pisałem, że Web 3.0 jest etapem rozwoju Sieci bazującym m.in. na sieciach społecznych i Sieci Semantycznej. Czas więc na omówienie lekkiej ontologii FOAF (Friend of a Friend), która umożliwia przedstawianie zależności istniejących w sieci społecznej w postaci grafy RDF.
Pojęcia zdefiniowane w ontologii FOAF
Zgodnie z ideą tworzenia lekkich ontologii, FOAF koncentruje się na podstawowych pojęciach pozwalających opisać nasz profil użytkownika w systemach społecznościowych (i nie tylko). FOAF został zdefiniowany w 2002 roku i od tamtej pory jego podstawowe pojęcia nie zmieniły się znacząco; doszło jednak kilka nowych właściwości odpowiadające zmianom w kierunku Web 2.0 jakim podlegała Sieć.
Do podstawowych pojęć zdefiniowanych przez FOAF należą:
- klasa
foaf:Person, która definiuje użytkownika, którego profil społeczny opisujemy. - klasa
foaf:Agent, będąca nad klasą foaf:Person, umożliwia stworzenie profilu nie tylko dla osób, ale również dla usług, agentów, itp. -
foaf:knowsjest właściwością za pomocą której budujemy skierowany graf powiązań pomiędzy użytkownikami, czyli sieć społeczną. Sam foaf:knows nie wyraża ani stopnia ani rodzaju znajomości: może oznaczać od "widziałem tę osobę w telewizji" do "jesteśmy najlepszymi kumplami na świecie"; systemy bazujące na FOAF mają możliwość rozszerzenia słownika o właściwości o bardziej konkretnych znaczeniach. - właściwość
foaf:mboxumożliwia zdefiniowanie adresu email użytkownika; podajemy go w postaci [mbox:moj.adres@poczta.pl]; foaf:mbox jest zdefiniowana jako właściwość odwrotnie funkcyjna (ang. IFP - inverse functional property), co umożliwia identyfikowanie i łączenie wielu profili FOAF należących do tej samej osoby. Ponieważ, nie zawsze chcemy ujawniać nasz adres email, szczególnie jeżeli dany dokument FOAF (czyli dokument RDF z danymi FOAF) jest ogólnie dostępny, możemy skorzystać z właściwościfoaf:mbox_sha1sum, w której zapisujemy wynik funkcji SHA1SUM na naszym adresie email (w formaciembox:*); ta właściwość jest również zdefiniowana jako IFP. - FOAF umożliwia również na podanie naszego imienia (
foaf:firstName,foaf:givenname) i nazwiska (foaf:surname,foaf:family_name), lub poprostu łącznie naszego imienia i nazwiska (foaf:name). Jeżeli chcemy określić nasze ksywki to korzystamy z właściwościfoaf:nick; tworzymy po jednym zdaniu RDF dla każdej ksywki (zobacz przykład poniżej) - ostatnią bardzo popularną właściwością jest
foaf:depictionza pomocą, której możemy wskazać lokalizację naszego zdjęcia.
FOAF definiuje również całą gamę innych klas jak foaf:Project, foaf:Organization, foaf:Group, foaf:Document, i właściwości jak np.: foaf:weblog, foaf:geekcode, foaf:schoolHomepage, itp. Zachęcam do lektury specyfikacji FOAFa gdzie wszystko jest dość spójnie opisane. Ciekawostką jest właściwość foaf:myersBriggs za pomocą określamy naszą osobowość; więcej informacji na temat Myers Briggs (MBTI) personality classification znajdziecie pod http://www.personalitypage.com/four-temps.html.
Systemy i usługi bazujące na FOAF
Ontologia FOAF jest bardzo popularna, i wiele osób tworzy i publikuje swoje FOAFy. Najlepszym miejscem, żeby rozpocząć zabawę z FOAFem jest serwis FOAF-o-matic. Jego pierwsza wersja jest dostępna pod adresem http://www.ldodds.com/foaf/foaf-a-matic, ja jednak polecam najnowszą wersję, stworzoną w ramach projektu OKKAM, dostępna pod adresem: http://www.foaf-o-matic.org/.
Oto przykładowy dokument FOAF wygenerowany za pomocą usługi FOAF-o-matic:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:admin="http://webns.net/mvcb/"> <foaf:PersonalProfileDocument rdf:about=""> <foaf:maker rdf:resource="#me" /> <foaf:primaryTopic rdf:resource="#me" /> <admin:generatorAgent rdf:resource="http://www.ldodds.com/foaf/foaf-a-matic" /> <admin:errorReportsTo rdf:resource="mailto:leigh@ldodds.com" /> </foaf:PersonalProfileDocument> <foaf:Person rdf:ID="me"> <foaf:title>Dr</foaf:title> <foaf:name>Sebastian Kruk</foaf:name> <foaf:givenname>Sebastian</foaf:givenname> <foaf:family_name>Kruk</foaf:family_name> <foaf:nick>skruk</foaf:nick> <foaf:mbox_sha1sum>959ef7bc9db1f3038f1301fe7c53654fa4f85d3f</foaf:mbox_sha1sum> <foaf:homepage rdf:resource="http://www.sebastiankruk.com/" /> <foaf:depiction rdf:resource="http://www.knowledgehives.com/images/stories/skruk_200808.jpg" /> <foaf:workplaceHomepage rdf:resource="http://www.knowledgehives.com/" /> <foaf:schoolHomepage rdf:resource="http://www.semanticschool.com/" /> <foaf:knows> <foaf:Person> <foaf:name>Stefan Decker</foaf:name> <foaf:mbox_sha1sum>1bc1f862b688a45b7e0c8d4a8467c23177c53fad</foaf:mbox_sha1sum> </foaf:Person> </foaf:knows> <foaf:knows> <foaf:Person> <foaf:name>Dan Brickley</foaf:name> <foaf:mbox_sha1sum>6e80d02de4cb3376605a34976e31188bb16180d0</foaf:mbox_sha1sum> <rdfs:seeAlso rdf:resource="http://danbri.org/foaf.rdf" /> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF>
Kolejną ciekawą usługą jest FOAF Explorer, który umożliwia przeglądanie sieci znajomości zapisanych w dokumentach FOAF. Na przykład, jeżeli chcecie rozpocząć przeglądanie od mojego profilu wystarczy, że udacie się pod ten adres.
W projektach open source, które wspiera nasza firma, Knowledge Hives, korzystamy z komponentu FOAFRealm, który wykorzystuje ontologię FOAF do zarządzanie społecznymi profilami użytkowników w systemie. Projekt FOAFRealm powstał jako przykład działania (ang. proof of concept) usługi zarządzania użytkownikami opartego o FOAF, prezentowanej na FOAF Workshop, który odbył się w 2004 roku w Galway.
Do FOAF wrócimy jeszcze prezentując inne ontologie zależne od niej, np. SIOC (Semantycznie Połączone Społeczoności Online) oraz DOAC (Opis Kariery) oraz rozszerzenie FOAF-SSL umożliwiające tworzenie rozproszonej sieci uwierzytelniającej.

