Posts tagged ‘ontologia’

Luty 22, 2013

Semantyczny rejestr usług sieciowych

- autor: tsissput

Cel projektu

Pomysł na semantyczny opis i wyszukiwanie usług sieciowych nie jest nowy, ale jak dotąd nie powstało rozwiązanie, które spotkałoby się z powszechną akceptacją.  Powodów takiego stanu rzeczy należy upatrywać przede wszystkim w skomplikowanym i trudnym w opisie modelu Big Web Services opartym na protokole SOAP. Sprowadza się on w zasadzie do zdalnego wywoływania metod za pośrednictwem rozbuchanego, nadmiarowego i pod wieloma względami dublującego funkcjonalność protokołów transportowych (np. HTTP) formatu XML, co wiąże się z nieograniczoną dowolnością wykonywanych operacji.  Każda próba wzbogacenia takich usług o informację semantyczną wymaga zarówno dodatkowego powiększenia i tak już „ciężkiej” koperty SOAPowej, jak też bardzo indywidualnego podejścia do semantycznego opisu każdej usługi z osobna.

W związku z powyższym, zdecydowaliśmy się ograniczyć zakres projektu do usług zgodnych z paradygmatem REST. Pozwala to na wprowadzenie swojego rodzaju „wspólnego mianownika” dla opisywanych usług, który wynika ze ściśle określonego związku architektury usług z wykorzystanym protokołem transportowym (praktycznie zawsze HTTP lub HTTPS). Ogromnym ułatwieniem jest tu porzucenie potencjalnie nieskończonej (w przypadku usług typu Big Web Services) przestrzeni możliwych operacji, na rzecz tej, którą tworzą metody protokołu HTTP. Ponadto, w przypadku usług RESTowych, mamy pewność, że zakres operacji jest jasno określony przez adres URL zasobu. Nie jest konieczne wnikanie w ciało żądania by określić na jakich danych wykonujemy jakąś czynność.

Należy wspomnieć, że sam paradygmat REST jest pojęciem o bardzo wysokim poziomie abstrakcji i sam w sobie nie definiuje żadnych szczegółów implementacji usług. W projekcie zakładamy zgodność usług z jego konkretną interpretacją opartą na protokole HTTP, a mianowicie z architekturą zorientowaną na zasoby (ang. Resource Oriented Architecture – ROA). Termin ten został zaproponowany przez Leonarda Richardsona i Sama Ruby’ego w książce Semantic Web Services (wyd. O’Reilly).

verbs

Kolejną rzeczą, na którą należy zwrócić uwagę jest fakt, że koncepcja globalnych rejestrów usług nie zyskała powszechnej aprobaty. Samo skłonienie setek niezależnych podmiotów do utrzymywania takich rejestrów jest zadaniem trudnym. Opracowując nasze rozwiązanie nie kierowaliśmy się ambicjami stworzenia takiego rejestru. Nasza aplikacja jest przeznaczona do użytku w zastosowaniach lokalnych, na skalę pojedynczych przedsiębiorstw czy systemów informatycznych

Semantyka

Ograniczenie się do opisu usług RESTowych pozwoliło na opracowanie stosunkowo nieskomplikowanej ontologii opisującej architekturę zorientowaną na zasoby. Do opisu każdej usługi potrzeba w ogólności trzech elementów:

  • Ontologii REST-HTTP opisującej pojęcia związane z ROA, takie jak: zasób, adres URL, nagłówek HTTP, ciało odpowiedzi, operacja tworzenia zasobu, metoda GET, etc.
  • Ontologii dziedzinowej opisującej biznesową interpretację zasobów. Pojęcia w niej zawarte to na przykład: pacjent, kolejka na badanie, wpis w karcie, grupa krwi, etc. Należy tu wspomnieć, że w ogólności każda usługa może być opisana przy pomocy dowolnej liczby ontologii dziedzinowych, które mogą być łączone w celu poszerzenia opisu semantycznego.
  • Ontologii opisującej konkretną usługę zawierającej przede wszystkim instancje klas zdefiniowanych w pozostałych ontologiach.

Pozwala to na elastyczne mapowanie udostępnianych przez usługi zasobów w kontekście ROA na abstrakcyjne zasoby opisane w ontologiach.

Zakłada się ponadto, że każdy złożony zasób (na przykład Lekarz) interpretowany jako instancja pewnej klasy z ontologii, składa się z pewnej liczby podzasobów atomowych o typach prostych reprezentowanych przy pomocy typowanych literałów.  Zarówno zasoby złożone, jak i atomowe, są wiązane w stosunku 1:1 z pojęciami z ontologii dziedzinowej.

Oto kilka przykładów zapytań w języku naturalnym, które można wyrazić przy pomocy opisanego powyżej zestawu ontologii:

  • Znajdź usługę, która umożliwia pobranie kolekcji pacjentów leczonych na zapalenie płuc bez podawania dodatkowych parametrów
  • Znajdź usługę, która pozwoli na utworzenie nowego zasobu oznaczającego pojęcie pacjent w kontekście kolejki na badanie rentgenowskie, przy założeniu że znam PESEL, imię i nazwisko pacjenta.
  • Dysponuję numerem książeczki ubezpieczeniowej pacjenta. Jakich jeszcze parametrów potrzebuję by wykonać zapytanie tworzące zasób reprezentujący tego pacjenta przy pomocy usługi X?

Implementacja rejestru

Oczywiście sama ontologia to za mało by wykorzystać takie zapytania w praktyce. Dokonaliśmy implementacji usługi RESTowej pozwalającej na wgrywanie ontologii i udostępniającej końcówkę SPARQL  wykorzystywaną do wykonywania zapytań do ontologii.

Wykorzystaliśmy w tym celu bibliotekę Apache Jena udostępniającą interfejsy do manipulacji danych semantycznych i ich przechowywania w bazie danych oraz silnik SPARQL. Interfejst REST usługi oparto na bibliotece Jersey implementującej standard JAX-RS. Widoki stworzono w technologii JSP.

semreg2

Plany na przyszłość

Opracowana aplikacja stwarza szereg interesujących możliwości. Dzięki semantycznemu opisowi publikowanych usług możliwe jest tworzenie klientów aplikacyjnych, które zamiast jawnie wywoływać konkretne usługi posiadać będą jedynie zdefiniowaną w sposób deklaratywny informację o tym jaką operację należy wykonać i na jakim zasobie. Dzięki wykorzystaniu rejestru, potrzebna będzie jedynie informacja o tym, na jakie pojęcie w dziedzinie biznesowej przekłada się dany zasób.

Łatwo sobie wyobrazić sytuację, w której klient pobiera listę dostępnych usług oraz wymaganych przez nie parametrów, a następnie odpytuje rejestr w celu znalezienia usług udostępniających dane, które są potrzebne jako parametry żądania. Jeszcze prostszym zadaniem jest kompozycja formularzy HTML pozwalających na wprowadzenie wymaganych przez usługi danych przez użytkownika. Potencjalnym klientem rejestru jest rozwijany na Politechnice Poznańskiej silnik procesów biznesowych ROsWeL (ang. Resource Oriented Workflow Language).

roswelLogoWidePlainBlack50pxhi

Korzystanie z rejestru zostałoby znacznie ułatwione gdyby opis usług w językach RDF i OWL był generowany w pewnym stopniu automatycznie. Można to zrealizować przy pomocy biblioteki opartej o mechanizm adnotacji w języku Java, w sposób podobny do tego, w jaki na podstawie adnotacji JAX-RS lub JAX-WS generowane są dokumenty WADL i WSDL. W gestii programisty usług pozostałoby wtedy tylko umieszczenie odpowiednich adnotacji semantycznych obok adnotacji JAX-RS definiujących parametry i typy obiektów zwracanych przez usługi.

Powyższe założenia zamierzamy zrealizować w ramach pracy magisterskiej.

Tomasz Niedźwiedź i Paweł Pawłowski

Reklamy
Styczeń 16, 2012

Szukajcie a znajdziecie… kto szuka nie błądzi…

- autor: tsissput

… czyli o słów kilka o tym czym i jak szukamy.

Jest 6 sierpnia 1991 roku pojawia się pierwsza strona internetowa. Postawiona na serwerze HTTPD. Uruchomionym na komputerze z systemem NeXT STEP. W Szwajcarskim CERNie.
Jest stycznień 2010 internet składa się z 206 741 990 stron internetowych
Listopad 2011 liczba ta rośnie do 525 998 433 dostępnych stron.
Najnowszy raport mówi o istnieniu 582 716 657 aktywnych stron!
[Kogo dziwi tak mały wynik odsyłam do metodologii prowadzenia tych badań, wszystko się wyjaśni]

Nie łatwo odnaleźć się w takim gąszczu informacji. Na szczęście nie zostaliśmy pozostawieni sami sobie. Mamy pomoc.
Znowu trochę historii.
Pierwszą wyszukiwarką był WebCrawler który pojawił się 20 kwietnia 1994 roku. Był on wyjątkowy dlatego, że posiadał szukanie pełnotekstowe. Po nim pojawiły się kolejne takie jak Daum, Excite, HotBotYahoo!.
Jednak dla nas najważniejszy jest Google. Kochany wujek Google 🙂 i jego wspaniały PageRank.
Teraz garść suchych faktów na temat tego jak działa. (możecie to pominąć)
Definicja: PageRank to rozkład prawdopodobieństwa służący do zaprezentowania prawdopodobieństwa, że osoba, która przypadkowo kliknie link dotrze do danej strony.
PageRank danej strony opisuje się wzorem Wzór opisujący PageRank danej strony
Gdzie:
PR(pi) – Waga liczbowa określająca dany dokument (PageRank),
d – współczynnik tłumienia, określa prawdopodobieństwo, że dana osoba przestanie klikać w kolejne linki (szacuje się, że jego wartość jest w okolicach 0.85),
N – ilość dokumentów w kolekcji,
M(pi) – określa zbiór stron które linkują do strony pi,
L(pj) – ilość linków wychodzących ze strony pj.

Ze wzoru wynika, że suma PageRank’u wszystkich storn wynosi jeden. Dodatkowo PageRank storony i zależy od wartości PageRank’ów wszystkich stron ze zbioru M(pi) podzielonych przez ilość linków na każdej z nich.

Znaczy to że lepiej linkować strony o dużej wartości PageRank’a oraz małej ilości linków.

A jak jest teraz?

Niestety dziś PageRank nie określa już jednoznacznie naszej pozycji na liście wyszukań. Nawet nie jest już taki ważny. Wszytko przez to co zaczęła robić „konkurencja”. Przez to co zaczęły wyczyniać rozmaite start upy.

Niespodziewanie kilka lat temu wzrosło zainteresowanie semantyką. Do tego pojawił się Facebook i jego „Lubię to!„.

Jedną z pierwszych jaskółek zapowiadających falę zmian był plugin dla Firefoxa o nazwie Semanti. Nie był on wyszukiwarką samą w sobie. Zamiast tego był nakładką na istniejące już wyszukiwarki takie jak Google i Bing. Dodawał im takie funkcje jak semantyczne znaczenie wpisywanych terminów. Tworzył też swoją własną społeczność. Można było przeglądać wyszukania znajomych, a jak zadaliśmy podobne wyszukanie to wyświetlało nam informacje w jakie linki jacy nasi znajomi klikali.

Jak zauważyliście piszę w czasie przeszłym. Ja o Semanti dowiedziałem się dopiero przy okazji pisania tego wpisu, na podstawie tego artykułu. Próbowałem go znaleźć poprzez Google i Binga, ale zawiodłem (może ja nie potrafię zadawać pytań tak jak one [wyszukiwarki] tego chcą). Obie od razu się domyśliły że zrobiłem literówkę w szukanej frazie (tja jasne) i zaprezentowały wyniki dla „semantic search” dodanie „firefox plugin” całkowicie zignorowały.

Tak właśnie działa semantyka dla Google i Microsoftu  (a raczej samego Google, bo nie oszukujmy się MS ściąga niczym student na egzaminie). Znalezienie synonimów i wyłapanie literówek to wszystko na co je obecnie stać.

Semanti nie był jedynym dodatkiem, który służył jako nakładka semantyczna na dobrze nam znane wyszukiwarki innym przykładem jest SenseBot. Co prawda nie ma on tak ciekawych funkcjonalności jak Semanti ale zawsze coś. Pozatym repozytorium dodatków zarówno Chrome jak i Firefox’a zawiera wiele innych ciekawych addon’ów, które wartoprzetestować (choć nie warto tu o nich pisać).

Podejście gigantów do „semantic search” nie jest na szczęście uważane za prawdę objawioną i istnieją konkurencyjne produkty, które mają własną wizję tego jak semantic web powinien wyglądać. Jednym z najbardziej popularnych przykładów jest Hakia. Jedną z postaci stojących za serwisem jest Victor Raskin, który jest uważany za ojca semantyki ontologicznej. Nie jest ona co prawda ukończona i wiele pracy trzeba jeszcze włożyć żeby można powiedzieć, że mamy do czynienia z czymś wyjątkowym ale jest dobrze. Wyniki są trafione (w większości). Ponadto Hakia ma coś czego nie mają Google i Bing, mianowicie chodzi o opcję „Meet Others”. Pozwala ona przejść na dedykowanego czata, gdzie będziemy mogli porozmawiać z innymi, którzy zadali pytanie podobne do naszego. Przynajmniej tak o tym piszą w internecie. Po raz kolejny wina spada na mnie i moje niewłaściwe pytania. Osobiście nie udało mi się skorzystać z tej opcji bo nikt nie szukał tego co ja. Trudno, może kiedyś się uda.

– Kto wie …? – Ja wiem! Mnie, wybierz mnie!

Tym zgrabnym manewrem przejdziemy do tego co zwykło się nazywać „social search”. Czyli gdzie w tym wszystkim są ludzie i ich wiedza. Niezmiernie popularne przez ostatnie lata portale społecznościowe i ich użytkownicy.

Wszytko to tak na prawdę dzięki Facebook’owi i jego „Like It!„. Jego granicząca z szaleństwem popularność otwarła nowe możliwości. Dzięki niemu moża było określić trafność wyszukanych linków na podstawie tego co myślą o nich nasi znajomi, albo znajomi naszych znajomych, albo ludzie których możemy znać, albo ci, których mogą znać nasi znajomi lub po prostu w zależności od tego ile „lajków” dany artykuł, komentarz dostał. Oczywiście to wszystko przy założeniu, że jesteśmy podobni do naszych znajomych, że dzielimy te same zainteresowanie i mamy wspólne spojrzenie na świat.

Doprowadziło to do tego, że gigant wyszukiwania pokroju Google nie mógł przejść obok tego fenomenu obojętnie. Tak więc pojawiło się +1. Przy okazji wyniki naszych wyszukań stały się spersonalizowane. Teraz każdy znajdzie coś innego, coś co go bardziej zainteresuje, coś co łatwiej będzie mu przyswoić. Po prostu coś bardziej dla niego. Tak działa „social search” by Google.

Nie jest to oczywiście jedyna wizja tego czym jest wyszukiwanie społecznościowe. Ciekawym konceptem jest znalezienie osoby, która może pomóc ci znaleźć to co czego szukasz. Jest to popularny trend w technologiach mobilnych. Zamiast godzinami przesiewać wyplute przez Google czy Binga w poszukiwaniu interesującej nas wiedzy. Zamiast marnować czas programistów na lata implementacji maszynowej analizy tekstu, rozumienie pytań zadanych w języku naturalnym, inteligentnego składania dokumentów. Dlaczego by nie znaleźć po prostu osoby, która nie odpowie nam na nasze pytanie. Mniej więcej tak działał mobilny Aadvark zanim został wykupiony przez Google i zamknięty.

O ile abphone i zook nie potrafią znaleźć dobrych restauracji w Poznaniu o tyle aplikacje mobilne takie jak HayStack daje duże nadzieje, oczywiście dla osób bardziej uspołecznionych niż ja. Jeśli ktoś lubi dołączać do nowych społeczności, które są związane z jego wyszukaniami. Niech się zapozna z HeyStack.

Przy okazji wyszło na jaw, że Facebook dodał do swojego portfolio kolejną funkcjonalność „Ask Question” czyli po prostu „Zadaj Pytanie”. Wiem, wiem, dla was to żadna nowość. Na pewno wszyscy o tym wiecie od dawna i korzystacie. Pomysł ogólnie nie jest nowy, na pewno w codziennej pracy nie raz zdarza wam się przewinąć przez Stack Overflow. Oczywiście Facebook zrobił to z sobie dobrze znanym rozmachem. Nasze pytania wylądują na ścianach naszych znajomych. Na ścianach znajomych tych naszych znajomych, którzy śledzą nasze pytanie. Na ścianach znaj… właściwie to się może propagować daleko w głąb społecznego grafu Facebooka. Wszystko zależy od zaangażowania ludzi.

The appearance of Dr. Know

Pamiętacie scenę z filmu „Sztuczna Inteligencja„, w której David pytał się Dr. Know gdzie znajduje się Niebieska Wróżka? Chcieli byście w ten sposób wyszukiwać informacje? Zadać pytanie tak jakbyście pytali kolegi, prowadzącego zajęcia lub przechodnia i dostać odpowiedź (potocznie mówiąc) prosto na twarz. Tak zwyczajnie. Myślę, że w ostateczności do tego zmierza technologia. Jednak to nie nastąpi szybko. Jeszcze wiele pytań pozostanie z błędymi odpowiedziami, a przynajmniej nie takimi jakich się spodziewamy. Tak właściwie to jak zadajemy obecnie pytania wyszukiwarkom? Czy są to prawdziwe pytania, czy po prostu zlepek słów kluczowych jakie kojarzą się nam z danym problemem? Jednak do takiego sposobu szukania odpowiedzi przyzwyczaiły nas współczesne wyszukiwarki. Wynika z tego, że nie tylko technologia będzie musiała się zmienić ale i nasze podejście do zdobywania wiedzy.

Mnie zadowoliłoby gdybym na pytania „How to…” dostał w odpowiedzi listę kroków, żeby „Why…” odpowiedziało mi dlaczego, żebym na pytanie „In what movie was playing Jude Law?” dostał po prostu listę filmów, a nie jego zdjęcia… Czy to wiele?

Na obecny stan technologi semantycznych tak, ale to zostawia spore pole do popisu nowym start upom, nam.

Jeśli chcemy coś znaleźć to musimy tego poszukać samemu (albo poprosić znajomych).

Dawid Jankowiak

P.S. Przepraszam za literówki.

P.S.S. Oraz za liczne powtórzenia. Sami rozumiecie: pozycjonowanie, text mining, wyszukiwarki, Bing, Google, Hakia, Semantic Search, Social Search, Facebook, Microsoft, mobile apps, PageRank, algorytmy wyszukiwania, ontologia