|
From: <cw...@us...> - 2007-07-04 12:09:56
|
Revision: 467
http://rdfapi-php.svn.sourceforge.net/rdfapi-php/?rev=467&view=rev
Author: cweiske
Date: 2007-07-04 05:09:55 -0700 (Wed, 04 Jul 2007)
Log Message:
-----------
support for variable renaming: SELECT datatype(?o) AS ?dt WHERE ..
Modified Paths:
--------------
trunk/rdfapi-php/api/sparql/Query.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb.php
trunk/rdfapi-php/api/sparql/SparqlParser.php
Modified: trunk/rdfapi-php/api/sparql/Query.php
===================================================================
--- trunk/rdfapi-php/api/sparql/Query.php 2007-07-04 08:44:01 UTC (rev 466)
+++ trunk/rdfapi-php/api/sparql/Query.php 2007-07-04 12:09:55 UTC (rev 467)
@@ -185,7 +185,7 @@
*/
public function getResultVar($strName) {
foreach ($this->resultVars as $var) {
- if ((string)$var == $strName) {
+ if ($var->getVariable() == $strName) {
return $var;
}
}
@@ -546,7 +546,7 @@
public $variable = null;
public $datatype = null;
public $language = null;
- public $newname = null;
+ public $alias = null;
public $func = null;
@@ -558,9 +558,9 @@
- public function setNewName($as)
+ public function setAlias($alias)
{
- $this->newname = $as;
+ $this->alias = $alias;
}
@@ -610,10 +610,10 @@
public function getName()
{
- if ($this->newname !== null) {
- return $this->newname;
+ if ($this->alias !== null) {
+ return $this->alias;
}
- //FIXME: support for nested(functios())
+ //FIXME: support for nested(functions())
return $this->variable;
}
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php 2007-07-04 08:44:01 UTC (rev 466)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php 2007-07-04 12:09:55 UTC (rev 467)
@@ -474,6 +474,11 @@
{
$var = $this->query->getResultVar($varname);
if ($var !== false) {
+ if ((string)$var != $varname) {
+ //copy over var assignments
+ $this->arVarAssignments[(string)$var] = $this->arVarAssignments[$varname];
+ }
+
//works on non-* only
$func = $var->getFunc();
if ($func != null) {
@@ -484,10 +489,10 @@
);
}
return array(
- $strTablePrefix . '.l_datatype as "' . $strTablePrefix . '.' . $this->getSqlVariableNameValue($varname) . '"',
- '"r"' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameIs($varname) . '"',
- '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameLanguage($varname) . '"',
- '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameDatatype($varname) . '"',
+ $strTablePrefix . '.l_datatype as "' . $strTablePrefix . '.' . $this->getSqlVariableNameValue($var) . '"',
+ '"r"' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameIs($var) . '"',
+ '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameLanguage($var) . '"',
+ '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameDatatype($var) . '"',
);
} else if ($func == 'lang') {
if ($chType != 'o') {
@@ -496,10 +501,10 @@
);
}
return array(
- $strTablePrefix . '.l_language as "' . $strTablePrefix . '.' . $this->getSqlVariableNameValue($varname) . '"',
- '"l"' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameIs($varname) . '"',
- '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameLanguage($varname) . '"',
- '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameDatatype($varname) . '"',
+ $strTablePrefix . '.l_language as "' . $strTablePrefix . '.' . $this->getSqlVariableNameValue($var) . '"',
+ '"l"' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameIs($var) . '"',
+ '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameLanguage($var) . '"',
+ '""' . ' as "' . $strTablePrefix . '.' . $this->getSqlVariableNameDatatype($var) . '"',
);
} else {
throw new SparqlEngineDb_SqlGeneratorException(
@@ -795,7 +800,15 @@
*/
protected static function isResultVar($strVar, &$arResultVars)
{
- return in_array('*', $arResultVars) || in_array($strVar, $arResultVars);
+ foreach ($arResultVars as $var) {
+ if ($var == '*') {
+ return true;
+ } else if ((is_string($var) && $var == $strVar)
+ || (is_object($var) && $var->getVariable() == $strVar)) {
+ return true;
+ }
+ }
+ return false;
}//protected static function isResultVar($strVar, &$arResultVars)
@@ -897,8 +910,9 @@
- protected function getSqlVariableName($strSparqlVar)
+ protected function getSqlVariableName($var)
{
+ $strSparqlVar = (string)$var;
if (!isset($this->arVarAssignments[$strSparqlVar]['sqlname'])) {
if (preg_match('/[a-zA-Z0-9]+/', substr($strSparqlVar, 1))) {
$strName = 'v_' . substr($strSparqlVar, 1);
@@ -908,43 +922,47 @@
$this->arVarAssignments[$strSparqlVar]['sqlname'] = $strName;
}
return $this->arVarAssignments[$strSparqlVar]['sqlname'];
- }//protected function getSqlVariableName($strSparqlVar)
+ }//protected function getSqlVariableName($var)
- protected function getSqlVariableNameValue($strSparqlVar)
+ protected function getSqlVariableNameValue($var)
{
+ $strSparqlVar = (string)$var;
$this->arVarAssignments[$strSparqlVar]['sql_value'] =
- 'value_' . $this->getSqlVariableName($strSparqlVar);
+ 'value_' . $this->getSqlVariableName($var);
return $this->arVarAssignments[$strSparqlVar]['sql_value'];
- }//protected function getSqlVariableNameValue($strSparqlVar)
+ }//protected function getSqlVariableNameValue($var)
- protected function getSqlVariableNameIs($strSparqlVar)
+ protected function getSqlVariableNameIs($var)
{
+ $strSparqlVar = (string)$var;
$this->arVarAssignments[$strSparqlVar]['sql_is'] =
- 'is_' . $this->getSqlVariableName($strSparqlVar);
+ 'is_' . $this->getSqlVariableName($var);
return $this->arVarAssignments[$strSparqlVar]['sql_is'];
- }//protected function getSqlVariableNameIs($strSparqlVar)
+ }//protected function getSqlVariableNameIs($var)
- protected function getSqlVariableNameLanguage($strSparqlVar)
+ protected function getSqlVariableNameLanguage($var)
{
+ $strSparqlVar = (string)$var;
$this->arVarAssignments[$strSparqlVar]['sql_lang'] =
- 'lang_' . $this->getSqlVariableName($strSparqlVar);
+ 'lang_' . $this->getSqlVariableName($var);
return $this->arVarAssignments[$strSparqlVar]['sql_lang'];
- }//protected function getSqlVariableNameLanguage($strSparqlVar)
+ }//protected function getSqlVariableNameLanguage($var)
- protected function getSqlVariableNameDatatype($strSparqlVar)
+ protected function getSqlVariableNameDatatype($var)
{
+ $strSparqlVar = (string)$var;
$this->arVarAssignments[$strSparqlVar]['sql_type'] =
- 'type_' . $this->getSqlVariableName($strSparqlVar);
+ 'type_' . $this->getSqlVariableName($var);
return $this->arVarAssignments[$strSparqlVar]['sql_type'];
- }//protected function getSqlVariableNameDatatype($strSparqlVar)
+ }//protected function getSqlVariableNameDatatype($var)
}//class SparqlEngineDb_SqlGenerator
?>
\ No newline at end of file
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb.php 2007-07-04 08:44:01 UTC (rev 466)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb.php 2007-07-04 12:09:55 UTC (rev 467)
@@ -311,7 +311,7 @@
// I want associative arrays.
$oldmode = $this->dbConn->SetFetchMode(ADODB_FETCH_ASSOC);
-var_dump($strSql);
+//var_dump($strSql);
if ($nLimit === null && $nOffset == 0) {
$ret = $this->dbConn->execute($strSql);
} else if ($nLimit === null) {
Modified: trunk/rdfapi-php/api/sparql/SparqlParser.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-07-04 08:44:01 UTC (rev 466)
+++ trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-07-04 12:09:55 UTC (rev 467)
@@ -314,7 +314,7 @@
if ($this->varCheck($curTok) || $curLow == '*') {
if ($bWaitForRenaming) {
$bWaitForRenaming = false;
- $currentVar->setNewName($curTok);
+ $currentVar->setAlias($curTok);
if ($currentFunc != null) {
$currentVar->setFunc($currentFunc);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|