You are here

function ARC_sparql2sql_rewriter::get_dataset_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_dataset_code()
  2. 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_dataset_code()
  3. 6 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_dataset_code()
3 calls to ARC_sparql2sql_rewriter::get_dataset_code()
ARC_sparql2sql_rewriter::get_left_join_code in arc/ARC_sparql2sql_rewriter.php
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 821

Class

ARC_sparql2sql_rewriter

Code

function get_dataset_code($for_optionals = false, $exact_alias = false) {
  $result = "";
  $added_aliases = array();
  $sets = $this->infos["datasets"];
  $n_sets = $this->infos["named_datasets"];
  if (!count($sets) && !count($n_sets)) {
    return $result;
  }

  /* non-graph'd patterns */
  foreach ($this->non_graph_aliases as $cur_alias) {
    $sub_result = "";
    if (!$exact_alias || $exact_alias == $cur_alias) {
      if (!$for_optionals && !in_array($cur_alias, $this->optional_t_counts) || $for_optionals && in_array($cur_alias, $this->optional_t_counts)) {

        /* datasets */
        foreach ($sets as $cur_set) {
          $sub_result .= strlen($sub_result) ? "\n  OR " : " ";
          $sub_result .= "T" . $cur_alias . ".g=" . $this->api
            ->get_id($cur_set, 1);
          $sub_result .= " /* " . str_replace("*", "", str_replace("#", "::", htmlspecialchars($cur_set))) . " */ ";
        }
      }
    }
    if ($sub_result) {
      $result .= strlen($result) ? "\n AND " : " ";
      $result .= "(" . $sub_result . ")";
    }
  }

  /* graph'd patterns */
  foreach ($this->graphs as $cur_alias => $graph) {
    $graph_type = $graph["type"];
    $graph_val = $graph["val"];
    if (!$exact_alias || $exact_alias == $cur_alias) {
      if ($graph_type == "var" && (!$for_optionals && !in_array($cur_alias, $this->optional_t_counts)) || $for_optionals && in_array($cur_alias, $this->optional_t_counts)) {
        $sub_result = "";

        /* named datasets, if set */
        if (($my_sets = $n_sets) || ($my_sets = $sets)) {
          foreach ($my_sets as $cur_set) {
            $sub_result .= strlen($sub_result) ? "\n  OR " : " ";
            $sub_result .= "T" . $cur_alias . ".g=" . $this->api
              ->get_id($cur_set, 1);
            $sub_result .= " /* " . str_replace("*", "", str_replace("#", "::", htmlspecialchars($cur_set))) . " */ ";
          }
        }
        if ($sub_result) {
          $result .= strlen($result) ? "\n AND " : " ";
          $result .= "(" . $sub_result . ")";
        }
      }
    }
  }
  return $result;
}