Source for file SparqlEngineDb.php
Documentation is available at SparqlEngineDb.php
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngine.php';
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/Offsetter.php';
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/ResultConverter.php';
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/SqlGenerator.php';
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/SqlMerger.php';
* SPARQL engine optimized for databases.
* Generates SQL statements to directly query the database,
* letting the database system do all the hard work like
* selecting, joining, filtering and ordering results.
* @author Christian Weiske <cweiske@cweiske.de>
* Database connection object.
* Internal ID for our graph model.
* Stored in the database along the statements.
* Prepared SQL statements are stored in here.
* If the prepared statement is really prepared, or if we just emulate it.
* @var SparqlEngineDb_SqlGenerator
* @var SparqlEngineDb_TypeSorter
* Prepared statments preparator instance
* @var SparqlEngineDb_Preparator
* Use SparqlEngine::factory() to create the instance
$this->dbConn =
$model->getDbConn();
$this->modelID =
$model->getModelID();
}//public function __construct(DbModel $model)
* Query the database with the given SPARQL query.
* @param Dataset $dataset RDF Dataset
* @param Query $query Parsed SPARQL query
* @param string $resultform Result form. If set to 'xml' the result will be
* SPARQL Query Results XML Format as described in http://www.w3.org/TR/rdf-sparql-XMLres/ .
* @return array/string array of triple arrays, or XML. Format depends on
public function queryModel(Dataset $dataset, Query $query, $resultform =
false)
$vartable[0]['patternResult'] =
null;
return $this->returnResult($vartable, $resultform);
}//public function queryModel(Dataset $dataset, Query $query, $resultform = false)
* Create a prepared statement that can be executed later.
* @param Dataset $dataset RDF Dataset
* @param Query $query Parsed SPARQL query
* @return SparqlEngineDb_PreparedStatement Prepared statment that can
public function prepare(Dataset $dataset, Query $query)
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/PreparedStatement.php';
require_once RDFAPI_INCLUDE_DIR .
'sparql/SparqlEngineDb/Preparator.php';
list
($strSelect, $strFrom, $strWhere) =
$this->arPrepared;
$this->arPreparedQueries,
}//public function prepare(Dataset $dataset, Query $query)
* Execute a prepared statement by filling it with variables
* @param array $arVariables Array with (variable name => value) pairs
* @param string $resultform Which form the result should have
* @return mixed Result according to $resultform
public function execute($arVariables, $resultform =
false)
throw
new Exception('You need to prepare() the query first.');
list
($strSelect, $strFrom, $strWhere) =
$this->arPrepared;
}//public function execute($arVariables, $resultform)
* Executes multiple SQL queries and returns an array
* @param array $arSqls Array of SQL queries
* @return array Array of query results
if ($arSM['limit'] ===
null &&
$arSM['offset'] ===
null) {
list
($nSql, $nOffset) =
$offsetter->determineOffset($arSqls);
$nLimit =
$arSM['limit'];
foreach ($arSqls as $nId =>
$arSql) {
if ($nId <
$nSql) { continue; }
$nCurrentLimit =
$nLimit -
$nCount;
$dbResult =
$this->queryDb($arSql, $nOffset, $nCurrentLimit);
$nCount +=
$dbResult->RowCount();
$arResults[] =
$dbResult;
if ($nLimit !==
null &&
$nCount >=
$nLimit) {
//return array_map(array($this, 'queryDb'), $arSql);
}//protected function queryMultiple($arSql)
* Sends the sql to the database and returns the results.
* @internal Switches between ADOConnection::Execute() and
* ADOConnection::SelectLimit() depending on the $query parameter's
* $solutionModifier "limit" and "offset" settings.
* @param array $arSql Array that gets a SQL query string once imploded
* @return mixed Anything ADOConnection::Execute() may return
* @throws Exception If Database query does not work
function queryDb($arSql, $nOffset, $nLimit)
return new ADORecordSet(false);
// I want associative arrays.
$oldmode =
$this->dbConn->SetFetchMode(ADODB_FETCH_ASSOC);
if ($nLimit ===
null &&
$nOffset ==
0) {
$ret =
$this->dbConn->execute($strSql);
} else if ($nLimit ===
null) {
$ret =
$this->dbConn->SelectLimit($strSql, -
1, $nOffset);
$ret =
$this->dbConn->SelectLimit($strSql, $nLimit, $nOffset);
//... but others maybe not
$this->dbConn->SetFetchMode($oldmode);
'ADOdb error: ' .
$this->dbConn->ErrorMsg() .
"\n"
}//function queryDb($sql)
}//public function getQuery()
}//public function getSqlGenerator()
}//public function getTypeSorter()
Documentation generated on Fri, 1 Jun 2007 16:52:08 +0200 by phpDocumentor 1.3.2