-
Notifications
You must be signed in to change notification settings - Fork 0
/
RemoteSPARQLEndpoint.php
64 lines (59 loc) · 2.12 KB
/
RemoteSPARQLEndpoint.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/**
* Copyright 2011 Felix Ostrowski, hbz
*
* This file is part of Phresnel.
*
* Phresnel is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* Phresnel is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
* more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Phresnel. If not, see <http://www.gnu.org/licenses/>.
*/
require_once("SPARQLEndpoint.php");
/**
* A remote SPARQL endpoint
*/
class RemoteSPARQLEndpoint extends SPARQLEndpoint {
/**
* Query the endpoint
*
* @param string $query
* @return LibRDF_Model
*/
protected function _query($query) {
$query = urlencode($query);
$curl_handle = curl_init();
curl_setopt($curl_handle,
CURLOPT_HTTPHEADER,
array('Accept: text/plain'));
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 1);
curl_setopt($curl_handle, CURLOPT_TIMEOUT, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt($curl_handle, CURLOPT_URL, $this->_graph);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "query=$query");
$this->_logger->logInfo("Start query\n" . $query);
$start = microtime(true);
$result = curl_exec($curl_handle);
$end = microtime(true);
$duration = $end - $start;
//$this->_logger->logInfo("Query result: \n".$result);
switch (curl_errno($curl_handle)) {
case 28:
$this->_logger->logError("Query timeout");
break;
default:
$this->_logger->logInfo("End query, duration: " . $duration);
}
curl_close($curl_handle);
return $result;
}
}