Help:QueryEngine (SQLStore)
QueryEngine
The QueryEngine handles the transformation of the ask query language into a SQL construct and is also
responsible to return query results from the SQL back-end with the help of the following components:
- The
QuerySegmentListBuildertransformsaskdescriptions into individualQuerySegment's (akaQuerySegmentList) - The
DescriptionInterpreterinterface describes classes that are responsible to interpret a specificDescriptionobject and turn it into an abstractSQLconstruct (aQuerySegment) - The
QuerySegmentListProcessorflattens and transforms a list ofQuerySegment's into a non-recursive tree ofSQLstatements (including resolving of property/category hierarchies) - The
ConceptQueryResolverencapsulates query processing of a concept description in connection with theConceptCacheclass
Overview

Examples
```php /** * Equivalent to [[Category:Foo]] */ $classDescription = new ClassDescription( new DIWikiPage( 'Foo', NS_CATEGORY ) );
/** * Equivalent to [[:+]] */ $namespaceDescription = new NamespaceDescription( NS_MAIN );
/** * Equivalent to [[Foo::+]] */ $someProperty = new SomeProperty( new DIProperty( 'Foo' ), new ThingDescription() );
/**
* Equivalent to [[:+]][[Category:Foo]][[Foo::+]]
*/
$description = new Conjunction( [
$namespaceDescription,
$classDescription,
$someProperty
] );
php
$query = new Query( $description );
$query->setLimit( 10 );
$sqlStorefactory = new SQLStoreFactory( new SQLStore() );
$queryEngine = $sqlStorefactory->newMasterQueryEngine(); $queryResult = $queryEngine->getQueryResult( $query ); ```