You are here

function ARC_rdf_store::query in Taxonomy import/export via XML 6.2

Same name and namespace in other branches
  1. 5.2 arc/ARC_rdf_store.php \ARC_rdf_store::query()
  2. 5 arc/ARC_rdf_store.php \ARC_rdf_store::query()
  3. 6 arc/ARC_rdf_store.php \ARC_rdf_store::query()

File

arc/ARC_rdf_store.php, line 61

Class

ARC_rdf_store

Code

function query($args = "") {

  /* query, result_type (query_infos|rows|json|xml|single|rows_n_count|row_count|sql), result_type_args, obj_props, dt_props, iri_alts, ifps, fps, fix_utf8 */
  if (!isset($args["query"]) || !strlen(trim($args["query"]))) {
    return array(
      "error" => "missing or empty query",
    );
  }
  $query = trim($args["query"]);
  $parser =& $this->api
    ->get_sparql_parser();
  $parser
    ->parse($query);

  /* error check */
  if ($errors = $parser
    ->get_errors()) {
    return array(
      "error" => "Errors (or unsupported commands) in query :\n- " . implode("\n- ", $errors) . "\n\n",
    );
  }

  /* run query */
  $infos = $parser
    ->get_infos();
  if (isset($args["result_type"]) && $args["result_type"] == "query_infos") {
    return array(
      "result" => $infos,
      "error" => "",
    );
  }
  $q_type = $infos["query_type"];
  if (!($handler =& $this->api
    ->get_query_handler($q_type))) {
    return array(
      "error" => "Unsupported query type '" . $q_type . "'.",
    );
  }
  $args["infos"] = $infos;
  return $handler
    ->get_result($args);
}