/** * order by a property (must be set as shown property before) * * @param type $uri the property to order by * @param boolean $asc true if ascending, false if descending */ public function setOrderProperty($uri, $asc = true) { $this->setOffset(0); if ($this->_sortTriple == null) { $orderVar = new Erfurt_Sparql_Query2_Var('order'); $this->_sortTriple = new Erfurt_Sparql_Query2_OptionalGraphPattern(array(new Erfurt_Sparql_Query2_Triple($this->getResourceVar(), new Erfurt_Sparql_Query2_IriRef($uri), $orderVar))); $this->_resourceQuery->getWhere()->addElement($this->_sortTriple); $this->_resourceQuery->getOrder()->add($orderVar, $asc ? Erfurt_Sparql_Query2_OrderClause::ASC : Erfurt_Sparql_Query2_OrderClause::DESC); } else { $this->_sortTriple->getElement(0)->setP(new Erfurt_Sparql_Query2_IriRef($uri)); if ($asc) { $this->_resourceQuery->getOrder()->setAsc(0); } else { $this->_resourceQuery->getOrder()->setDesc(0); } } $this->invalidate(); }