server/src/app/Http/Controllers/Sparql/SparqlClientController.php
author ymh <ymh.work@gmail.com>
Fri, 17 Nov 2017 00:06:39 +0100
changeset 556 a31f1343b913
parent 531 48f5380c26d0
permissions -rw-r--r--
Correct header and footer for backend pages
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
namespace CorpusParole\Http\Controllers\Sparql;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use Log;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
use Illuminate\Http\Request;
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
     8
use Illuminate\Pagination\LengthAwarePaginator;
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
     9
use Illuminate\Pagination\Paginator;
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    10
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
use GuzzleHttp\Client;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
use EasyRdf\Sparql\Result as SparqlResult;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
use EasyRdf\Graph;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
use EasyRdf\RdfNamespace;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
use CorpusParole\Http\Controllers\Controller;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
use CorpusParole\Libraries\Utils;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
use CorpusParole\Libraries\Sparql\SparqlClient;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
use CorpusParole\Libraries\Sparql\SparqlQueryAnalyser;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
use RdfHelper;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
class SparqlClientController extends Controller
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
{
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    const HEADERS_FORWARDED = [ "host", "user-agent", "accept", "accept-language", "accept-encoding", "connection" ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    const SELECT_RESULT_FORMAT = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        "SPARQL/CSV" => "text/csv",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        "SPARQL/JSON" => "application/sparql-results+json",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
        "SPARQL/XML" => "application/sparql-results+xml",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        "SPARQL/TSV" => "text/tab-separated-values",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        "BINARY" => "application/x-binary-rdf-results-table"
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    const GRAPH_RESULT_FORMAT = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        "N-Triples" => "application/n-triples",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        "RDF/XML" => "application/rdf+xml",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
        "Turtle" => "text/turtle",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        "N3" => "text/n3",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        "RDF/JSON" => "application/rdf+json",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        "TriG" => "application/trig",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        "N-Quads" => "application/n-quads",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
        "BinaryRDF" => "application/x-binary-rdf",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        "TriX" => "application/trix",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        "JSON-LD" => "application/ld+json"
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    private $sparqlClient;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    private $httpClient;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
    public function __construct(SparqlClient $sparqlClient, Client $httpClient) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
        $this->sparqlClient = $sparqlClient;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        $this->httpClient = $httpClient;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    58
    public function getSparqlClient($timeout = null) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    59
        if(is_null($timeout)) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    60
            $timeout = config('corpusparole.sparql_client_timeout');
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    61
        }
405
f239c8c5bb94 migrate to rdf4j (2.1.1) from sesame (4.1.1)
ymh <ymh.work@gmail.com>
parents: 389
diff changeset
    62
        $queryUrl = config('corpusparole.rdf4j_query_url');
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    63
        if($timeout > 0) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    64
            $queryUrl = $queryUrl .
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    65
                ((strlen(parse_url($queryUrl, PHP_URL_QUERY)) > 0)?"&":"?").
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    66
                "timeout=$timeout";
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    67
        }
531
48f5380c26d0 Replace EasyRdf http loading with guzzle to solve proxy problems
ymh <ymh.work@gmail.com>
parents: 405
diff changeset
    68
        return new \CorpusParole\Libraries\Sparql\GuzzleSparqlClient($this->httpClient, $queryUrl, config('corpusparole.rdf4j_update_url'));
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    69
    }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    70
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    // display form
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    public function index() {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        return view('sparql/sparqlClientForm');
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    76
    private function readDocs($docs, $fields) {
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
        $results = [];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
        foreach($docs as $row) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
            $results[] = array_reduce($fields, function($res, $field) use ($row) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
                if(isset($row->$field)) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
                    $res[$field] = RdfHelper::serialiseValue($row->$field);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
                } else {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
                    $res[$field] = "<span class=\"corpus-rdf-blank-value\">&nbsp;</span>";
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
                }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
                return $res;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
            }, []);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
        }
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    88
        return $results;
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    89
    }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    90
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    91
    private function abort($code, $message, $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    92
        throw new \Symfony\Component\HttpKernel\Exception\HttpException($code, $message, $exception, []);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    93
    }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    94
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    95
    private function processQueryException($exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    96
        $message = $exception->getMessage();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    97
        if($exception instanceof \EasyRdf\Http\Exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    98
            if(preg_match("/SPARQL\squery/", $message)) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
    99
                $this->abort(400, "La requête SPARQL n'est pas reconnue", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   100
            } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   101
                $this->abort(500, "Problème HTTP lors de la requête SPARQL", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   102
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   103
        } elseif($exception instanceof \EasyRdf\Exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   104
            if(preg_match("/timed\sout/i", $message)) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   105
                $this->abort(408, "Time-out causé par la requête SPARQL", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   106
            } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   107
                $this->abort(500, "Problème dans la requête SPARQL", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   108
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   109
        } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   110
            $this->abort(500, "Erreur serveur lors de la requête", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   111
        }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   112
    }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   113
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   114
    private function querySelect(Request $request, $query, $analyser) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   115
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   116
        $limit = intval($request->input('limit', config('corpusparole.sparql_client_default_limit')));
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   117
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   118
        if($limit === 0 || !is_null($analyser->getLimit()) || !is_null($analyser->getOffset()) ) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   119
            try {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   120
                $docs = $this->getSparqlClient()->query($query);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   121
            } catch(\Exception $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   122
                $this->processQueryException($exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   123
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   124
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   125
            $fields = $docs->getFields();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   126
            $results = $this->readDocs($docs, $fields);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   127
            $count = count($results);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   128
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   129
        } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   130
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   131
            $page = Paginator::resolveCurrentPage(config('corpusparole.pagination_page_param'));
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   132
            assert(is_null($page) || is_numeric($page));
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   133
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   134
            $offset = max(0,($page - 1) * $limit);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   135
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   136
            try {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   137
                $countResult = $this->getSparqlClient()->query($analyser->getCountQuery());
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   138
                $docs = $this->getSparqlClient()->query($query . " LIMIT $limit OFFSET $offset");
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   139
            } catch(\Exception $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   140
                $this->processQueryException($exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   141
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   142
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   143
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   144
            $countField = $countResult->getFields()[0];
389
2204faa0b41a Correct problem in spaqrl client in php 56 + add line numbering in result table
ymh <ymh.work@gmail.com>
parents: 387
diff changeset
   145
            $countResult->rewind();
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   146
            $count = $countResult->current()->$countField->getValue();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   147
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   148
            $fields = $docs->getFields();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   149
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   150
            $results = new LengthAwarePaginator($this->readDocs($docs, $fields), $count, $limit, $page, [
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   151
                'path' => Paginator::resolveCurrentPath(),
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   152
                'pageName' => config('corpusparole.pagination_page_param'),
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   153
            ]);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   154
        }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   155
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
        $namespaces = array_reduce(array_keys(RdfHelper::getPrefixes()), function($res, $p) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
            $res[$p] = RdfNamespace::namespaces()[$p];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
            return $res;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
        }, []);
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   160
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
        $data = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
            'query' => $query,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
            'count' => $count,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
            'fields' => $fields,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
            'fieldPrefix' => "?",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
            'results' => $results,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
            'namespaces' => $namespaces,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
            'downloadFormats' => self::SELECT_RESULT_FORMAT
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
        ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
        $view = 'sparql/sparqlClientResultList';
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
        return [$view, $data];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
    private function queryGraph(Request $request, $query, $analyser) {
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   175
        try {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   176
            $docs = $this->getSparqlClient()->query($query);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   177
        } catch(\Exception $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   178
            $this->processQueryException($exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   179
        }
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   181
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
        $fields = ["subject", "predicate", "object"];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
        $results = [];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
        foreach ($docs->resources() as $resource ) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
            foreach ($resource->propertyUris() as $property) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
                $propertyResource = $docs->resource($property);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
                foreach ($resource->all($propertyResource) as $value) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
                    $results[] = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
                        'subject' => RdfHelper::serialiseValue($resource),
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
                        'predicate'=> RdfHelper::serialiseValue($propertyResource),
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
                        'object'=> RdfHelper::serialiseValue($value)
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
                    ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
                }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
            }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
        $namespaces = array_reduce(array_keys(RdfHelper::getPrefixes()), function($res, $p) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
            $res[$p] = RdfNamespace::namespaces()[$p];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
            return $res;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
        }, []);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
        $data = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
            'query' => $query,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
            'count' => count($results),
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
            'fields' => $fields,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
            'fieldPrefix' => "",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
            'results' => $results,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
            'namespaces' => $namespaces,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
            'downloadFormats' => self::GRAPH_RESULT_FORMAT
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
        ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
        $view = 'sparql/sparqlClientResultList';
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
        return [$view, $data];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
    private function queryAsk(Request $request, $query, $analyser) {
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   217
        try {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   218
            $result = $this->getSparqlClient()->query($query);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   219
        } catch(\Exception $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   220
            $this->processQueryException($exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   221
        }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   222
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
        $data = [
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   224
            'results' => $result,
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
            'namespaces' => $analyser->getPrefixes()
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
        ];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
        $view = 'sparql/sparqlClientResultBoolean';
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
        return [$view, $data];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
    private function showHtml(Request $request) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
        $query = $request->input('query');
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
        $analyser = new SparqlQueryAnalyser($query);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
        $queryType = $analyser->getQueryType();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
        $namespaces = $analyser->getPrefixes();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
        foreach($namespaces as $prefix => $nUri) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
            RdfNamespace::set($prefix,$nUri);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
        if($queryType === SparqlQueryAnalyser::SELECT_QUERY) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
            list($view, $data) = $this->querySelect($request, $query, $analyser);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
        } elseif($queryType === SparqlQueryAnalyser::GRAPH_QUERY) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
            list($view, $data) = $this->queryGraph($request, $query, $analyser);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
        } elseif($queryType === SparqlQueryAnalyser::ASK_QUERY) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
            list($view, $data) = $this->queryAsk($request, $query, $analyser);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
        } else {
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   253
            abort(400, "La requête n'est pas reconnue");
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
        return view($view, $data);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    private function proxyQuery(Request $request, $format=null) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
        $query = $request->input('query');
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
        $headers = [];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
        foreach (self::HEADERS_FORWARDED as $h) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
            $headerValue = $request->header($h);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
            if($headerValue) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
                $headers[$h] = $headerValue;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
            }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
        if(!empty($format)){
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
            $headers['Accept'] = $format;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   275
        $queryParams = $request->all();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   276
        $queryParams['timeout'] = config('corpusparole.sparql_client_timeout');
405
f239c8c5bb94 migrate to rdf4j (2.1.1) from sesame (4.1.1)
ymh <ymh.work@gmail.com>
parents: 389
diff changeset
   277
        $queryUrl = config('corpusparole.rdf4j_query_url');
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   278
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   279
        try {
405
f239c8c5bb94 migrate to rdf4j (2.1.1) from sesame (4.1.1)
ymh <ymh.work@gmail.com>
parents: 389
diff changeset
   280
            $rdf4jResp = $this->httpClient->post($queryUrl, ['form_params' => $queryParams, 'headers' => $headers]);
387
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   281
        } catch(\GuzzleHttp\Exception\ServerException $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   282
            if($exception->getCode() == 503) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   283
                $this->abort(408, "Time-out causé par la requête SPARQL", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   284
            } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   285
                $this->abort(500, "Problème lors de la requête SPARQL", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   286
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   287
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   288
        } catch(\GuzzleHttp\Exception\RequestException $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   289
            $message = $exception->getMessage();
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   290
            if(preg_match("/MALFORMED\sQUERY/i", $message)) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   291
                $abortMessage = "Requête SPARQL mal-formée";
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   292
            } else {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   293
                $abortMessage = "Problème lors de la requête SPARQL";
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   294
            }
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   295
            $this->abort($exception->getCode(), $abortMessage, $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   296
        } catch(\Exception $exception) {
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   297
            $this->abort(500, "Erreur serveur lors de la requête", $exception);
7fba86fa8604 Sparql client implementation
ymh <ymh.work@gmail.com>
parents: 386
diff changeset
   298
        }
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
405
f239c8c5bb94 migrate to rdf4j (2.1.1) from sesame (4.1.1)
ymh <ymh.work@gmail.com>
parents: 389
diff changeset
   300
        $resp = response((string)$rdf4jResp->getBody(), $rdf4jResp->getStatusCode());
f239c8c5bb94 migrate to rdf4j (2.1.1) from sesame (4.1.1)
ymh <ymh.work@gmail.com>
parents: 389
diff changeset
   301
        foreach ($rdf4jResp->getHeaders() as $name => $values) {
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
            if($name != 'Transfer-Encoding') {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
                $resp->header($name, $values);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
            }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
        return $resp;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
    // display result
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
    public function show(Request $request) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
        $format = $request->input('format');
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
        if($format === 'text/html') {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
            return $this->showHtml($request);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
        } else {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
            return $this->proxyQuery($request, $format);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
    // do the query
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
    public function query(Request $request) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
        return $this->proxyQuery($request);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
}