You are here

function ARC_sparql2sql_rewriter::get_graph_code in Taxonomy import/export via XML 5.2

Same name and namespace in other branches
  1. 5 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_graph_code()
  2. 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_graph_code()
  3. 6 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_graph_code()
2 calls to ARC_sparql2sql_rewriter::get_graph_code()
ARC_sparql2sql_rewriter::get_select_sql in arc/ARC_sparql2sql_rewriter.php
ARC_sparql2sql_rewriter::get_union_select_sql in arc/ARC_sparql2sql_rewriter.php

File

arc/ARC_sparql2sql_rewriter.php, line 779

Class

ARC_sparql2sql_rewriter

Code

function get_graph_code() {
  $result = "";
  $added_joins = array();
  foreach ($this->graphs as $alias => $graph) {
    $graph_type = $graph["type"];
    $graph_val = $graph["val"];
    if ($graph_type == "iri") {
      $result .= strlen($result) ? "\n AND " : "";
      $result .= "T" . $alias . ".g=" . $this->api
        ->get_id($graph_val, 1);
      $result .= " /* " . str_replace("*", "", str_replace("#", "::", htmlspecialchars($graph_val))) . " */ ";
    }
    elseif ($graph_type == "var") {

      /* graph joins */
      $alias_infos = $this->graph_term2alias[$graph_val];
      $alias_1 = $alias_infos[0]["alias"];
      for ($i = 1, $i_max = count($alias_infos); $i < $i_max; $i++) {
        $cur_alias_info = $alias_infos[$i];
        $cur_alias = $cur_alias_info["alias"];
        $cur_join = "T" . $alias_1 . ".g=T" . $cur_alias . ".g";
        if ($alias_1 != $cur_alias && !in_array($cur_join, $added_joins)) {
          $result .= strlen($result) ? "\n AND " : "";
          $result .= $cur_join;
          $added_joins[] = $cur_join;
        }
      }

      /* graph occurences in triple patterns */
      if ($alias_infos = @$this->term2alias[$graph_val]) {
        $alias_info = $alias_infos[0];
        $alias = $alias_info["alias"];
        $col = $alias_info["col"];
        $cur_join = "T" . $alias_1 . ".g=T" . $alias . "." . $col;
        if ($alias_1 != $alias && !in_array($cur_join, $added_joins)) {
          $result .= strlen($result) ? "\n AND " : "";
          $result .= $cur_join;
          $added_joins[] = $cur_join;
        }
      }
    }
  }
  return $result;
}