/** * 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 * $resultform parameter. */ public function queryModel($dataset, Query $query, $resultform = false) { if (isset($GLOBALS['debugSparql']) && $GLOBALS['debugSparql']) { echo "\n" . 'SPARQL query: ' . $query->getQueryString() . "\n"; } $this->query = $query; $this->dataset = $dataset; $qsimp = new SparqlEngineDb_QuerySimplifier(); $qsimp->simplify($this->query); $this->sg = new SparqlEngineDb_SqlGenerator($this->query, $this->dbConn, $this->arModelIds); $this->rc = new SparqlEngineDb_ResultConverter($this->query, $this->sg, $this); $this->ts = new SparqlEngineDb_TypeSorter($this->query, $this->dbConn); $this->setOptions(); if ($this->query->isEmpty()) { $vartable[0]['patternResult'] = null; return $this->returnResult($vartable, $resultform); } $arSqls = $this->sg->createSql(); $this->ts->setData($this->sg); return SparqlEngineDb_ResultConverter::convertFromDbResults($this->queryMultiple($this->ts->getOrderifiedSqls($arSqls)), $this, $resultform); }
echo "Resulting query: " . $query->getQueryString() . "<br/>"; assert("SELECT DISTINCT ##Object.* FROM ##Object LEFT OUTER JOIN ##Class ON ##Object.ID = ##Class.ObjectID WHERE ##Class.className = 'news'" == $query->getQueryString()); echo "Query with CriteriaGroup instead of only one Criteria<br/>"; $query = new Query("object"); $criteriaGroup = new CriteriaGroup(CriteriaGroup::getAndSeparator()); $criteria = new Criteria($query, "hits", "10", Criteria::lessEqualThanType()); $criteriaGroup->addCriterion($criteria); $criteria = new Criteria($query, "hits", "1", Criteria::moreEqualThanType()); $criteriaGroup->addCriterion($criteria); $query->setCriterion($criteriaGroup); echo "Resulting query: " . $query->getQueryString() . "<br/>"; echo "Query with multiples Criteria Groups and an order<br/>"; $query = new Query("object"); $criteriaGroupRoot = new CriteriaGroup(CriteriaGroup::getAndSeparator()); $criteriaGroupOne = new CriteriaGroup(CriteriaGroup::getAndSeparator()); $criteria = new Criteria($query, "created", "2005-04-15", Criteria::lessThanType()); $criteriaGroupOne->addCriterion($criteria); $criteriaGroupTwo = new CriteriaGroup(CriteriaGroup::getOrSeparator()); $criteria = new Criteria($query, "updatedBy", "1"); $criteriaGroupTwo->addCriterion($criteria); $criteria = new Criteria($query, "updatedBy", "2"); $criteriaGroupTwo->addCriterion($criteria); $criteriaGroupRoot->addCriterion($criteriaGroupOne); $criteriaGroupRoot->addCriterion($criteriaGroupTwo); $query->setCriterion($criteriaGroupRoot); $order = new Order($query, "hits", Order::OrderTypeAsc()); $query->addOrder($order); echo "Resulting query: " . $query->getQueryString() . "<br/>"; $rs = $query->execute(); echo "Executed query: "; print_r($rs);