|
From: <cw...@us...> - 2007-06-21 09:10:52
|
Revision: 458
http://rdfapi-php.svn.sourceforge.net/rdfapi-php/?rev=458&view=rev
Author: cweiske
Date: 2007-06-21 02:10:50 -0700 (Thu, 21 Jun 2007)
Log Message:
-----------
Big BC breaking commit:
- Query::getTriplePattern renamed to getTriplePatterns
- Query::getConstraint renamed to getConstraints
- GraphPattern::addTriplePattern -> setTriplePatterns
- isVariable moved from SqlGenerator to SparqlVariable.php
!! Custom renderers will need to adjust getTriplePattern calls!
Modified Paths:
--------------
trunk/rdfapi-php/api/sparql/GraphPattern.php
trunk/rdfapi-php/api/sparql/QueryTriple.php
trunk/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php
trunk/rdfapi-php/api/sparql/SparqlEngine.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php
trunk/rdfapi-php/api/sparql/SparqlParser.php
Added Paths:
-----------
trunk/rdfapi-php/api/sparql/SparqlVariable.php
Modified: trunk/rdfapi-php/api/sparql/GraphPattern.php
===================================================================
--- trunk/rdfapi-php/api/sparql/GraphPattern.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/GraphPattern.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -21,14 +21,16 @@
protected $graphname = null;
/**
- * @var array The TriplePattern.
+ * Array of QueryTriple objects
+ * @var array
*/
- protected $triplePattern = null;
+ protected $triplePatterns = null;
/**
- * @var array A List of Constraints.
+ * A List of Constraint objects
+ * @var array
*/
- protected $constraint = array();
+ protected $constraints = array();
/**
* @var int Pointer to optional pattern.
@@ -70,8 +72,8 @@
public function GraphPattern(){
$this->open = true ;
$this->isConstructPattern = false;
- $this->constraint = false;
- $this->triplePattern = false;
+ $this->constraints = false;
+ $this->triplePatterns = false;
}
/**
@@ -88,8 +90,8 @@
*
* @return Array
*/
- public function getTriplePattern(){
- return $this->triplePattern;
+ public function getTriplePatterns(){
+ return $this->triplePatterns;
}
/**
@@ -97,8 +99,8 @@
*
* @return Constraint
*/
- public function getConstraint() {
- return $this->constraint;
+ public function getConstraints() {
+ return $this->constraints;
}
/**
@@ -138,24 +140,35 @@
public function setGraphname($name){
$this->graphname = $name;
}
+
/**
- * Adds a List of QueryTriples to the GraphPattern.
+ * Sets the List of QueryTriples to the GraphPattern.
*
* @param array $trpP
* @return void
*/
- public function addTriplePatterns($trpP){
- $this->triplePattern = $trpP;
+ public function addTriplePatterns($trpP) {
+ $this->triplePatterns = array_merge($$this->triplePatterns, $trpP);
}
/**
- * Adds a Constraint to the GraphPattern.
+ * Sets the List of QueryTriples to the GraphPattern.
*
+ * @param array $trpP
+ * @return void
+ */
+ public function setTriplePatterns($trpP) {
+ $this->triplePatterns = $trpP;
+ }
+
+ /**
+ * Adds a single Constraint to the GraphPattern.
+ *
* @param Constraint $cons
* @return void
*/
public function addConstraint(&$cons){
- $this->constraint[] = $cons;
+ $this->constraints[] = $cons;
}
/**
* Adds a pointer to an optional graphPattern.
@@ -220,7 +233,7 @@
{
$arVars = array();
- foreach ($this->triplePattern as $pattern) {
+ foreach ($this->triplePatterns as $pattern) {
$arVars = array_merge($arVars, $pattern->getVariables());
}
@@ -243,14 +256,29 @@
public function isEmpty()
{
return
- $this->getTriplePattern() === false
- && $this->getGraphname() === null
- && $this->getConstraint() === false
- && $this->getOptional() === null
- && $this->getUnion() === null
- && $this->getSubpatternOf() === null
+ $this->getTriplePatterns() === false
+ && $this->getGraphname() === null
+ && $this->getConstraints() === false
+ && $this->getOptional() === null
+ && $this->getUnion() === null
+ && $this->getSubpatternOf() === null
;
}//public function isEmpty()
+
+
+ /**
+ * When cloning, we need to clone some subobjects, too
+ */
+ public function __clone()
+ {
+ foreach ($this->triplePatterns as $nId => $pattern) {
+ $this->triplePatterns[$nId] = clone $this->triplePatterns[$nId];
+ }
+ foreach ($this->constraints as $nId => $constraint) {
+ $this->constraints[$nId] = clone $this->constraints[$nId];
+ }
+ }
+
}// end class: GraphPattern.php
?>
\ No newline at end of file
Modified: trunk/rdfapi-php/api/sparql/QueryTriple.php
===================================================================
--- trunk/rdfapi-php/api/sparql/QueryTriple.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/QueryTriple.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -2,7 +2,7 @@
// ---------------------------------------------
// Class: QueryTriple
// ---------------------------------------------
-require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlEngineDb/SqlGenerator.php';
+require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlVariable.php';
/**
* Represents a query triple with subject, predicate and object.
@@ -97,15 +97,26 @@
$arVars = array();
foreach (array('subject', 'predicate', 'object') as $strVar) {
- if (SparqlEngineDb_SqlGenerator::isVariable($this->$strVar)) {
+ if (SparqlVariable::isVariable($this->$strVar)) {
$arVars[] = $this->$strVar;
}
}
return $arVars;
- }
+ }//public function getVariables()
-}
+
+ public function __clone()
+ {
+ foreach (array('subject', 'predicate', 'object') as $strVar) {
+ if (is_object($this->$strVar)) {
+ $this->$strVar = clone $this->$strVar;
+ }
+ }
+ }//public function __clone()
+
+}//class QueryTriple extends Object
+
// end class: QueryTriple.php
?>
\ No newline at end of file
Modified: trunk/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -83,7 +83,7 @@
return $resultGraph;
}
- $tp = $constructPattern->getTriplePattern();
+ $tp = $constructPattern->getTriplePatterns();
$bnode = 0;
foreach ($arVartable as $value) {
Modified: trunk/rdfapi-php/api/sparql/SparqlEngine.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngine.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngine.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -153,11 +153,11 @@
// generate an empty result set
$finalRes = null;
// if the GraphPattern has triple patterns
- if($graphPattern->getTriplePattern()>0){
+ if($graphPattern->getTriplePatterns()>0){
// check if the pattern has a GRAPH clause and if this Iri is in $graphlist
$newGraphList = $this->_checkGraphs($graphPattern,$graphlist);
if($newGraphList){
- $qt = $graphPattern->getTriplePattern();
+ $qt = $graphPattern->getTriplePatterns();
$resultSet = $this->findTuplesMatchingOnePattern($qt[0], $newGraphList);
for ($i=1; $i<count($qt); $i++) {
$rs = $this->findTuplesMatchingOnePattern($qt[$i], $newGraphList);
@@ -188,7 +188,7 @@
if(is_int($un))
$patternlist[$un]['hasUnion']++;
- $constraint = $graphPattern->getConstraint();
+ $constraint = $graphPattern->getConstraints();
if($constraint != null){
foreach($constraint as $constr){
if($constr->isOuterFilter()){
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -1,4 +1,5 @@
<?php
+require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlVariable.php';
/**
* Generates SQL from Sparql FILTER parts
@@ -141,7 +142,7 @@
protected function createValue($tree, $bDumbParent)
{
$strValue = stripslashes($tree['value']);
- if (SparqlEngineDb_SqlGenerator::isVariable($strValue)) {
+ if (SparqlVariable::isVariable($strValue)) {
if (!isset($this->sg->arUnionVarAssignments[$this->nUnionCount][$strValue])) {
throw new SparqlEngineDb_SqlGeneratorException(
'Unknown variable in filter: ' . $strValue
@@ -775,7 +776,7 @@
{
return $tree['type'] == 'value'
&& $tree['type']['quoted'] === false
- && !SparqlEngineDb_SqlGenerator::isVariable($tree['value']);
+ && !SparqlVariable::isVariable($tree['value']);
}//protected function isValueButNotVariableNorString($tree)
@@ -790,7 +791,7 @@
{
return $tree['type'] == 'value'
&& $tree['quoted'] === false
- && SparqlEngineDb_SqlGenerator::isVariable($tree['value'])
+ && SparqlVariable::isVariable($tree['value'])
&& isset($this->sg->arUnionVarAssignments[$this->nUnionCount][$tree['value']]);
}//protected function isVariable($tree)
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -69,6 +69,23 @@
+ protected function executePlan(&$arPatterns, &$arPlan)
+ {
+ foreach ($arPlan as $nParent => $arChildren) {
+ $base = $arPatterns[$nParent];
+ $nNextId = $nParent;
+ foreach ($arChildren as $nChild) {
+ $new = clone $base;
+ $new->addTriplePatterns($arPatterns[$nChild]->getTriplePattern());
+ $arPatterns[$nNextId] = $new;
+
+ $nNextId = $nChild;
+ }
+ }
+ }//protected function executePlan(&$arPatterns, &$arPlan)
+
+
+
/**
* Returns an array of id-value pairs determining
* which pattern IDs (array id) are deepest nested
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -291,7 +291,7 @@
return $resultGraph;
}
- $tp = $constructPattern->getTriplePattern();
+ $tp = $constructPattern->getTriplePatterns();
$bnode = 0;
foreach ($arVartable as $value) {
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -1,4 +1,5 @@
<?php
+require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlVariable.php';
require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlEngineDb/TypeSorter.php';
require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlEngineDb/FilterGenerator.php';
require_once RDFAPI_INCLUDE_DIR . 'sparql/SparqlEngineDb/SqlGeneratorException.php';
@@ -182,7 +183,7 @@
$this->arUnionVarAssignments[$this->nUnionCount] = array();
}
$this->nTriplePatternCount = 0;
- $arTriplePattern = $graphPattern->getTriplePattern();
+ $arTriplePattern = $graphPattern->getTriplePatterns();
if ($arTriplePattern != null) {
foreach ($arTriplePattern as $triplePattern) {
list (
@@ -213,7 +214,7 @@
if ($graphPattern->getUnion() !== null) {
++$this->nUnionCount;
}
- $arConstraints = $graphPattern->getConstraint();
+ $arConstraints = $graphPattern->getConstraints();
if ($arConstraints != null) {
foreach ($arConstraints as $constraint) {
$arWhere[$this->nUnionCount][count($arWhere[$this->nUnionCount]) - 1]
@@ -304,7 +305,7 @@
* SELECT part
* We do select only the columns we need for variables
*/
- if (self::isVariable($subject)) {
+ if (SparqlVariable::isVariable($subject)) {
if (isset($this->arUnionVarAssignments[$this->nUnionCount][$subject])) {
//already selected -> add equality check
$strWhereEquality .= ' AND ' . self::getSqlEqualityCondition(
@@ -334,7 +335,7 @@
}
}
- if (self::isVariable($predicate)) {
+ if (SparqlVariable::isVariable($predicate)) {
if (isset($this->arUnionVarAssignments[$this->nUnionCount][$predicate])) {
//already selected -> add equality check
$strWhereEquality .= ' AND ' . self::getSqlEqualityCondition(
@@ -362,7 +363,7 @@
}
}
- if (self::isVariable($object)) {
+ if (SparqlVariable::isVariable($object)) {
if (isset($this->arUnionVarAssignments[$this->nUnionCount][$object])) {
//already selected -> add equality check
$strWhereEquality .= ' AND ' . self::getSqlEqualityCondition(
@@ -589,7 +590,7 @@
function getSqlCondition($bject, $strTablePrefix, $strType)
{
if (is_string($bject)) {
- if (self::isVariable($bject)) {
+ if (SparqlVariable::isVariable($bject)) {
//variable?
if (self::isPreparedVariable($bject)) {
//no, not really
@@ -737,20 +738,6 @@
/**
- * Checks if the given subject/predicate/object
- * is a variable name.
- *
- * @return boolean
- */
- public static function isVariable($bject)
- {
- return is_string($bject) && strlen($bject) >= 2
- && ($bject[0] == '?' || $bject[0] == '$');
- }//public static function isVariable($bject)
-
-
-
- /**
* Checks if the given variable is a replacement
* for a prepared statement.
*
Modified: trunk/rdfapi-php/api/sparql/SparqlParser.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-06-21 07:09:49 UTC (rev 457)
+++ trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -730,8 +730,9 @@
}
} while ($cont);
+
if (count($trp) > 0) {
- $pattern->addTriplePatterns($trp);
+ $pattern->setTriplePatterns($trp);
}
}
Added: trunk/rdfapi-php/api/sparql/SparqlVariable.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlVariable.php (rev 0)
+++ trunk/rdfapi-php/api/sparql/SparqlVariable.php 2007-06-21 09:10:50 UTC (rev 458)
@@ -0,0 +1,39 @@
+<?php
+require_once RDFAPI_INCLUDE_DIR . '/model/Node.php';
+require_once RDFAPI_INCLUDE_DIR . '/util/Object.php';
+
+/**
+* Object representation of a SPARQL variable.
+*/
+class SparqlVariable extends Object
+{
+ public $name;
+
+ public function __construct($name)
+ {
+ $this->name = $name;
+ }
+
+
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+
+
+
+ /**
+ * Checks if the given subject/predicate/object
+ * is a variable name.
+ *
+ * @return boolean
+ */
+ public static function isVariable($bject)
+ {
+ return is_string($bject) && strlen($bject) >= 2
+ && ($bject[0] == '?' || $bject[0] == '$');
+ }//public static function isVariable($bject)
+
+}
+?>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|