You are here

function ARC_sparql_parser::parse_DescribeQuery in Taxonomy import/export via XML 5

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_DescribeQuery()
  2. 6.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_DescribeQuery()
  3. 6 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_DescribeQuery()

File

arc/ARC_sparql_parser.php, line 532

Class

ARC_sparql_parser

Code

function parse_DescribeQuery() {

  /* vars */
  $vars = $this
    ->extract_vars($this->q);
  $result_vars = array();
  $result_iris = array();
  $return_all = false;

  /* result vars/iris */
  if (preg_match("/^\\*/", $this->q, $matches)) {

    /* * */
    $result_vars = $vars;
    $return_all = true;
  }
  else {

    /* explicit var list */
    $q = $this->q;
    while ($sub_result = $this
      ->parse_VarOrIRIref($q)) {
      if ($sub_result["type"] == "var") {
        $result_vars[] = $sub_result["val"];
        $this->logs[] = "adding result var " . $sub_result["val"];
      }
      elseif ($sub_result["type"] == "iri") {
        $result_iris[] = $sub_result["val"];
        $this->logs[] = "adding result iri " . $sub_result["val"];
      }
      $q = $sub_result["unparsed_val"];
    }
    $this->q = $q;
  }
  $this->infos["vars"] = $vars;
  $this->infos["result_vars"] = $result_vars;
  $this->infos["result_iris"] = $result_iris;

  /* FROM */
  $this
    ->parse_DatasetClause();

  /* WHERE */
  $this
    ->parse_WhereClause();

  /* ORDER/LIMIT/OFFSET */
  $this
    ->parse_SolutionModifier();

  /* result_iris */
  if ($return_all) {
    $this->infos["result_iris"] = $this->iris;
  }
}