/** * 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); }
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); }