[Loki] SPARQL Endpoint w Loki

Zespół

  • Krzysztof Kurzydło, Osoba2

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:

  • html
  • json
  • xml

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

  1. Nowy plik loki_utl_sparql.php należy umieścić w katalogu lib/plugins/loki/utl
  2. Plik remote.php należy umieścić w katalogu lib/plugins/loki
  3. 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

pl/dydaktyka/semweb/2014/projects/lokiendpoint.txt · ostatnio zmienione: 2019/06/27 15:50 (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