Tygron Query Language: Difference between revisions

From Tygron Support wiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
(287 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{stub}}
TQL is short for Tygron Query Language. It provides a means of obtaining and adjusting data of a [[session]]. It is comprised of a number of key phrases, that can be divided into 2 categories: statements and clauses. The statements indicate what data interaction should take place; retrieving using a [[Select (TQL)|<code>SELECT</code>]] statement, or adjusting using an [[Update (TQL)|<code>UPDATE</code>]] statement. The clauses provide a means to filter the data the interaction is applied to. A query always consists of exactly 1 statement and 0 or more clauses. Each clause always consists of a [[Clause (TQL)|Clause parameter]] and a value.


==Queries==
TQL can access both property data from individual items, as well as spatial information. Property data pertains to a specific component of a [[project]], such as individual [[building]]s, [[indicator]]s, or [[global]]s. Polygon data pertains to geographic data; surface areas in the [[project map]], such as the lot size of [[building]]s, the surface area of [[neighborhood]]s, or calculated [[grid overlay|grid]]s. Depending on what kind of statement is used, the query will interact with its clauses treating them as items or as polygons.


An example of a TQL query is:
: <code>SELECT_LOTSIZE_WHERE_CATEGORY_IS_SOCIAL_AND_STAKEHOLDERTYPE_IS_MUNICIPALITY</code>.




==Clauses==
In this example, <code>SELECT_LOTSIZE</code> is the statement. <code>CATEGORY_IS_SOCIAL</code> is the first clause, and <code>STAKEHOLDERTYPE_IS_MUNICIPALITY</code> is the second clause. It would return all the land area taken up with social housing, which is also owned by a municipal stakeholder.
The following groups of clauses exist:


===Specific polygons===
Note that all clauses in a TQL query are cumulative. All clauses are connected by the term <code>AND</code>. This means all clauses must be met before the data is "counted". Depending on how you use TQL in your project or applications, it is possible to simulate an "OR" functionality as well (e.g. <code>CATEGORY_IS_SOCIAL</code> ''or'' <code>CATEGORY_IS_NORMAL</code>). This can be done simply by executing multiple queries, one for each "OR" section.
{| class="wikitable"
|-
! Clause
! As a polygon
! As an item
! Type
|-
| AREA
| The requested data must intersect with this [[area]].
| It must be data of this area specifically.
| ID indicating a specific area.
|-
| NEIGHBORHOOD
| The requested data must intersect with this [[neighborhood]].
| It must be data of this neighborhood specifically.
| ID indicating a specific neighborhood.
|-
| ZONE
| The requested data must intersect with this [[zone]].
| It must be data of this zone specifically.
| ID indicating a specific zone.
|-
| TERRAIN
| The requested data must intersect with this [[terrain]] type.
| It must be data of this type of terrain. There are no specific "instances" of terrain.
| ID indicating a type of terrain.
|}


===Unspecific polygons===
More examples can be found at [[TQL Examples]].
{| class="wikitable"
|-
! Clause
! As a polygon
! As an item
! Type
|-
| AREA_WITH_ATTRIBUTE
| The requested data must intersect with at least one [[area]] with this attribute.
| N/A
| Attribute name of one or more areas.
|-
| NEIGHBORHOOD_WITH_ATTRIBUTE
| The requested data must intersect with at least one [[neighborhood]] with this attribute.
| N/A
| Attribute name of one or more neighborhoods.
|-
| ZONE_WITH_ATTRIBUTE
| The requested data must intersect with at least one [[zone]] with this attribute.
| N/A
| Attribute name of one or more zones.
|-
| TERRAIN_WITH_ATTRIBUTE
| The requested data must intersect with [[terrain]] with this attribute.
| N/A
| Attribute name of one or more terrains.
|}


===Grids===
==TQL components==
{| class="wikitable"
TQL queries are composed of 2 major elements: the [[#Statements|statement]], and the [[Clause (TQL)|clauses]]. Together they may make up a single query.
|-
! Clause
! As a polygon
! As an item
! Type
|-
| MAXGRIDVALUE
| It must have at least this value on a [[grid overlay]].
| N/A
| Decimal number.
|-
| MINGRIDVALUE
| It must have at most this value on a grid overlay.
| N/A
| Decimal number.
|-
| GRID
| It must fall within this grid.
| It must be data of this grid overlay specifically.
| ID indicating a specific zone.
|-
| GRIDTYPE
| It must fall within this type of grid.
| It must be data of this type of grid, not a specific "instance" of this grid.
| Technical name indicating a type of grid overlay.
|}


Note that each grid automatically covers the entire map, unless a minimum gridvalue or maximum gridvalue is defined. For queries such as GRIDAVG, this can be acceptable. However, for example, a query of SELECT_LANDSIZE_WHERE_GRID_IS_2 is functionally the same as SELECT_LANDSIZE.
===Statements===
Statements are the instruction which is to be performed with the [[Project]]. A query always has exactly one statement.  


Also note that when a GRIDTYPE is selected but multiple [[overlays]] of that type exist in the [[project]], there are no guarantees on which overlay is used specifically.
There are 2 kinds of [[TQL]] Statements:
* [[Select (TQL)|Select statement]]s, for data retrieval from [[Item]]s in a [[Project]]
* [[Update (TQL)|Update statement]]s, for writing data (back) into the [[Project]] and its [[Item]]s


===Grids===
===Clauses===
{| class="wikitable"
{{main|Clause (TQL)}}
|-
Clauses indicate the conditions which must be met for any data to be taken into account for a statement. In a query, they are connected to the statement using the phrase <code>WHERE</code>. Multiple additional clauses can be added to a query using the phrase <code>AND</code>. Clauses added to a query are cumulative conditions which must all be met. Data is ignored if it fails to meet any of the specified conditions.
! Clause
 
! As a polygon
For any given [[Select (TQL)]] or [[Update (TQL)]] statement, different clauses can be applied from across all these groups. The availability and function of clauses is also influenced by whether the statement dictates an interaction with polygon data or with item data. Consequently, some clauses are only available for specific statement types.
! As an item
 
! Type
The order in which the clauses appear in the query is not relevant.
|-
 
| BUILDING
For a full list of available clauses, see [[Clause (TQL)]].
| The requested data must intersect with this [[construction]].
 
| It must be data of this construction specifically.
====Limiting Search Polygon====
| ID indicating a specific construction.
Some clause parameters described on this wiki note that they ''Limit the Search Polygon''. The Search Polygon is a geometry derived from clauses that limits which buildings are considered during execution. For example <code>SELECT_LOTSIZE_WHERE_AREA_WITH_ATTRIBUTE_SPECIAL_CASE_AND_CATEGORY_IS_SOCIAL</code> will create a search polygon for buildings based on the areas that have the attribute <code>SPECIAL_CASE</code>. The [[Area with attribute (TQL Param)]] is a search polygon limiter.
|-
 
| NET_LOAD
For example, in <code>SELECT_LANDSIZE_WHERE_NEIGHBORHOOD_IS_2_AND_AREA_WITH_ATTRIBUTE_SPECIAL_CASE</code>, the [[Neighborhood (TQL Param)]] and area attribute combine to limit the search polygon to their intersection. Ultimately, the statement returns the landsize of the limiting search polygon.
| The requested data must intersect with the building of this [[load]].
 
| It must be data of this load specifically.
==Usage==
| ID indicating a load.
TQL can be used in a number of places. The most common place is in the [[excel]]s of custom [[indicator]]s, [[panel]] or [[global]]s. Cells in an Excel file can be named using a TQL query to specify the required session data. During indicator calculations, the {{software}} retrieves all TQL queries from the indicator's Excel file. Results from <code>SELECT</code> statements are placed into corresponding cells; once the calculation is complete, <code>UPDATE</code> statements are executed to update project items.
|-
 
| NET_CLUSTER
TQL can also be used to quickly check data in a project. When in [[editor]] mode, it's possible to open the [[query tool]]. With this tool, queries can be made and directly executed. The result is then presented to the [[user]]. This can be especially handy when it's necessary to quickly check whether a certain type of data is present or correctly readable. The query tool also functions both in and out of [[Test Run|test runs]], allowing a user to also check data in a [[project]] during a session.
| The requested data must intersect with buildings of [[load]]s of this [[cluster]].
 
| It must be data of this cluster specifically.
It's also possible to execute TQL queries directly via the API, using endpoints such as [[Api session query]]. The advantage of using TQL, rather than inspecting a project's data via the API directly, is that it can be used to perform calculations that require some intermediate processing. For example, calculating the intersection of buildings with an area or neighborhood. Other examples of this include the queries related to values of [[grid overlay|grid]]s, or the multiplication of floor size with a related [[function values | function value]].
| ID indicating a specific cluster.
 
|-
{{article end
| FUNCTION
|seealso=
| The requested data must intersect with constructions of this [[function]].
* [[Indicator]]s, [[Panel]]s and [[Global]]s
| It must be data related to this function type.
* [[Select (TQL)]], [[Update (TQL)]] and [[Clause (TQL)]]
| ID indicating a specific function.
* [[Query tool]]
|}
|howtos=
* [[How to use buffers (TQL)]]
* [[How to refer to a Grid by Attribute when using TQL]]
* [[TQL Examples]]
|videos=
{{video|link=https://youtu.be/6D29CclkWQ4|description=Information about Residents and Energylabels in the {{software}}.|language=dutch}}
}}
 
 
{{TQL nav}}

Latest revision as of 11:29, 15 July 2026

TQL is short for Tygron Query Language. It provides a means of obtaining and adjusting data of a session. It is comprised of a number of key phrases, that can be divided into 2 categories: statements and clauses. The statements indicate what data interaction should take place; retrieving using a SELECT statement, or adjusting using an UPDATE statement. The clauses provide a means to filter the data the interaction is applied to. A query always consists of exactly 1 statement and 0 or more clauses. Each clause always consists of a Clause parameter and a value.

TQL can access both property data from individual items, as well as spatial information. Property data pertains to a specific component of a project, such as individual buildings, indicators, or globals. Polygon data pertains to geographic data; surface areas in the project map, such as the lot size of buildings, the surface area of neighborhoods, or calculated grids. Depending on what kind of statement is used, the query will interact with its clauses treating them as items or as polygons.

An example of a TQL query is:

SELECT_LOTSIZE_WHERE_CATEGORY_IS_SOCIAL_AND_STAKEHOLDERTYPE_IS_MUNICIPALITY.


In this example, SELECT_LOTSIZE is the statement. CATEGORY_IS_SOCIAL is the first clause, and STAKEHOLDERTYPE_IS_MUNICIPALITY is the second clause. It would return all the land area taken up with social housing, which is also owned by a municipal stakeholder.

Note that all clauses in a TQL query are cumulative. All clauses are connected by the term AND. This means all clauses must be met before the data is "counted". Depending on how you use TQL in your project or applications, it is possible to simulate an "OR" functionality as well (e.g. CATEGORY_IS_SOCIAL or CATEGORY_IS_NORMAL). This can be done simply by executing multiple queries, one for each "OR" section.

More examples can be found at TQL Examples.

TQL components

TQL queries are composed of 2 major elements: the statement, and the clauses. Together they may make up a single query.

Statements

Statements are the instruction which is to be performed with the Project. A query always has exactly one statement.

There are 2 kinds of TQL Statements:

Clauses

Main article: Clause (TQL)

Clauses indicate the conditions which must be met for any data to be taken into account for a statement. In a query, they are connected to the statement using the phrase WHERE. Multiple additional clauses can be added to a query using the phrase AND. Clauses added to a query are cumulative conditions which must all be met. Data is ignored if it fails to meet any of the specified conditions.

For any given Select (TQL) or Update (TQL) statement, different clauses can be applied from across all these groups. The availability and function of clauses is also influenced by whether the statement dictates an interaction with polygon data or with item data. Consequently, some clauses are only available for specific statement types.

The order in which the clauses appear in the query is not relevant.

For a full list of available clauses, see Clause (TQL).

Limiting Search Polygon

Some clause parameters described on this wiki note that they Limit the Search Polygon. The Search Polygon is a geometry derived from clauses that limits which buildings are considered during execution. For example SELECT_LOTSIZE_WHERE_AREA_WITH_ATTRIBUTE_SPECIAL_CASE_AND_CATEGORY_IS_SOCIAL will create a search polygon for buildings based on the areas that have the attribute SPECIAL_CASE. The Area with attribute (TQL Param) is a search polygon limiter.

For example, in SELECT_LANDSIZE_WHERE_NEIGHBORHOOD_IS_2_AND_AREA_WITH_ATTRIBUTE_SPECIAL_CASE, the Neighborhood (TQL Param) and area attribute combine to limit the search polygon to their intersection. Ultimately, the statement returns the landsize of the limiting search polygon.

Usage

TQL can be used in a number of places. The most common place is in the excels of custom indicators, panel or globals. Cells in an Excel file can be named using a TQL query to specify the required session data. During indicator calculations, the Tygron Platform retrieves all TQL queries from the indicator's Excel file. Results from SELECT statements are placed into corresponding cells; once the calculation is complete, UPDATE statements are executed to update project items.

TQL can also be used to quickly check data in a project. When in editor mode, it's possible to open the query tool. With this tool, queries can be made and directly executed. The result is then presented to the user. This can be especially handy when it's necessary to quickly check whether a certain type of data is present or correctly readable. The query tool also functions both in and out of test runs, allowing a user to also check data in a project during a session.

It's also possible to execute TQL queries directly via the API, using endpoints such as Api session query. The advantage of using TQL, rather than inspecting a project's data via the API directly, is that it can be used to perform calculations that require some intermediate processing. For example, calculating the intersection of buildings with an area or neighborhood. Other examples of this include the queries related to values of grids, or the multiplication of floor size with a related function value.

How-to's

Videos

Information about Residents and Energylabels in the Tygron Platform. (In dutch)

See also