Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:semweb:2014:projects:semmap-usecase [2014/12/24 13:35] eis |
pl:dydaktyka:semweb:2014:projects:semmap-usecase [2019/06/27 15:50] (aktualna) |
| |
Dzięki przedstawionemu zestawowi dwóch kwerend SPARQL zrealizowane są wszystkie przedstawione w sekcji Wymagania kroki propozycji wnioskowania poza ostatnim. | Dzięki przedstawionemu zestawowi dwóch kwerend SPARQL zrealizowane są wszystkie przedstawione w sekcji Wymagania kroki propozycji wnioskowania poza ostatnim. |
| |
| ==== Fuseki ==== |
| |
| Zgodnie z ustaleniami ze spotkania organizacyjnego praktyczne rozwiązanie postanowiono zaprojektować zgodnie z architekturą klient-serwer, z "wiedzą" w postaci ontologii dostępną na serwerze oraz aplikacją mobilną wysyłającą zapytania do tego serwera. Jako serwer wybrano Apache Jena Fuseki, wspierający RESTowy SPARQL. |
| |
| Integracja wypracowanego do tego etapu rozwiązania w postaci zamieszczonej ontologii z serwerem okazała się być trywialna i sprowadziła się do załadowania pliku owl przez Control Panel serwera w przeglądarce. Interfejs webowy serwera udostępnia także możliwość testowania kwerend SPARQL i zwracania ich w różnych formatach. Aby zweryfikować poprawną integrację postanowiono przetestować zamieszczone kwerendy na serwerze Fuseki. |
| |
| Import zamieszczonej ontologii do Fuseki przebiegł pomyślnie: |
| |
| {{:pl:dydaktyka:semweb:2014:projects:semmap_upload_success.png?250|}} |
| |
| Wykonanie pierwszej kwerendy |
| |
| {{:pl:dydaktyka:semweb:2014:projects:first_query_fuseki.png?650|}} |
| |
| zwróciło następujący wynik (przedstawiony w JSON gdyż w ten sposób będzie realizowana komunikacja z klientem): |
| |
| <code javascript> |
| { |
| "head": { |
| "vars": [ "poitag" ] |
| } , |
| "results": { |
| "bindings": [ |
| { |
| "poitag": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typed-literal" , "value": "antique" } |
| } |
| ] |
| } |
| } |
| </code> |
| |
| Jest to wynik zgodny z wynikiem otrzymanym z Twinkle. Wykonanie drugiej kwerendy |
| |
| {{:pl:dydaktyka:semweb:2014:projects:second_query_fuseki.png?550|}} |
| |
| zwróciło następujący wynik: |
| |
| <code javascript> |
| { |
| "head": { |
| "vars": [ "uuid" , "major" , "minor" ] |
| } , |
| "results": { |
| "bindings": [ |
| { |
| "uuid": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typed-literal" , "value": "F7826DA6-4FA2-4E98-8024-BC5B71E0893E" } , |
| "major": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "64903" } , |
| "minor": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "35944" } |
| } , |
| { |
| "uuid": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typed-literal" , "value": "F7826DA6-4FA2-4E98-8024-BC5B71E0893E" } , |
| "major": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "54294" } , |
| "minor": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "26255" } |
| } |
| ] |
| } |
| } |
| </code> |
| |
| Jest to wynik również zgodny z wynikiem otrzymanym z Twinkle. Dzięki temu ontologia zyskała dostęp w postaci SPARQL przez HTTP. |
| |
| ==== Aplikacja mobilna ==== |
| |
| Aplikacja mobilna komunikuje się z serwerem Fuseki za pomocą zamieszczonych kwerend SPARQL, uzupełnianych o rzeczywiste dane, przekazywanych jako parametry w [[http://en.wikipedia.org/wiki/Query_string|query string]]. Kwerendy budowane są za pomocą biblioteki [[https://bitbucket.org/rehei/sparql-java|sparql-java]], danymi uzupełnianymi są w przypadku pierwszej kwerendy uuid, major i minor rzeczywistego beacona, a przypadku drugiej kwerendy tag. |
| |
| Beacon wejściowym jest wybierany z listy dostępnych beaconów na podstawie RSSI - beacon o największej sile sygnału jest uznawany za najbliższy i podawany na wejście algorytmu. Odpowiedź serwera w postaci JSONa jest odczytywana ze strumienia i parsowana za pomocą klas z pakietu org.json dostępnego w API Androida. Na podstawie przeparsowanej odpowiedzi tworzona jest lista "podobnych" beaconów. |
| |
| W warstwie prezentacji aplikacji najważniejszym elementem jest mapa. Mapy tworzone i wyświetlane są przy pomocy biblioteki [[https://bitbucket.org/sbobek/micromap|micromap]]. Wstępnie beacon najbliższy jest oznaczany na mapie większą, wyboldowaną czcionką a beacony "podobne" tą samą, większą czcionką ale nie wyboldowaną. |
| |
| Prosty scenariusz wykorzystania rozwiązania można zobaczyć na nagraniu z aplikacji - {{:pl:dydaktyka:semweb:2014:projects:semmap_usecase1.zip|}}. Wyświetlona mapka przedstawia pokój realizatora projektu, eksperyment był wykonywany w pobliżu lewego górnego rogu mapki. Na początku nagrania wyświetlone są dane beaconów (uuid, major i minor), które można porównać z zamieszczoną ontologią. Następnie wykorzystana jest funkcja znajdowania najbliższego beacona, beacon znajdujący się w górze mapki zostaje poprawnie wybrany jako najbliższy i zaznaczony większą, wyboldowaną czcionką. Na koniec wykorzystana jest funkcja znajdowania beaconów "podobnych" - pierwsza kwerenda zostaje uzupełniona danymi najbliższego beacona, następuje komunikacja z serwerem, zwrócona zostaje jednoelementowa lista tagów zawierająca element "antique", druga kwerenda zostaje uzupełniona tagiem "antique", następuje komunikacja z serwerem, zwrócona zostaje dwuelementowa lista beaconów z której usunięty zostaje beacon wejściowy, pozostały beacon zostaje zaznaczony większą, niewyboldowaną czcionką. |
| |
| Aktualnie zaimplementowany i przedstawiony na nagraniu sposób wykorzystania rozwiązania i wyświetlania beaconów na mapie jest jedynie wstępną propozycją, przydatną do zaprezentowania działania rozwiązania. Jest to jednak sposób mało praktyczny i mało atrakcyjny wizualnie, w ramach propozycji dalszych prac zaproponować można usprawnienie warstwy prezentacyjnej i UX rozwiązania. |
| |
===== Sprawozdanie ===== | ===== Sprawozdanie ===== |
| |
===== Materiały ===== | Projekt Gradle pluginu aware-beacons-v2 (branch semweb) - {{:pl:dydaktyka:semweb:2014:projects:aware-beacons-semweb.zip|}} |
| |
| ===== Materiały ===== |