public function EasyRdf_Sparql_Client::query

Make a query to the SPARQL endpoint

SELECT and ASK queries will return an object of type EasyRdf_Sparql_Result.

CONSTRUCT and DESCRIBE queries will return an object of type EasyRdf_Graph.

Parameters

string $query The query string to be executed:

Return value

object EasyRdf_Sparql_Result|EasyRdf_Graph Result of the query.

File

drupal/core/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Client.php, line 84

Class

EasyRdf_Sparql_Client
Class for making SPARQL queries using the SPARQL 1.1 Protocol

Code

public function query($query) {

  # Add namespaces to the queryString
  $prefixes = '';
  foreach (EasyRdf_Namespace::namespaces() as $prefix => $uri) {
    if (strpos($query, "{$prefix}:") !== false and strpos($query, "PREFIX {$prefix}:") === false) {
      $prefixes .= "PREFIX {$prefix}: <{$uri}>\n";
    }
  }
  $client = EasyRdf_Http::getDefaultHttpClient();
  $client
    ->resetParameters();
  $client
    ->setUri($this->uri);
  $client
    ->setMethod('GET');
  $accept = EasyRdf_Format::getHttpAcceptHeader(array(
    'application/sparql-results+json' => 1.0,
    'application/sparql-results+xml' => 0.8,
  ));
  $client
    ->setHeaders('Accept', $accept);
  $client
    ->setParameterGet('query', $prefixes . $query);
  $response = $client
    ->request();
  if ($response
    ->isSuccessful()) {
    list($type, $params) = EasyRdf_Utils::parseMimeType($response
      ->getHeader('Content-Type'));
    if (strpos($type, 'application/sparql-results') === 0) {
      return new EasyRdf_Sparql_Result($response
        ->getBody(), $type);
    }
    else {
      return new EasyRdf_Graph($this->uri, $response
        ->getBody(), $type);
    }
  }
  else {
    throw new EasyRdf_Exception("HTTP request for SPARQL query failed: " . $response
      ->getBody());
  }
}