Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

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)
Linia 198: Linia 198:
  
 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 =====
pl/dydaktyka/semweb/2014/projects/semmap-usecase.1419424531.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0