/** * Get the results for a query in instance retrieval mode. * * @param Query $query * * @return QueryResult */ public function getInstanceQueryResult(Query $query) { $this->sortkeys = $query->sortkeys; $sparqlCondition = $this->compoundConditionBuilder->setSortKeys($this->sortkeys)->buildCondition($query->getDescription()); if ($sparqlCondition instanceof SingletonCondition) { $matchElement = $sparqlCondition->matchElement; if ($sparqlCondition->condition === '') { // all URIs exist, no querying $results = array(array($matchElement)); } else { $condition = $this->compoundConditionBuilder->convertConditionToString($sparqlCondition); $namespaces = $sparqlCondition->namespaces; $askQueryResult = $this->connection->ask($condition, $namespaces); $results = $askQueryResult->isBooleanTrue() ? array(array($matchElement)) : array(); } $federateResultSet = new FederateResultSet(array(self::RESULT_VARIABLE => 0), $results); } elseif ($sparqlCondition instanceof FalseCondition) { $federateResultSet = new FederateResultSet(array(self::RESULT_VARIABLE => 0), array()); } else { $condition = $this->compoundConditionBuilder->convertConditionToString($sparqlCondition); $namespaces = $sparqlCondition->namespaces; $options = $this->getOptions($query, $sparqlCondition); $options['DISTINCT'] = true; $federateResultSet = $this->connection->select('?' . self::RESULT_VARIABLE, $condition, $options, $namespaces); } return $this->queryResultFactory->newQueryResult($federateResultSet, $query); }
private function lookupResourceUriTargetFromDatabase(ExpNsResource $expNsResource) { $resourceUri = TurtleSerializer::getTurtleNameForExpElement($expNsResource); $rediUri = TurtleSerializer::getTurtleNameForExpElement(Exporter::getSpecialPropertyResource('_REDI')); $skeyUri = TurtleSerializer::getTurtleNameForExpElement(Exporter::getSpecialPropertyResource('_SKEY')); $federateResultSet = $this->connection->select('*', "{$resourceUri} {$skeyUri} ?s OPTIONAL { {$resourceUri} {$rediUri} ?r }", array('LIMIT' => 1), array($expNsResource->getNamespaceId() => $expNsResource->getNamespace())); return $federateResultSet->current(); }