You are here

function ARC_sparql_parser::parse_ConstructTemplate in Taxonomy import/export via XML 6.2

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_ConstructTemplate()
  2. 5 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_ConstructTemplate()
  3. 6 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_ConstructTemplate()
1 call to ARC_sparql_parser::parse_ConstructTemplate()
ARC_sparql_parser::parse_ConstructQuery in arc/ARC_sparql_parser.php

File

arc/ARC_sparql_parser.php, line 872

Class

ARC_sparql_parser

Code

function parse_ConstructTemplate() {
  $q = $this->q;
  if (preg_match("/^(\\{.*)\$/s", $q, $matches)) {
    $bracket_data = $this
      ->extract_bracket_data($matches[1]);
    $this->q = trim(substr($q, strlen($bracket_data) + 2));
    if ($sub_result = $this
      ->parse_ConstructTriples(trim($bracket_data))) {
      $this->infos["template_triples"] = $sub_result;

      /* set result vars */
      foreach ($sub_result["triples"] as $cur_triple) {
        foreach (array(
          "s",
          "p",
          "o",
        ) as $cur_term_key) {
          $cur_term = $cur_triple[$cur_term_key];
          $cur_term_type = $cur_term["type"];
          $cur_term_val = $cur_term["val"];
          if ($cur_term_type == "var") {
            if (!in_array($cur_term_val, $this->infos["result_vars"])) {
              $this->infos["result_vars"][] = $cur_term_val;
            }
          }
          if ($cur_term_type == "bnode") {
            $cur_term_val = str_replace(":", "_", $cur_term_val);
            if (!in_array($cur_term_val, $this->infos["result_vars"])) {
              $this->infos["result_vars"][] = $cur_term_val;
            }
          }
        }
      }
    }
  }
  else {
    $this->errors[] = "couldn't extract ConstructTriples in parse_ConstructTemplate";
  }
}