You are here

function ARC_sparql2sql_rewriter::get_best_table_name in Taxonomy import/export via XML 5

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_best_table_name()
  2. 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_best_table_name()
  3. 6 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_best_table_name()
2 calls to ARC_sparql2sql_rewriter::get_best_table_name()
ARC_sparql2sql_rewriter::get_from_code in arc/ARC_sparql2sql_rewriter.php
ARC_sparql2sql_rewriter::get_left_join_code in arc/ARC_sparql2sql_rewriter.php

File

arc/ARC_sparql2sql_rewriter.php, line 266

Class

ARC_sparql2sql_rewriter

Code

function get_best_table_name($alias = "") {
  $store_type = $this->config["store_type"];
  $prefix = $this->config["prefix"];
  $has_prop_tables = isset($this->config["prop_tables"]) && count($this->config["prop_tables"]) ? true : false;
  if ($store_type == "basic") {
    return $prefix . "_triple";
  }
  if (isset($this->alias_prop_infos[$alias])) {
    $a_info = $this->alias_prop_infos[$alias];

    /* graph check */
    if ($a_info["in_graph"]) {
      return $prefix . "_triple_all_wdup";
    }
    if ($store_type == "split") {

      /* try concrete p iri */
      if ($a_info["p_term_type"] == "iri") {
        $p_iri = $a_info["p_term_val"];

        /* check prop_table_infos */
        if (isset($this->prop_table_infos[$p_iri])) {
          return $this->prop_table_infos[$p_iri]["tbl"];
        }

        /* o is literal */
        if ($a_info["o_term_type"] == "literal" || in_array($p_iri, $this->dt_props)) {
          return $prefix . "_triple_dp";
        }

        /* o is iri */
        if ($a_info["o_term_type"] == "iri" || in_array($p_iri, $this->obj_props)) {
          return $prefix . "_triple_op";
        }
      }

      /* o is literal */
      if ($a_info["o_term_type"] == "literal") {
        return $prefix . "_triple_dp_all";
      }

      /* o is iri */
      if ($a_info["o_term_type"] == "iri") {
        return $prefix . "_triple_op_all";
      }

      /* o is obj */
      if ($a_info["o_term_type"] == "var") {
        $o_var_val = $a_info["o_term_val"];
        if (($col_occurs = $this->var_col_occurs[$o_var_val]) && in_array("s", $col_occurs)) {

          /* used to join => obj prop */
          return $has_prop_tables ? $prefix . "_triple_op_all" : $prefix . "_triple_op";
        }
      }
    }
  }
  return $store_type == "split" ? $prefix . "_triple_all" : $prefix . "_triple";
}