[Loki] SPARQL Endpoint w Loki
Zespół
Opis
Studium wykonalności (+prototyp).
Wymagania
Spotkania
20141217
Spotkanie organizacyjne
KKT: przykładowa baza wiedzy (z lokidev z zajęć) → spakować do zipa i wrzucić tutaj
Projekt
Sprawozdanie
Projekt został wykonany w oparciu o Remote API dostępne standardowo w DokuWiki. Do zadawania zapytań wykorzystywany jest protokół XML-RPC.
W celu realizacji projektu została zmodyfikowana istniejąca metoda process_sparql z klasy LokiUtlSparql tak aby możliwe było zwracanie danych w innej formie niż kod html tabeli. Dodany został dodatkowy parametr returnType ustawiony domyślnie na wartość 'html' (aby domyślnie był zwracany kod html tabeli), parametr ten może przyjmować następujące wartości:
Parametr ma wpływ na wynik tylko w przypadku zapytań typu SELECT, w przypadku zapytań ASK zwracana jest wartość true/false (dla displayType json i xml) lub yes/no (dla displayType html w celu zachowania kompatybilności wstecznej).
Ze względu na konstrukcję biblioteki LokiUtlSparql w przypadku jakiegokolwiek błędu (niepoprawne zapytanie) zwracana jest pusta wartość. Pomimo użycia podczas testów parametru msgerr=„display” metoda nie zwracała poprawnie błędów (jest to możliwy bug biblioteki).
Zgodnie z dokumentacją został utworzony plik remote.php w katalogu głównym pluginu loki. Zawiera on definicję metody plugin.loki.querySparql wywoływanej przy pomocy protokołu XML-RPC. Metoda ta jest określona jako publiczna stąd może zostać wywołana bez konieczności uprzedniego uwierzytelniania użytkownika.
Przykład wywołania metody za pomocą wbudowanej w DokuWiki biblioteki IXR (Inutio XML-RPC Library):
<?php
require_once('inc/init.php');
$client = new IXR_Client('http://loki.dev/lib/exe/xmlrpc.php');
$query = 'PREFIX wiki: <>
SELECT ?title ?genre ?author
WHERE
{
?book wiki:genre ?genre.
?book wiki:title ?title.
?book wiki:author ?author.
FILTER (?genre!=bookstore:genre:handbook)
}
ORDER BY INC(?title)
LIMIT 5';
if ($client->query('plugin.loki.querySparql', $query,'json')
) {
echo $client->getResponse();
}
Sposób instalacji
Nowy plik loki_utl_sparql.php należy umieścić w katalogu lib/plugins/loki/utl
Plik remote.php należy umieścić w katalogu lib/plugins/loki
W panelu administracyjnym w opcjach konfiguracyjnych należy zaznaczyć opcję „Enable the remote
API system. This allows other applications to access the wiki via XML-RPC or other mechanisms.”
Do pobrania
Materiały