The query sub-command and the underlying pygcam.query.runBatchQuery() function allow you to specify an XML file that describes a sequence of query to execute. The queries can reference named sets of label rewrite statements that allow results to be renamed, aggregated, or ignored. Here we document the format of the two XML files.

See also

See pygcam.query for more information about run-time behavior. Command-line usage is described on the gt query page.

Some elements of the query.xml file can contain <CONDITIONAL> elements, as described below. See Conditional XML for further details.

queries.xml

The queries.xml file defines a set of queries to execute. It’s elements are described below, followed by a short example.

XML elements

The elements that comprise the queries.xml file are described below.

<queries>

The top-most element, <queries>, encloses one or more <query> elements. The <queries> element may also contain <CONDITIONAL> elements. The <query> element takes the following attributes:

Attribute Required Default Values
varName depends (none) text
defaultMap no (none) text
delete no “1” boolean

The varName is required for <queries> defined in the project.xml file; it defines a variable name which is assigned the path of a temporary file into which the <queries> element and sub-elements are copied. If an external queries file is used, the varName is ignored.

The defaultMap defines a default rewrite set to use with all queries, which can be overridden for any single query by explicitly specifying useDefault="0".

The delete attribute defines whether the temporary file generated from the <queries> element in the project.xml file should be deleted. This is primarily for debugging.

<query>

The <query> element specifies a query to run. The required name attribute must match the name of a query found on the Query Path, which is specified as an argument to the function pygcam.query.runBatchQuery(), on the command-line to the query sub-command, or by the value of the config variable GCAM.QueryPath.

The <query> element can contain zero or more <rewriter> elements and may contain <CONDITIONAL> elements.

Attribute Required Default Values
name yes (none) text
saveAs no name text
useDefault no “1” boolean

By default, the results for the query are saved to a file based on name and the scenario name. However, using the saveAs option allows you to save results to a different name, allowing a single query to be run multiple times with different rewrites to produce multiple CSV files.

The useDefault attribute provides a way to override any defaultMap specified in the surrounding <queries> element. Set useDefault="0" to prevent the default rewrite map from applying to this <query>.

<rewriter>

This element identifies a rewrite set by name. The rewrite set must be defined in a file identified as an argument to the pygcam.query.runBatchQuery(), on the command-line to the query sub-command, or by setting a value for the config variable GCAM.RewriteSetsFile.

The query named in the <query> node is extracted into a temporary file and the specified rewrites are inserted into the query. If a level is specified, it identifies the variable in the query output that should be rewritten according to the <rewrite> elements in the corresponding rewrite set.

If no level is specified, the level giving in the query definition itself is used. In most cases, the user will not need to specify a level in the <rewriter> statement, but the option is available to override the default.

Attribute Required Default Values
name yes (none) text
level no (none) text

Example

This is an example of a query specification file.

<queries varName="queryXmlFile" defaultMap="eightRegions">
   <query name="land_cover">
       <rewriter name="eightRegions"/>
       <rewriter name="landCover"/>
   </query>

   <query name="Aggregated Land Allocation"/>

   <query name="luc_emissions"/>

   <query name="ag_production" useDefault="0">
       <rewriter name="GTAP-BIO-ADV"/>
       <rewriter name="food" level="input"/>
   </query>

   <query name="nonco2"/>
   <query name="Climate_forcing"/>
   <query name="Global_mean_temperature"/>
</queries>