コード例 #1
0
ファイル: QueryEngine.php プロジェクト: Rikuforever/wiki
 /**
  * Get the output number for a query in counting mode.
  *
  * @note ignore sorting, just count
  *
  * @param Query $query
  *
  * @return integer
  */
 public function getCountQueryResult(Query $query)
 {
     $this->sortkeys = array();
     $this->compoundConditionBuilder->setSortKeys($this->sortkeys);
     $sparqlCondition = $this->compoundConditionBuilder->buildCondition($query->getDescription());
     $query->addErrors($this->compoundConditionBuilder->getErrors());
     if ($sparqlCondition instanceof SingletonCondition) {
         if ($sparqlCondition->condition === '') {
             // all URIs exist, no querying
             return 1;
         } else {
             $condition = $this->compoundConditionBuilder->convertConditionToString($sparqlCondition);
             $namespaces = $sparqlCondition->namespaces;
             $askQueryResult = $this->connection->ask($condition, $namespaces);
             return $askQueryResult->isBooleanTrue() ? 1 : 0;
         }
     } elseif ($sparqlCondition instanceof FalseCondition) {
         return 0;
     }
     $condition = $this->compoundConditionBuilder->convertConditionToString($sparqlCondition);
     $namespaces = $sparqlCondition->namespaces;
     $options = $this->getOptions($query, $sparqlCondition);
     $options['DISTINCT'] = true;
     $repositoryResult = $this->connection->selectCount('?' . self::RESULT_VARIABLE, $condition, $options, $namespaces);
     return $this->queryResultFactory->newQueryResult($repositoryResult, $query);
 }
コード例 #2
0
 private function getCountQueryResult(Query $query, Condition $compoundCondition)
 {
     if ($this->isSingletonConditionWithElementMatch($compoundCondition)) {
         if ($compoundCondition->condition === '') {
             // all URIs exist, no querying
             return 1;
         } else {
             $condition = $this->compoundConditionBuilder->convertConditionToString($compoundCondition);
             $namespaces = $compoundCondition->namespaces;
             $askQueryResult = $this->connection->ask($condition, $namespaces);
             return $askQueryResult->isBooleanTrue() ? 1 : 0;
         }
     } elseif ($compoundCondition instanceof FalseCondition) {
         return 0;
     }
     $condition = $this->compoundConditionBuilder->convertConditionToString($compoundCondition);
     $namespaces = $compoundCondition->namespaces;
     $options = $this->getOptions($query, $compoundCondition);
     $options['DISTINCT'] = true;
     $repositoryResult = $this->connection->selectCount('?' . self::RESULT_VARIABLE, $condition, $options, $namespaces);
     return $this->queryResultFactory->newQueryResult($repositoryResult, $query);
 }