---
GMQL-VERSION: 'V2.1'
STATEMENT:
    '{out_var} = {operator} ({parameters}) {in_vars};'
MATERIALIZE:
    'MATERIALIZE {variable} INTO {file_name};'
PARAMS:
    type_separator: '; '
    param_separator: ', '
    wff:
        NOT: 'NOT ({p})'
        AND: '{p1} AND {p2}'
        OR: '{p1} OR  {p2}'
        BLOCK: '({p})'
    predicate:
        eq: '{att} == {val}'
        lt: '{att} < {val}'
        gt: '{att} > {val}'
        let: '{att} <= {val}'
        get: '{att} >= {val}'
        values:
            string: "'{p}'"
            float: "{p}"
            int: "{p}"
            coordinate: "{p}"
            meta: "META({p})"
    metajoin_condition:
        SIMPLE: '{att_name}'
        FULL: 'FULL({att_name})'
        EXACT: 'EXACT({att_name})'
    new_region: '{r} AS {function}'
    function: '{function}({arg})'
    SELECT:
        metadata: '{predicate}'
        region: 'region: {predicate}'
        semijoin: 'semijoin: {predicate}'
        semijoin_predicates:
            IN: '{attributes} IN {ds_ext}'
            NOT_IN: '{attributes} NOT IN {ds_ext}'
    PROJECT:
        regions: '{att_list}'
        metadata: 'metadata: {att_list}'
        att_list:
            keep: '{att_list}'
            exclude: 'ALLBUT {att_list}'
        newRegions: 'region_update: {newAttributes}'
        newMetadata: 'metadata_update: {newAttributes}'
    MAP:
        regions: '{newRegions}'
        count: 'count_name: {count_name}'
        joinby: 'joinby: {joinbyClause}'
    COVER:
        groupby: 'groupby: {groupbyClause}'
        regions: 'aggregate: {newRegions}'
    EXTEND: ''
    GROUP:
        meta: '{groupMeta}'
        newMetadata: 'meta_aggregates: {newAttributes}'
        regions: 'region_keys: {groupRegions}'
        newRegions: 'region_aggregates: {newRegions}'
    MERGE:
        groupby: 'groupby: {groupbyClause}'
    UNION: ''
    DIFFERENCE:
        exact: 'exact: {flag}'
        joinby: 'joinby: {joinbyClause}'
    ORDER:
        att_list:
            asc: '{att}'
            desc: '{att} DESC'
        metadata:
            orderingAttributes: '{att_list}'
            top:
                n: 'meta_top: {k}'
                perc: 'meta_topp: {k}'
                group: 'meta_topg: {k}'
        region:
            orderingAttributes: 'region_order: {att_list}'
            top:
                n: 'region_top: {k}'
                perc: 'region_topp: {k}'
                group: 'region_topg: {k}'
    JOIN:
        genomic_predicate: '{genomic_predicate}'
        equi_clause: 'on_attributes: {att_list}'
        output_opt: 'output: {coord_param}'
        joinby: 'joinby: {joinbyClause}'
        distal_condition: '{dc}({n})'
        distal_stream: '{ds}'