Wpisy otagowane ‘triplestore’

Instalacja Joseki pod Ubuntu

piątek, 9 Październik 2009

Poniższe kroki opisują sposób instalacji Joseki -SPARQL Serwera dla Jeny pod systemem Ubuntu.

Krok 1. Wymagane oprogramowanie

  • ant
  • cvs

Jeżeli takich narzędzi nie posiadamy, wykonujemy polecenia:

 sudo apt-get install ant
 sudo apt-get install cvs

Krok 2. Pobieramy Joseki z CVS (system kontroli wersji) – obecnie v3.4

 sudo mkdir /usr/lib/joseki
 cd /usr/lib/joseki
 cvs -d:pserver:anonymous@joseki.cvs.sourceforge.net:/cvsroot/joseki login
 sudo cvs -z3 -d:pserver:anonymous@joseki.cvs.sourceforge.net:/cvsroot/joseki co Joseki3
 cd Joseki3
 sudo ant jar

Krok 3. Tworzymy aplikacje webową

Polecenia wydajemy w /usr/lib/joseki/Joseki3 .

 sudo ant war-file
 sudo cp joseki.war /usr/local/tomcat/webapps/
 sudo /etc/init.d/tomcat restart

Krok 4. Konfigurujemy Joseki

Polecenia wydajemy w /usr/lib/joseki/Joseki3 .

 sudo cp joseki-configuration.ttl /usr/local/tomcat/webapps/joseki
 sudo nano /usr/local/tomcat/webapps/joseki/WEB-INF/web.xml

W pliku web.xml zmieniamy:

to: <param-value>joseki-config.ttl</param-value>

na: <param-value>/usr/local/tomcat/webapps/joseki/joseki-config.ttl</param-value>

Krok 5. Testujemy Joseki

Polecenia wydajemy w /usr/lib/joseki/Joseki3 . W folderze Data znajdują się przykładowe zbiory danych umieszczane po starcie Joseki w pamięci RAM.

 sudo cp Data /usr/local/tomcat/webapps/joseki -R

Jeżeli wszystkie kroki wykonały się powodzeniem możemy uruchomić przeglądarkę na http://127.0.0.1:8080/joseki/query.html i wykonać kwerendy na przykładowym zbiorze danych.

Bibliografia

http://zoo-garos.zoo.ox.ac.uk/ibrg/index.php/Ubuntu_on_Skiathos

http://makeclean.iobloggo.com/343/installing-joseki-as-tomcat-web-application

Jena – triplestore

piątek, 9 Październik 2009

1. Informacje o frameworku Jena

Jena jest open-sourcowym Semantic Web framework’iem dla Javy (rozwijanym przez HP-Labs). Dostarcza API do pobierania i zapisywania grafów RDF. Grafy są representowane jako abstrakcyjny “model”. Ten model może być przechowywany w plikach, bazach danych lub uzyskiwany za pomocą URL’i. Model może być odpytywany przez SPARQL i aktualizowany przez SPARUL.
Jena standardowo dostarcza wsparcie dla OWL (Web Ontology Language). Framework posiada różne wewnętrzne systemy wnioskujące (np. Pallet) .
Jena potrafi zapisywać RDF grafy do:

  • relacyjnych baz dancyh (za pomocą SDB lub TDB )
  • RDF/XML
  • Turtle
  • Notation 3

Jena API jest najczęściej wykorzystywaną bibloteką do SW w aplikacjach Javy. W przypadku pisania aplikacji w Javie, korzysta się często z biblioteki JenaBean – pozwala ona na mapowanie obiektów Javy do RDF

2. SDB – Baza danych SPARQL dla Jeny

SDB jest komponentem dla Jeny. Pozwala on na przechowywanie grafów RDF w relacyjnych bazach danych. Obsługiwane obecnie bazy to:

  • Microsoft SQL Server 2005 including SQL Server Express
  • Oracle 10gR2 including Oracle Express
  • IBM DB2 including DB2 Express
  • PostgreSQL v8
  • MySQL 5.0 (>=5.0.22)
  • HSQLDB 1.8
  • H2 1.0.73
  • Apache Derby 10.2

W przypadku większych bardzo dużych zbiorów danych korzysta się z TDB.

3. Joseki – HTTP SPARQL endpoint dla Jeny

Joseki jest silniekiem HTTP obsługującym protokół SPARQL. Opis integracji Joseki z SDB znajduje się tutaj.

Joseki obsługuje zapytania SPARQL (do pobierania danych) jak również SPARUL (do modyfikowania danych).

SPARQL/Update pozwala na:
* Dodanie nowych triple do grafu RDF
* Usunięcie triple z grafu RDF
* Wykonaniu grupy operacji uaktualniających jako pojedynczej akcji
* Utworzenie nowego grafu RDF
* Usunięcie grafu RDF

Więcej info o SPARQL tutaj. Korzystanie z Joseki w przypadku aplikacji Ruby upraszcza biblioteka ActiveRDF.

4. Wnioskowanie

Jena posiada wsparcia dla wnioskowania, obsługuje:

  • Transitive reasoner (obsługa właściwości rdfs:subPropertyOf i rdfs:subClassOf)
  • RDFS rule reasoner (wnioskowanie na RDF Schema)
  • OWL, OWL Mini, OWL Micro Reasoners (implementacja OWL/Lite)
  • DAML micro reasoner (DAML API do wnioskowania na RDFS)
  • Generic rule reasoner (obsługa reguł użytkownika. Obsługuje strategie: forward chaining, tabled backward chaining i hybrid execution )

Informacje z dokumentacji.

5.Odnośniki

[Wiki]: http://en.wikipedia.org/wiki/Jena_%28framework%29

[Wstęp do Jeny]: http://www.ibm.com/developerworks/xml/library/j-jena/

[Wstęp do Jeny]: http://jena.sourceforge.net/tutorial/RDF_API/index.html

[Tutorial] : http://kill.devc.at/node/84

Sesame – triplestore

piątek, 9 Październik 2009

1. Słowo wstępu

Triplestore jest bazą danych przeznaczoną do przechowywania i pobierania meta-danych RDF. Podobnie jak w przypadku relacyjnych baz danych (DBMS) dane są pobierane za pomocą specjalnego języka zapytań, np. SPARQL. Triplestore jest zoptymalizowany do zarządzania krótkimi stwierdzeniami zwanymi triples, w formie podmiot-predykat-obiekt np. „Bob zna Freda”.

Sesame jest open-sourcową bazą danych ze wsparciem dla wnioskowania na RDF Schema i wykonywaniu zapytań. Jest bardzo podobna do Jeny, z tym, że Jena zajmuje swoją uwagę mechanizmami wnioskowania. Natomiast Sesame jest zoptymalizowany do przechowywania RDF i wykonywania zapytań. Wydaje się być bardziej niezawodny i szybszy od Jeny. Ponadto ma wsparcie do obsługi transakcji i zapisywania Notation3 data. Obecnie Trwają prace umożliwiające wykorzystanie narzędzi wnioskowania Jeny w Sesame.

2. Typy repozytoriów w Sesame

Sesame pozwala na tworzenie repozytoriów czterech typów:

  • przechowywanych w pamięci RAM (In Memory Store)
  • przechowywanych na dysku HDD (Native Java Store)
  • przechowywanych w relacyjnej bazie danych (obecnie tylko mySQL/postgreSQL RDF Store)
  • Remote RDF Store (dostępne na innym serwerze)

Poza tym dwa pierwsze typy repozytoriów dostępne są z opcją przechowywania informacji o RDF Schema – wykorzystywane one są do wnioskowania. Pierwszy z nich jest najwydajniejszy jednak nie nadaje się do przechowywania dużych zbiorów danych. W przypadku takich danych najlepiej sprawdza się korzystanie z relacyjnej bazy danych.

3. MySQL RDF Store

Podczas tworzenia tego typu repozytorium trzeba podać wiele danych konfiguracyjnych. Przykładowe dane dostępne są poniżej dla triplestor’a przechowującego informacje o filmach utworzonego za pomocą Sesame Workbench:

Type: MySQL RDF Store
ID: MovieDB
Tittle: MovieDB
JDBC Driver: com.mysql.jdbc.Driver
Host: localhost
Port: 3306
Database: MovieDB
Connection : jdbc:mysql://localhost:3306/MovieDB
User: <Nazwa_użytkownika_DB>
Password: <Hasło_użytkownika_DB>
Max nr of triple 256

Trzeba pamiętać oczywiście o wcześniejszym dodaniu sterownika JDBC do folderu [SESAME]/WEB-INF/lib.

Do utworzonego repozytorium należy załadować dane, można je pobrać z http://semprog.com/psw/chapter7/iva_movies.xml. Za pomocą Sesame Workbench dane można załadować za pomocą opcji “Add”. Ukaże się nam formularz, w którym trzeba wskazać lokalizację pliku i jego typ (w tym wypadku RDF/XML), pozostałych opcji można nie modyfikować.

4. Interfejsy dostępu do Sesame

Dostęp do danych zgromadzonych w repozytorium możliwy jest na kilka sposobów:
- za pomocą Sesame API (dostępne wyłącznie dla aplikacji napisanych w Javie)
- za pomocą Consoli
- za pomocą Workbencha
- za pomocą REST API

Wykonywanie zapytań do triplestore możliwe jest w języku SPARQL lub SeRQL (macierzystym języku Sesame).

4.1 Sesame API

Sesame dostarcza API, ktore może być wykorzystane przez aplikacje Javy do dostępu i zarządzania repozytoriami RDF. Pisząc aplikację w Javie, dodatkowo warto wykorzystać bibliotekę Elmo, pozwala ona na mapowanie obiektów Javy na RDF upraszczając w znacznym stopniu pisanie aplikacji Semantic Web. Więcej o mapowaniu obiektów do RDF można znaleść tutaj.

4.2 Consola Sesame

Znajduje się ona w folderze bin pakietu Sesame sdk (Console.sh). Po jej uruchomieniu możemy zarządzać triplestore’m z poziomu konsoli. Wykonywanie zapytań jak różwnież manipulacja danymi są w niej dopuszczalne.

Przykładowe komendy:

– connect http://localhost:8080/openrdf-sesame. – podłączenie się do Sesame server
– show r. – pokazanie wszystkich repozytoriów
– create <profile>. – stworzenie nowego repozytorium. Profile może być np. “memory”or “memory-rdfs”.
– open <repository>. – otwarcie repozytorium
– load <file name>. – załadowanie danych pliku do obecnego repozytorium
– close. – zamknij obecne repozytorium
– drop <repository> – usuń repozytorium
– sparql <query>. – wyślij zapytanie SPARQL do obecnego repozytorium
– exit. – zamknij konsolę

4.3 Sesame Workbench

Dostępny jest pod adresem http://localhost:8080/openrdf-workbench/. Dostarcza interfejsu graficznego do zarządzania repozytoriami (dodawanie/edycja/usuwanie). Głównym repozytorium jest SYSTEM, w którym nie należy umieszczać danych RDF. W nim znajduje się bowiem konfiguracja pozostałych repozytoriów. Dane konfiguracyjne domyślnie przechowywane są w ukrytym folderze w katalogu domowym użytkownika: .aduna. Skutkuje to tym, że usunięcie aplikacji webowej Sesame z folderu ../tomcat/webapps nie powoduje usunięcia informacji o repozytoriach. Ponowne umieszczenie w tym miejscu plików .war przywraca poprzedni stan.

Zapytanie w SPARQL:

Po załadowaniu danych z punktu 3 można wykonać przykładową kwerendę odpytującą o filmy, w których zagrał “John Malkovich”. Po wybraniu opcji Query ukaże nam się formularz Query Repository do którego trzeba wkleić poniższe zapytanie.

PREFIX dc:<http://purl.org/dc/elements/1.1/>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fb:<http://rdf.freebase.com/ns/>

SELECT ?fn WHERE {
?film fb:film.film.performances ?perf .
?perf fb:film.performance.actor ?actor .
?act dc:title "John Malkovich" .
?film dc:title ?fn.

Kliknięcie w “Execute” zwróci wyniki.

Sesame poza językiem SPARQL obsługuje również język SeRQL (rozwijany od początku z Sesame).

4.4 Rest API

Polega ono na wysyłaniu do serwera poleceń HTTP. Są to polecenia :

  • GET
  • UPDATE
  • PUT
  • DELETE

Szczegółowy opis tych poleceń wraz z przykładami użycia dostępny jest tutaj.

Zapytanie w REST API:

http://localhost:8080/openrdf-sesame/repositories/Movie2?
query=PREFIX+dc%3A<http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F>PREFIX+rdf%3A<http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-
syntax-ns%23>PREFIX+fb%3A<http%3A%2F%2Frdf.freebase.com%2Fns%2F>SELECT+%3Ffn+WHERE+{%3Ffilm+fb%3Afilm.film.performances+%3Fperf
+.%3Fperf+fb%3Afilm.performance.actor+%3Factor+.%3Fact+dc%3Atitle+"John+Malkovich"+.%3Ffilm+dc%3Atitle+%3Ffn.}

Odpowiedzią jaką zwróci Sesame może być plik RDF/XML albo plik JSON.

Odpowiedź w REST API:

 <?xml version='1.0' encoding='UTF-8'?>
<sparql xmlns='http://www.w3.org/2005/sparql-results#'>
 <head>
  <variable name='fn'/>
 </head>
 <results>
  <result>
   <binding name='fn'>
    <literal>BOY IN THE STRIPED PAJAMAS, THE</literal>
   </binding>
  </result>
 ....
</sparql>

Lista wszystkich repozytoriów na serwerze:

 curl -H "Accept: application/sparql-results+xml, */*;q=0.5" http://localhost:8080/openrdf-sesame/repositories

Uwaga ! Jeżeli nie posiadamy curl, to instalujemy go komendą: sudo apt-get intall curl.

W przypadku korzystania z REST API i języka programowania Ruby, warto zaopatrzyć się w bibliotekę ActiveRDF (opis).
Jest to zorientowane obiektowo API do zarządzania danymi RDF,pozwala na pełne manipulowanie i wysyłanie zapytań do repozytorium.

5. Wnioskowanie

Sesame wspiera wnioskowanie na RDF Schema. Wsparcie do OWL zapewnia mu OWLIM .OWLIM wykorzystuje silnik IRRE w celu wnioskowania OWL DLP. Według przeprowadzonych badań SwiftOWLIM jest najszybszym silniekiem RDF(S) i OWL (darmowy). Wspiera własne reguły (custom rule engine).

Ciekawa prezentacja na temat biblioteki OWLIM znajduje się tutaj. Opis konfiguracji OWLIM z Sesame i Tomcatem znajduje się tutaj.

6. Bezpieczeństwo

Sesame nie posiada zintegrowanych mechanizmów zarządzających bezpieczeństwem dostępu do repozytoriów. Zamiast tego korzysta z mechanizmów bezpieczeństwa zaimplementowanych w kontenerze webowym (np. Tomcat). Reguły dostępu konfiguruje się w Tomcacie (więcej tutaj) albo dadaje się servlet filter do web.xml (i WEB-INF/classes). Jako, że każde repozytorium ma unikalny URL można określić prawa dostępu HTTP (dla metod GET, POST, PUT, etc.) do określonego użytkowniak dla każdego repozytorium.

7. Odnośniki

[Prezentacja Sesame2]:http://www.openrdf.org/conferences/eswc2006/Sesame-tutorial-eswc2006.ppt

[Prezentacja OWLIM]: http://www.openrdf.org/conferences/eswc2006/OWLIM_SesameTutorialESWC06.pdf

[Prezentacja Elmo]: http://www.openrdf.org/conferences/eswc2006/elmo/ESWC-Elmo.pdf

[Tutorial]: http://www.snee.com/bobdc.blog/2009/02/getting-started-with-sesame.html

Instalacja serwera Sesame w wersji 2.2.4

piątek, 9 Październik 2009

1) Do instalacji Sesame wymagane jest:

  • Java
  • Tomcat

Opis instalacji obu tych narzędzi znajduje się tutaj.

2) Pobieramy pakiet sdk Sesame

Pobieramy pakiet poleceniem wget, rozpakowujemy archiwum i przenosimy pliki war do folderu webbapps serwera Tomcat.

wget http://sourceforge.net/projects/sesame/files/Sesame%202/2.2.4/openrdf-sesame-2.2.4-sdk.tar.gz/download
tar xvzf openrdf-sesame-2.2.4-sdk.tar.gz
mv ./openrdf-sesame-2.2.4/war/* /usr/local/tomcat/webapps

3) Wykonujemy reset Tomcata

 sudo /etc/init.d/tomcat restart

Po wpisaniu w oknie przeglądarki http://localhost:8080/openrdf-workbench/ ukaże nam się Workbench, za pomocą którego w łatwy sposób możemy zarządzać repozytoriami.

4) Integracja z MySQL

W celu dodania możliwości przechowywania repozytorium w MySQL należy umieścić odpowiedni sterownik JDBC w folderze

[TOMCAT_HOME]/webapps/openrdf-sesame/WEB-INF/lib/.

Żeby móc dodać sterownik wewnątrz podanego folderu trzeba zmienić prawa dostępu wszystkich plików i folderów znajdujących się wewnątrz folderu openrdf-sesame:

 sudo chmod 777 -R openrdf-sesame

Następnie pobieramy, rozpakowujemy i przenosimy w odpowiednie miejsce sterownik JDBC:

wget http://mirror.cogentco.com/pub/mysql/Connector-J/mysql-connector-java-5.1.9.tar.gz
tar mysql-connector-java-5.1.9.tar.gz
mv ./mysql-connector-java-5.1.9/*.jar /usr/local/tomcat/webapps/openrdf-sesame/WEB-INF/lib/

Uwaga ! Przed dodaniem bazy jako źródła repozytorium w Workbenchu, trzeba ją wcześniej utworzyć (np. w phpmyadmin).