środa, 5 września 2007

Wizja sieci semantycznej


Ideę Semantic Web poznaliśmy po raz pierwszy w artykule opublikowanym w Scientific American Magazine w 2001 roku (Świat Nauki opublikował tłumaczenie w lipcu 2001). Tim Berners-Lee, James Hendler i Ora Lassila przedstawili w nim wizję sieci internetowej następnej generacji. Bohater tego artykułu – Piotr – na podstawie uzyskanej diagnozy zleca swojemu agentowi znalezienie kliniki świadczącej niezbędne usługi, która znajduje się w dogodnej odległości i posiada dobrą opinie. Program postarał się uzgodnić wolne terminy z napiętym terminarzem Piotra. Co najistotniejsze w przytoczonej historii, to brak konieczności przeglądania dziesiątków stron z diagnozą, poszukiwania stron kliniki w niedalekiej odległości i uzgadniania terminów zabiegów z terminarzem głównego bohatera. Całą „czarną robotę” wykonał automatycznie osobisty agent Piotra.



Wizja jaką przedstawia Tim Barnes-Lee wydaje się bardzo kusząca. Jeśli maszyny okażą się zdolne do analizy wszelakich danych w sieci - treści, linków i relacji oraz interakcji - to doczekamy się inteligentnych agentów, które będą zdolne do pokonywania typowych problemów dnia codziennego, jak transakcje handlowe, biurokracja. Wszystko to odbędzie się bez udziału człowieka, wyłącznie między maszynami. To realizacja odwiecznego marzenia ludzkości.



Semantyczna Sieć Web opiera się na integracji informacji. Na przykład, jeśli oglądasz stronę WWW, to możesz znaleźć na niej informacje o wykładzie czy imprezie, w której chciałbyś uczestniczyć. To wydarzenie odbywa się w określonym miejscu, o określonej porze, wiadomo, że jest grupa ludzi z nim związana. Jednak Ty musisz najpierw przeczytać treść strony, następnie oddzielnie otworzyć kalendarz i wpisać potrzebne informacje. Jeśli ponownie chcesz trafić na stronę zawierającą informacje o imprezie, to musisz jeszcze raz wpisać jej adres. Jeśli chcesz uzyskać informacje biznesowe dotyczące uczestników to musisz wyciąć informacje ze strony i wkleić do swojej książki adresowej, ponieważ dane z książki, z danymi ze strony WWW nie są w żaden sposób zintegrowane.



Kiedy korzystasz z aplikacji, powinieneś mieć możliwość umieszczenia w niej danych, które możesz odpowiednio konfigurować. Powinieneś mieć możliwość poinformowania swojego komputera "idę na tę imprezę". A gdy to mówisz, to maszyna rozumie tę informację. Semantyczna Sieć Web polega na umieszczaniu plików zawierających dane w sieci Web. To nie tylko sieć dokumentów, ale także informacji, danych, treści. Semantyczna Sieć danych, powinna zawierać możliwie dużo aplikacji, które komunikują się ze sobą. Po raz pierwszy powstanie jeden powszechny format danych dla wszystkich aplikacji, baz danych i stron WWW. Warto zauważyć, że podobne cechy (w obrębie danego serwisu) można odnaleźć w serwisach wyrosłych z nurtu Web 2.0, jak zicherka.pl.

wtorek, 7 sierpnia 2007

Niezależność treści od języka

Całkiem niedawno pisałem o zastosowaniu eRDF w blogu. Nie padła wtedy propozycja praktycznego wykorzytania takich metadanych dla agentów. Przyszła mi na myśl sytuacja z życia wzięta. Otóż na blogu TarPit MiMas swego czasu opublikował wpis na temat SIOC. Post sam w sobie ciekawy, jednak nas najbardziej interesuje skąd się wziął na polskim blogu komentarz Johna Breslina?

Sprawa jest całkiem prosta, gdy uświadomimy sobie, że metadane dla agentów są niezależne od języka. Agent nie musi rozumieć tak egzotycznego języka jak polski, wystarczy że z eRDF pobierze dane, o sitniejącym wpisie na konkretny temat (tu: SIOC) i powiadomi o tym agregator, jak pingthesemanticweb.com. Potem już wystarczy tylko znaleźć tłumacza, co nie jest trudne zważywszy, że w DERI pracuje wielu Polaków.

Możemy zatem przeszukiwać informację w nieznanym dla nas języku, bo znamy odpowiednie metadane dla informacji poszukiwanej. Jeśli poszukujemy, dajmy na to, liczby ludności Edynburga, to nie musimy się zastanawiać, czy skorzystać z wikipedii polskiej, angielskiej, czy francuskiej (które podają rózne dane, do tego bywają wewnętrznie sprzeczne). Odpowiedź dostajemy w postaci liczby zapisanej w wygodnym dla nas systemie (arabskim, rzymskim itd.).

poniedziałek, 6 sierpnia 2007

Semantic Web - co to jest?

Web3.0, znany szerzej jako Semantic Web, czyli sieć semantyczna, to Internet następnej generacji. Już to słyszeliśmy, powiecie. Nic dziwnego, skoro idea ma już 7 lat. Choć twórca całego "zamieszania" - Tim Berners-Lee - jeździ po całym świecie propagując tą ideę nadal nie doczekaliśmy się przełomu. No bo niby dlaczego miałby nastąpić?

Obecnie mamy Internet zapełniony dokumentami czytelnymi wyłącznie dla człowieka. Nie zmienia tu faktu istnienie tzw. Web2.0 z ogromem aplikacji, kanałami RSS i semantycznym markupem. To wszystko jest sporym postępem w stosunku do statycznej strony z zupą tagów, jednak jakikolwiek bot jest w stanie jedynie wyciągnać tekst i zaindeksować go. Może jeszcze będzie w stanie odróżnić tytuł, nagłówki i linki, lecz nadal nie będzi wiedział o czym jest dana strona. SemanticWeb to udostępnienie danych dla wszystkich, w szczególności dla maszyn.

Wyobraź sobie, że zamiast strony z blogiem dajesz takiemu robotowi (nazwijmy go agentem) dostęp do bazy w trybie tylko do odczytu. Taki agent do tego zna strukturę bazy danych, zatem może sobie wyciągać informacje wedle życzenia. Chcesz wszystkie posty Stasia z określonego okresu na temat HTML - nie ma problemu. A może posty Stasia, które skomentował Zenek? Żaden problem. Można taką wyliczankę prowadzić długo. Każdy kto zna SQL wymyśli setki przykładów.

Ciekawsze jest to, że tą "bazę danych" możemy łączyć z podobnymi bazami. Nie chodzi tu o proste, jednokierunkowe połączenie jakim jest link, ale pełnoprawną relację między dwoma zasobami. Mając uniwersalne identyfikatory zasobów (URI - Uniform Resource Identifier) można to robić bez obaw o integralność danych. Właśnie takie połączenie rozproszonych zasobów nazywamy siecią semantyczną.

Dopełnieniem tego wyobrażenia Semantic Web jako bazy danych jest otwartość i wolność. Nie ma tutaj określonego modelu bazy ze skończoną liczbą tabel i relacji. Jak to w Internecie każdy może dodać właśny zasób i powiązać go z innymi. Wystarczy zastosować się do kilku prostych reguł wyznaczonych przez konsorcjum W3.

Czego brakuje Semantic Web względem Web2.0

Brakuje prostych, łatwych do opanowania narzędzi, który byłyby jazzy, funky i del.icio.us. Brakuje społeczności które tworzą się wokół takich projektów. Brakuje pomysłow, które można i warto skopiować. Brakuje ludzi którzy będą tego używać, bo to jest fajne, a może nawet przydatne. Słowem, brakuje tego co tworzy hype Web2.0.

A przecież potrzeba tak niewiele. Weźmy ontologię SIOC+FOAF oraz bloga. Przyprawmy to odrobiną popularnego Dublin Core. Przecież zakodowanie zasobów w eRDF sprowadza się tu do zmian w szablonie. Trzeba dodać trochę metadanych na podstawie dostępnej struktury bazy danych i już mamy graf RDF. Jeśli do tego dodamy również popularną licencję Cretive Commons mamy całkiem ładny zasób SemWeb.

Zestaw wymieniony powyżej IMHO idealnie nadaje się do zastosowania na blogu. Wystarczy opracować szablon, który inni będą wykorzystywać. Do czego to może się przydać? Można zrobić ładne trackbacki, agregację treści, blogroll. Wiem, to już jest. Jednak teraz nic ciekawszego nie przychodzi mi do głowy ;)

EDYCJA - słowniczek:
  • RDF (Resource Description Framework) - sposób opisu zasobów zrozumiały dla komputera, wiki
  • eRDF (Embedded RDF) - metoda zapisu grafu RDF w (X)HTML
  • Dublic Core - metadane oraz ontologia do opisu dokumentów
  • SIOC - ontologia do opisu społeczności online, jak blogi fora itd.
  • FOAF - ontologia do opisu ludzi i relacji między nimi, wiki