Help:QueryEngine (SQLStore)

SQLStoreHelp:QueryEngine (SQLStore)


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 QuerySegmentListBuilder transforms ask descriptions into individual QuerySegment's (aka QuerySegmentList)
  • The DescriptionInterpreter interface describes classes that are responsible to interpret a specific Description object and turn it into an abstract SQL construct (a QuerySegment)
  • The QuerySegmentListProcessor flattens and transforms a list of QuerySegment's into a non-recursive tree of SQL statements (including resolving of property/category hierarchies)
  • The ConceptQueryResolver encapsulates query processing of a concept description in connection with the ConceptCache class




```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 ); ```