public function testUndefinedVariableDetected() { $queryBuilder = new QueryBuilder(self::$prefixes); $queryBuilder->select('?email')->where('?person', 'test:name', '?name')->also('test:age', '?age'); $this->setExpectedException('RangeException', '?email'); $queryBuilder->getSPARQL(); }
public function getPropertyEntityIdValueMatches(PropertyId $propertyId, EntityId $valueId) { $propertyText = $propertyId->getSerialization(); $valueText = $valueId->getSerialization(); $queryBuilder = new QueryBuilder($this->config->get('WikidataQueryPrefixes')); $queryBuilder->select('?id')->where("?id", "wdt:{$propertyText}", "wd:{$valueText}"); $queryExecuter = new QueryExecuter($this->config->get('WikidataQueryUrl')); $results = $queryExecuter->execute($queryBuilder->getSPARQL()); return $this->parseResults($results); }
public function testGetSPARQL_noPrefixes() { $queryBuilder = new QueryBuilder(array('foo' => 'bar')); $this->assertEquals('SELECT * WHERE { }', $queryBuilder->getSPARQL(false)); }
/** * Adds the given subquery. * * @param QueryBuilder $queryBuilder * @return self * @throws InvalidArgumentException */ public function subquery(QueryBuilder $queryBuilder) { $this->subqueries[] = $queryBuilder->getSPARQL(false); $this->usageValidator->trackDefinedVariables(implode(' ', $queryBuilder->getSelects())); // @todo temp hack to add AS definitions to defined variables $regexHelper = new RegexHelper(); $matches = $regexHelper->getMatches('AS \\{variable}', implode(' ', $queryBuilder->getSelects())); $this->usageValidator->trackDefinedVariables($matches); return $this; }