|
From: <cw...@us...> - 2007-06-21 09:48:42
|
Revision: 459
http://rdfapi-php.svn.sourceforge.net/rdfapi-php/?rev=459&view=rev
Author: cweiske
Date: 2007-06-21 02:48:40 -0700 (Thu, 21 Jun 2007)
Log Message:
-----------
Simplifier nearly works, but the parser seems to have a bug
Modified Paths:
--------------
trunk/rdfapi-php/api/sparql/GraphPattern.php
trunk/rdfapi-php/api/sparql/SparqlEngine.php
trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php
trunk/rdfapi-php/api/sparql/SparqlParser.php
Modified: trunk/rdfapi-php/api/sparql/GraphPattern.php
===================================================================
--- trunk/rdfapi-php/api/sparql/GraphPattern.php 2007-06-21 09:10:50 UTC (rev 458)
+++ trunk/rdfapi-php/api/sparql/GraphPattern.php 2007-06-21 09:48:40 UTC (rev 459)
@@ -24,7 +24,7 @@
* Array of QueryTriple objects
* @var array
*/
- protected $triplePatterns = null;
+ protected $triplePatterns = array();
/**
* A List of Constraint objects
@@ -69,11 +69,11 @@
/**
* Constructor
*/
- public function GraphPattern(){
- $this->open = true ;
+ public function GraphPattern() {
+ $this->open = true;
$this->isConstructPattern = false;
- $this->constraints = false;
- $this->triplePatterns = false;
+ $this->constraints = array();
+ $this->triplePatterns = array();
}
/**
@@ -137,7 +137,7 @@
* @param String $name
* @return void
*/
- public function setGraphname($name){
+ public function setGraphname($name) {
$this->graphname = $name;
}
@@ -148,7 +148,7 @@
* @return void
*/
public function addTriplePatterns($trpP) {
- $this->triplePatterns = array_merge($$this->triplePatterns, $trpP);
+ $this->triplePatterns = array_merge($this->triplePatterns, $trpP);
}
/**
@@ -165,39 +165,48 @@
* Adds a single Constraint to the GraphPattern.
*
* @param Constraint $cons
- * @return void
*/
- public function addConstraint(&$cons){
+ public function addConstraint(&$cons) {
$this->constraints[] = $cons;
}
+
/**
+ * Adds an array of Constraint objects to the GraphPattern.
+ *
+ * @param array $cons
+ */
+ public function addConstraints(&$cons) {
+ $this->constraints = array_merge($this->constraints, $cons);
+ }
+
+ /**
* Adds a pointer to an optional graphPattern.
*
- * @param integer $pattern
+ * @param integer $patternId
* @return void
*/
- public function addOptional($pattern){
- $this->optional = &$pattern;
+ public function setOptional($patternId) {
+ $this->optional = &$patternId;
}
/**
* Adds a pointer to a union graphPattern.
*
- * @param integer $pattern
+ * @param integer $patternId
* @return void
*/
- public function addUnion($pattern){
- $this->union = &$pattern;
+ public function setUnion($patternId) {
+ $this->union = &$patternId;
}
/**
* Adds a pointer to a pattern that
* this one is subpattern of
*
- * @param integer $pattern
+ * @param integer $patternId
*/
- public function setSubpatternOf($pattern){
- $this->subpatternOf = $pattern;
+ public function setSubpatternOf($patternId) {
+ $this->subpatternOf = $patternId;
}
@@ -256,9 +265,9 @@
public function isEmpty()
{
return
- $this->getTriplePatterns() === false
+ count($this->triplePatterns) == 0
&& $this->getGraphname() === null
- && $this->getConstraints() === false
+ && count($this->constraints) == 0
&& $this->getOptional() === null
&& $this->getUnion() === null
&& $this->getSubpatternOf() === null
@@ -272,11 +281,15 @@
*/
public function __clone()
{
- foreach ($this->triplePatterns as $nId => $pattern) {
- $this->triplePatterns[$nId] = clone $this->triplePatterns[$nId];
+ if (count($this->triplePatterns) > 0) {
+ 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];
+ if (count($this->constraints) > 0) {
+ foreach ($this->constraints as $nId => $constraint) {
+ $this->constraints[$nId] = clone $this->constraints[$nId];
+ }
}
}
Modified: trunk/rdfapi-php/api/sparql/SparqlEngine.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngine.php 2007-06-21 09:10:50 UTC (rev 458)
+++ trunk/rdfapi-php/api/sparql/SparqlEngine.php 2007-06-21 09:48:40 UTC (rev 459)
@@ -153,7 +153,7 @@
// generate an empty result set
$finalRes = null;
// if the GraphPattern has triple patterns
- if($graphPattern->getTriplePatterns()>0){
+ if (count($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){
@@ -189,7 +189,7 @@
$patternlist[$un]['hasUnion']++;
$constraint = $graphPattern->getConstraints();
- if($constraint != null){
+ if(count($constraint) > 0){
foreach($constraint as $constr){
if($constr->isOuterFilter()){
$patternlist[$graphPattern->getId()]['outerFilter'][] = $constr;
Modified: trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php 2007-06-21 09:10:50 UTC (rev 458)
+++ trunk/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php 2007-06-21 09:48:40 UTC (rev 459)
@@ -52,15 +52,15 @@
*/
protected function createPlan(&$arPatterns)
{
- list($arNumbers, $nNotZero) = $this->getNumbers($arPatterns);
+ $arNumbers = $this->getNumbers($arPatterns);
if (count($arNumbers) == 0) {
return array();
}
$arPlan = array();
- foreach ($arNumbers as $nId => $nNumber) {
- $nParent = $pattern->getSubpatternOf();
+ foreach ($arNumbers as $nId => $nPatternCount) {
+ $nParent = $arPatterns[$nId]->getSubpatternOf();
$arPlan[$nParent][] = $nId;
}
@@ -69,6 +69,9 @@
+ /**
+ * Executes the plan
+ */
protected function executePlan(&$arPatterns, &$arPlan)
{
foreach ($arPlan as $nParent => $arChildren) {
@@ -76,11 +79,18 @@
$nNextId = $nParent;
foreach ($arChildren as $nChild) {
$new = clone $base;
- $new->addTriplePatterns($arPatterns[$nChild]->getTriplePattern());
+ $new->addTriplePatterns($arPatterns[$nChild]->getTriplePatterns());
+ $new->addConstraints( $arPatterns[$nChild]->getConstraints());
+ $new->setId($nNextId);
+ if ($nParent != $nNextId) {
+ $new->setUnion($nParent);
+ }
$arPatterns[$nNextId] = $new;
$nNextId = $nChild;
}
+ //last one is not not needed anymore
+ unset($arPatterns[$nNextId]);
}
}//protected function executePlan(&$arPatterns, &$arPlan)
@@ -114,7 +124,7 @@
}
}
- rsort($arNumbers);
+ arsort($arNumbers);
return $arNumbers;
}//protected function getNumbers(&$arPatterns)
Modified: trunk/rdfapi-php/api/sparql/SparqlParser.php
===================================================================
--- trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-06-21 09:10:50 UTC (rev 458)
+++ trunk/rdfapi-php/api/sparql/SparqlParser.php 2007-06-21 09:48:40 UTC (rev 459)
@@ -560,12 +560,12 @@
){
$pattern = $this->query->getNewPattern($constr);
if (is_int($optional)) {
- $pattern->addOptional($optional);
+ $pattern->setOptional($optional);
} else {
$this->tmp = $pattern->getId();
}
if (is_int($union)) {
- $pattern->addUnion($union);
+ $pattern->setUnion($union);
}
if (is_int($subpattern)) {
$pattern->setSubpatternOf($subpattern);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|