## section-query

section-query

## Functions

rasqal_query * | rasqal_new_query ()
void | rasqal_free_query ()
int | rasqal_query_add_data_graph ()
int | rasqal_query_add_data_graphs ()
int | rasqal_query_add_prefix ()
int | rasqal_query_add_variable ()
int | rasqal_query_dataset_contains_named_graph ()
rasqal_query_results * | rasqal_query_execute ()
raptor_sequence * | rasqal_query_get_all_variable_sequence ()
raptor_sequence * | rasqal_query_get_anonymous_variable_sequence ()
rasqal_row * | rasqal_query_get_bindings_row ()
raptor_sequence * | rasqal_query_get_bindings_rows_sequence ()
rasqal_variable * | rasqal_query_get_bindings_variable ()
raptor_sequence * | rasqal_query_get_bindings_variables_sequence ()
raptor_sequence * | rasqal_query_get_bound_variable_sequence ()
rasqal_triple * | rasqal_query_get_construct_triple ()
raptor_sequence * | rasqal_query_get_construct_triples_sequence ()
rasqal_data_graph * | rasqal_query_get_data_graph ()
raptor_sequence * | rasqal_query_get_data_graph_sequence ()
raptor_sequence * | rasqal_query_get_describe_sequence ()
int | rasqal_query_get_distinct ()
int | rasqal_query_get_explain ()
rasqal_expression * | rasqal_query_get_group_condition ()
raptor_sequence * | rasqal_query_get_group_conditions_sequence ()
rasqal_graph_pattern * | rasqal_query_get_graph_pattern ()
raptor_sequence * | rasqal_query_get_graph_pattern_sequence ()
rasqal_expression * | rasqal_query_get_having_condition ()
raptor_sequence * | rasqal_query_get_having_conditions_sequence ()
const char * | rasqal_query_get_label ()
int | rasqal_query_get_limit ()
const char * | rasqal_query_get_name ()
int | rasqal_query_get_offset ()
rasqal_expression * | rasqal_query_get_order_condition ()
raptor_sequence * | rasqal_query_get_order_conditions_sequence ()
rasqal_prefix * | rasqal_query_get_prefix ()
raptor_sequence * | rasqal_query_get_prefix_sequence ()
rasqal_graph_pattern * | rasqal_query_get_query_graph_pattern ()
rasqal_triple * | rasqal_query_get_triple ()
raptor_sequence * | rasqal_query_get_triple_sequence ()
void * | rasqal_query_get_user_data ()
rasqal_variable * | rasqal_query_get_variable ()
rasqal_query_verb | rasqal_query_get_verb ()
int | rasqal_query_get_wildcard ()
int | rasqal_query_has_variable2 ()
int | rasqal_query_has_variable ()
int | rasqal_query_prepare ()
int | rasqal_query_print ()
int | rasqal_query_graph_pattern_visit2 ()
void | rasqal_query_graph_pattern_visit ()
void | rasqal_query_set_distinct ()
void | rasqal_query_set_explain ()
void | rasqal_query_set_limit ()
void | rasqal_query_set_offset ()
void | rasqal_query_set_user_data ()
int | rasqal_query_set_variable2 ()
int | rasqal_query_set_variable ()
int | rasqal_query_set_store_results ()
void | rasqal_query_set_wildcard ()
const char * | rasqal_query_verb_as_string ()
int | rasqal_query_write ()
int | rasqal_query_iostream_write_escaped_counted_string ()
unsigned char * | rasqal_query_escape_counted_string ()
int | rasqal_query_set_feature ()
int | rasqal_query_set_feature_string ()
int | rasqal_query_get_feature ()
const unsigned char * | rasqal_query_get_feature_string ()
rasqal_query_results_type | rasqal_query_get_result_type ()
rasqal_update_operation * | rasqal_query_get_update_operation ()
raptor_sequence * | rasqal_query_get_update_operations_sequence ()

## Types and Values

enum | rasqal_query_verb
typedef | rasqal_query

## Description

## Functions

### rasqal_new_query ()

    rasqal_query *
    rasqal_new_query (rasqal_world *world,
                      const char *name,
                      const char *uri);

Constructor - create a new rasqal_query object.

A query language can be named or identified by a URI, either of which is optional. The default query language will be used if both are NULL. rasqal_world_get_query_language_description returns the description of the known names, labels, MIME types and URIs.

#### Parameters

world | rasqal_world object |
name | the query language name (or NULL) |
uri | raptor_uri language uri (or NULL) |

#### Returns

a new rasqal_query object or NULL on failure

### rasqal_free_query ()

    void
    rasqal_free_query (rasqal_query *query);

Destructor - destroy a rasqal_query object.

#### Parameters

query | rasqal_query object |

### rasqal_query_add_data_graph ()

    int
    rasqal_query_add_data_graph (rasqal_query *query,
                                 rasqal_data_graph *data_graph);

Add a data graph to the query.

#### Parameters

query | rasqal_query query object |
data_graph | data graph |

#### Returns

non-0 on failure

### rasqal_query_add_data_graphs ()

    int
    rasqal_query_add_data_graphs (rasqal_query *query,
                                  raptor_sequence *data_graphs);

Add a set of data graphs to the query.

The objects in the passed-in `data_graphs` sequence becomes owne by the query. The `data_graphs` sequence itself is freed and must not be used after this call.

#### Parameters

query | rasqal_query query object |
data_graphs | sequence of rasqal_data_graph |

#### Returns

non-0 on failure

### rasqal_query_add_prefix ()

    int
    rasqal_query_add_prefix (rasqal_query *query,
                             rasqal_prefix *prefix);

Add a namespace prefix to the query.

If the prefix has already been used, the old URI will be overridden.

#### Parameters

query | rasqal_query query object |
prefix | rasqal_prefix namespace prefix, URI |

#### Returns

non-0 on failure

### rasqal_query_add_variable ()

    int
    rasqal_query_add_variable (rasqal_query *query,
                               rasqal_variable *var);

Add a projected (named) variable to the query.

See also `rasqal_query_set_variable()` which assigns or removes a value to a previously added variable in the query.

#### Parameters

query | rasqal_query query object |
var | rasqal_variable variable |

#### Returns

non-0 on failure

### rasqal_query_dataset_contains_named_graph ()

    int
    rasqal_query_dataset_contains_named_graph
                                   (rasqal_query *query,
                                    raptor_uri *graph_uri);

Test if the query dataset contains a named graph

#### Parameters

query | rasqal_query query object |
graph_uri | query URI |

#### Returns

non-0 if the dataset contains a named graph

### rasqal_query_execute ()

    rasqal_query_results *
    rasqal_query_execute (rasqal_query *query);

Excute a query - run and return results.

#### Parameters

query | the rasqal_query object |

#### Returns

a rasqal_query_results structure or NULL on failure.

### rasqal_query_get_all_variable_sequence ()

    raptor_sequence *
    rasqal_query_get_all_variable_sequence
                                   (rasqal_query *query);

Get the sequence of all variables mentioned in the query.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_variable pointers.

### rasqal_query_get_anonymous_variable_sequence ()

    raptor_sequence *
    rasqal_query_get_anonymous_variable_sequence
                                   (rasqal_query *query);

Get the sequence of anonymous variables mentioned in the query.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_variable pointers.

### rasqal_query_get_bindings_row ()

    rasqal_row *
    rasqal_query_get_bindings_row (rasqal_query *query,
                                   int idx);

Get a rasqal_row* in the sequence of BINDINGS block result rows

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a raptor_sequence of raptor_row pointers

### rasqal_query_get_bindings_rows_sequence ()

    raptor_sequence *
    rasqal_query_get_bindings_rows_sequence
                                   (rasqal_query *query);

Get the sequence of BINDINGS block result rows

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of raptor_row pointers

### rasqal_query_get_bindings_variable ()

    rasqal_variable *
    rasqal_query_get_bindings_variable (rasqal_query *query,
                                        int idx);

Get a rasqal_variable* in the sequence of BINDINGS block variables

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a raptor_sequence of raptor_variable pointers

### rasqal_query_get_bindings_variables_sequence ()

    raptor_sequence *
    rasqal_query_get_bindings_variables_sequence
                                   (rasqal_query *query);

Get the sequence of BINDINGS block variables

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of raptor_variable pointers

### rasqal_query_get_bound_variable_sequence ()

    raptor_sequence *
    rasqal_query_get_bound_variable_sequence
                                   (rasqal_query *query);

Get the sequence of projected variables in the query.

This returns the sequence of variables that are explicitly chosen via SELECT in SPARQL. Or all variables mentioned with SELECT *

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_variable pointers.

### rasqal_query_get_construct_triple ()

    rasqal_triple *
    rasqal_query_get_construct_triple (rasqal_query *query,
                                       int idx);

Get a triple in the sequence of construct triples.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_triple pointer or NULL if out of the sequence range

### rasqal_query_get_construct_triples_sequence ()

    raptor_sequence *
    rasqal_query_get_construct_triples_sequence
                                   (rasqal_query *query);

Get the sequence of triples for a construct.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_triple pointers.

### rasqal_query_get_data_graph ()

    rasqal_data_graph *
    rasqal_query_get_data_graph (rasqal_query *query,
                                 int idx);

Get a rasqal_data_graph* in the sequence of data_graphs.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_data_graph pointer or NULL if out of the sequence range

### rasqal_query_get_data_graph_sequence ()

    raptor_sequence *
    rasqal_query_get_data_graph_sequence (rasqal_query *query);

Get the sequence of data_graph URIs.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of raptor_uri pointers.

### rasqal_query_get_describe_sequence ()

    raptor_sequence *
    rasqal_query_get_describe_sequence (rasqal_query *query);

Get the sequence of literals described in the query.

This returns the sequence of literals (constants or variables) that are explicitly chosen via DESCRIBE in SPARQL.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_literal pointers.

### rasqal_query_get_distinct ()

    int
    rasqal_query_get_distinct (rasqal_query *query);

Get the query distinct mode

See `rasqal_query_set_distinct()` for the distinct modes.

#### Parameters

query | rasqal_query query object |

#### Returns

non-0 if the results should be distinct

### rasqal_query_get_explain ()

    int
    rasqal_query_get_explain (rasqal_query *query);

Get the query explain results flag.

#### Parameters

query | rasqal_query query object |

#### Returns

non-0 if the results should be explain

### rasqal_query_get_group_condition ()

    rasqal_expression *
    rasqal_query_get_group_condition (rasqal_query *query,
                                      int idx);

Get a query grouping expression in the sequence of query grouping conditions.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_expression pointer or NULL if out of the sequence range

### rasqal_query_get_group_conditions_sequence ()

    raptor_sequence *
    rasqal_query_get_group_conditions_sequence
                                   (rasqal_query *query);

Get the sequence of query grouping conditions.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_expression pointers.

### rasqal_query_get_graph_pattern ()

    rasqal_graph_pattern *
    rasqal_query_get_graph_pattern (rasqal_query *query,
                                    int idx);

Get a graph_pattern in the sequence of graph_pattern expressions in the top query graph pattern.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_graph_pattern pointer or NULL if out of the sequence range

### rasqal_query_get_graph_pattern_sequence ()

    raptor_sequence *
    rasqal_query_get_graph_pattern_sequence
                                   (rasqal_query *query);

Get the sequence of graph_patterns expressions inside the top query graph pattern.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_graph_pattern pointers.

### rasqal_query_get_having_condition ()

    rasqal_expression *
    rasqal_query_get_having_condition (rasqal_query *query,
                                       int idx);

Get a query having expression in the sequence of query havinging conditions.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_expression pointer or NULL if out of the sequence range

### rasqal_query_get_having_conditions_sequence ()

    raptor_sequence *
    rasqal_query_get_having_conditions_sequence
                                   (rasqal_query *query);

Get the sequence of query having conditions.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_expression pointers.

### rasqal_query_get_label ()

    const char *
    rasqal_query_get_label (rasqal_query *query);

Get a readable label for the query language.

#### Parameters

query | rasqal_query query object |

#### Returns

shared string label value

### rasqal_query_get_limit ()

    int
    rasqal_query_get_limit (rasqal_query *query);

Get the query-specified limit on results.

This is the limit given in the query on the number of results allowed.

#### Parameters

query | rasqal_query query object |

#### Returns

integer >=0 if a limit is given, otherwise <0

### rasqal_query_get_name ()

    const char *
    rasqal_query_get_name (rasqal_query *query);

Get a short name for the query language.

#### Parameters

query | rasqal_query query object |

#### Returns

shared string label value

### rasqal_query_get_offset ()

    int
    rasqal_query_get_offset (rasqal_query *query);

Get the query-specified offset on results.

This is the offset given in the query on the number of results allowed. It is only guaranteed to work after the query is prepared and before it is executed.

#### Parameters

query | rasqal_query query object |

#### Returns

integer >=0 if a offset is given, otherwise <0

### rasqal_query_get_order_condition ()

    rasqal_expression *
    rasqal_query_get_order_condition (rasqal_query *query,
                                      int idx);

Get a query ordering expression in the sequence of query ordering conditions.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_expression pointer or NULL if out of the sequence range

### rasqal_query_get_order_conditions_sequence ()

    raptor_sequence *
    rasqal_query_get_order_conditions_sequence
                                   (rasqal_query *query);

Get the sequence of query ordering conditions.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_expression pointers.

### rasqal_query_get_prefix ()

    rasqal_prefix *
    rasqal_query_get_prefix (rasqal_query *query,
                             int idx);

Get a prefix in the sequence of namespsace prefixes in the query.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_prefix pointer or NULL if out of the sequence range

### rasqal_query_get_prefix_sequence ()

    raptor_sequence *
    rasqal_query_get_prefix_sequence (rasqal_query *query);

Get the sequence of namespace prefixes in the query.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_prefix pointers.

### rasqal_query_get_query_graph_pattern ()

    rasqal_graph_pattern *
    rasqal_query_get_query_graph_pattern (rasqal_query *query);

Get the top query graph pattern.

#### Parameters

query | rasqal_query query object |

#### Returns

a rasqal_graph_pattern of the top query graph pattern

### rasqal_query_get_triple ()

    rasqal_triple *
    rasqal_query_get_triple (rasqal_query *query,
                             int idx);

Get a triple in the sequence of matching triples in the query.

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_triple pointer or NULL if out of the sequence range

### rasqal_query_get_triple_sequence ()

    raptor_sequence *
    rasqal_query_get_triple_sequence (rasqal_query *query);

Get the sequence of matching triples in the query.

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_triple pointers.

### rasqal_query_get_user_data ()

    void *
    rasqal_query_get_user_data (rasqal_query *query);

Get query user data.

#### Parameters

query | rasqal_query |

#### Returns

user data as set by `rasqal_query_set_user_data()`

### rasqal_query_get_variable ()

    rasqal_variable *
    rasqal_query_get_variable (rasqal_query *query,
                               int idx);

Get a variable in the query

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

pointer to shared rasqal_variable or NULL if out of range

### rasqal_query_get_verb ()

    rasqal_query_verb
    rasqal_query_get_verb (rasqal_query *query);

Get the query verb.

#### Parameters

query | rasqal_query |

#### Returns

the operating verb of the query of type rasqal_query_verb

### rasqal_query_get_wildcard ()

    int
    rasqal_query_get_wildcard (rasqal_query *query);

Get the query verb is wildcard flag.

#### Parameters

query | rasqal_query |

#### Returns

non-0 if the query verb was a wildcard (such as SELECT *)

### rasqal_query_has_variable2 ()

    int
    rasqal_query_has_variable2 (rasqal_query *query,
                                rasqal_variable_type type,
                                const char *name);

Find if the named variable of the given type is in the query

Note that looking up for any type RASQAL_VARIABLE_TYPE_UNKNOWN may a name match but for any type so in cases where the query has both a named and anonymous (extensional) variable, an arbitrary one will be returned.

#### Parameters

query | rasqal_query query object |
type | the variable type to match or RASQAL_VARIABLE_TYPE_UNKNOWN for any. |
name | variable name |

#### Returns

non-0 if the variable name was found.

### rasqal_query_has_variable ()

    int
    rasqal_query_has_variable (rasqal_query *query,
                               const char *name);

`rasqal_query_has_variable` is deprecated and should not be used in newly-written code.

Find if the named variable is in the query (of any type)

`Deprecated` : Use `rasqal_query_has_variable2()` with the variable type arg

#### Parameters

query | rasqal_query query object |
name | variable name |

#### Returns

non-0 if the variable name was found.

### rasqal_query_prepare ()

    int
    rasqal_query_prepare (rasqal_query *query,
                          const char *query_string,
                          raptor_uri *base_uri);

Prepare a query - typically parse it.

Some query languages may require a base URI to resolve any relative URIs in the query string. If this is not given, the current directory in the filesystem is used as the base URI.

The query string may be NULL in which case it is not parsed and the query parts may be created by API calls such as rasqal_query_add_source etc.

#### Parameters

query | the rasqal_query object |
query_string | the query string (or NULL) |
base_uri | base URI of query string (optional) |

#### Returns

non-0 on failure.

### rasqal_query_print ()

    int
    rasqal_query_print (rasqal_query *query,
                        FILE *fh);

Print a query in a debug format.

#### Parameters

query | the rasqal_query object |
fh | the FILE* handle to print to. |

#### Returns

non-0 on failure

### rasqal_query_graph_pattern_visit2 ()

    int
    rasqal_query_graph_pattern_visit2 (rasqal_query *query,
                                       rasqal_graph_pattern_visit_fn visit_fn,
                                       void *data);

Visit all graph patterns in a query with a user function `visit_fn` .

See also `rasqal_graph_pattern_visit()`.

#### Parameters

query | query |
visit_fn | user function to operate on |
data | user data to pass to function |

#### Returns

result from visit function `visit_fn` if it returns non-0

### rasqal_query_graph_pattern_visit ()

    void
    rasqal_query_graph_pattern_visit (rasqal_query *query,
                                      rasqal_graph_pattern_visit_fn visit_fn,
                                      void *data);

`rasqal_query_graph_pattern_visit` is deprecated and should not be used in newly-written code.

Visit all graph patterns in a query with a user function `visit_fn` .

`Deprecated` : use `rasqal_query_graph_pattern_visit2()` that returns the `visit_fn` status code.

See also `rasqal_graph_pattern_visit()`.

#### Parameters

query | query |
visit_fn | user function to operate on |
data | user data to pass to function |

### rasqal_query_set_distinct ()

    void
    rasqal_query_set_distinct (rasqal_query *query,
                               int distinct_mode);

Set the query distinct results mode.

The allowed `distinct_mode` values are: 0 if not given 1 if DISTINCT: ensure solutions are unique 2 if SPARQL REDUCED: permit elimination of some non-unique solutions

#### Parameters

query | rasqal_query query object |
distinct_mode | distinct mode |

### rasqal_query_set_explain ()

    void
    rasqal_query_set_explain (rasqal_query *query,
                              int is_explain);

Set the query explain results flag.

#### Parameters

query | rasqal_query query object |
is_explain | non-0 if explain |

### rasqal_query_set_limit ()

    void
    rasqal_query_set_limit (rasqal_query *query,
                            int limit);

Set the query-specified limit on results.

This is the limit given in the query on the number of results allowed. It is only guaranteed to work after the query is prepared and before it is executed.

#### Parameters

query | rasqal_query query object |
limit | the limit on results, >=0 to set a limit, <0 to have no limit |

### rasqal_query_set_offset ()

    void
    rasqal_query_set_offset (rasqal_query *query,
                             int offset);

Set the query-specified offset on results.

This is the offset given in the query on the number of results allowed.

#### Parameters

query | rasqal_query query object |
offset | offset for results, >=0 to set an offset, <0 to have no offset |

### rasqal_query_set_user_data ()

    void
    rasqal_query_set_user_data (rasqal_query *query,
                                void *user_data);

Set the query user data.

#### Parameters

query | rasqal_query |
user_data | some user data to associate with the query |

### rasqal_query_set_variable2 ()

    int
    rasqal_query_set_variable2 (rasqal_query *query,
                                rasqal_variable_type type,
                                const char *name,
                                rasqal_literal *value);

Bind an existing typed variable to a value to the query.

See also `rasqal_query_add_variable()` which adds a new binding variable and must be called before this method is invoked.

#### Parameters

query | rasqal_query query object |
type | the variable type to match or RASQAL_VARIABLE_TYPE_UNKNOWN for any. |
name | rasqal_variable variable |
value | rasqal_literal value to set or NULL |

#### Returns

non-0 on failure

### rasqal_query_set_variable ()

    int
    rasqal_query_set_variable (rasqal_query *query,
                               const char *name,
                               rasqal_literal *value);

`rasqal_query_set_variable` is deprecated and should not be used in newly-written code.

Bind an existing named (selected) variable to a value to the query.

`Deprecated` for `rasqal_query_set_variable2()` that includes a type arg. This function only sets named variables of type RASQAL_VARIABLE_TYPE_NORMAL

#### Parameters

query | rasqal_query query object |
name | rasqal_variable variable |
value | rasqal_literal value to set or NULL |

#### Returns

non-0 on failure

### rasqal_query_set_store_results ()

    int
    rasqal_query_set_store_results (rasqal_query *query,
                                    int store_results);

Request that query results are stored during execution

When called after a `rasqal_query_prepare()`, this tells `rasqal_query_execute()` to execute the entire query immediately rather than generate them lazily, and store all the results in memory. The results will then be available for reading multiple times using `rasqal_query_results_rewind()` to move back to the start of the result object. If called after preparation, returns failure.

#### Parameters

query | the rasqal_query object |
store_results | store results flag |

#### Returns

non-0 on failure.

### rasqal_query_set_wildcard ()

    void
    rasqal_query_set_wildcard (rasqal_query *query,
                               int wildcard);

Set the query projection wildcard flag

#### Parameters

query | rasqal_query query object |
wildcard | wildcard |

### rasqal_query_verb_as_string ()

    const char *
    rasqal_query_verb_as_string (rasqal_query_verb verb);

Get a string for the query verb.

#### Parameters

verb | the rasqal_query_verb verb of the query |

#### Returns

pointer to a shared string label for the query verb

### rasqal_query_write ()

    int
    rasqal_query_write (raptor_iostream *iostr,
                        rasqal_query *query,
                        raptor_uri *format_uri,
                        raptor_uri *base_uri);

Write a query to an iostream in a specified format.

The supported URIs for the format_uri are:

Default: SPARQL Query Language 2006-04-06 http://www.w3.org/TR/2006/CR-rdf-sparql-query-20060406/

#### Parameters

iostr | raptor_iostream to write the query to |
query | rasqal_query pointer. |
format_uri | raptor_uri describing the format to write (or NULL for default) |
base_uri | raptor_uri base URI of the output format |

#### Returns

non-0 on failure

### rasqal_query_iostream_write_escaped_counted_string ()

    int
    rasqal_query_iostream_write_escaped_counted_string
                                   (rasqal_query *query,
                                    raptor_iostream *iostr,
                                    const unsigned char *string,
                                    size_t len);

Write a string to an iostream in escaped form suitable for the query string.

#### Parameters

query | rasqal_query object |
iostr | raptor_iostream to write the escaped string to |
string | string to escape |
len | Length of string to escape |

#### Returns

non-0 on failure

### rasqal_query_escape_counted_string ()

    unsigned char *
    rasqal_query_escape_counted_string (rasqal_query *query,
                                        const char *string,
                                        size_t len,
                                        size_t *output_len_p);

Convert a string into an escaped form suitable for the query string.

The returned string must be freed by the caller with `rasqal_free_memory()`

#### Parameters

query | rasqal_query object |
string | string to escape |
len | Length of string to escape |
output_len_p | Pointer to store length of output string (or NULL) |

#### Returns

the escaped string or NULL on failure.

### rasqal_query_set_feature ()

    int
    rasqal_query_set_feature (rasqal_query *query,
                              rasqal_feature feature,
                              int value);

Set various query features.

The allowed features are available via `rasqal_features_enumerate()`.

#### Parameters

query | rasqal_query query object |
feature | feature to set from enumerated rasqal_feature values |
value | integer feature value |

#### Returns

non 0 on failure or if the feature is unknown

### rasqal_query_set_feature_string ()

    int
    rasqal_query_set_feature_string (rasqal_query *query,
                                     rasqal_feature feature,
                                     const char *value);

Set query features with string values.

The allowed features are available via `rasqal_features_enumerate()`. If the feature type is integer, the value is interpreted as an integer.

#### Parameters

query | rasqal_query query object |
feature | feature to set from enumerated rasqal_feature values |
value | feature value |

#### Returns

non 0 on failure or if the feature is unknown

### rasqal_query_get_feature ()

    int
    rasqal_query_get_feature (rasqal_query *query,
                              rasqal_feature feature);

Get various query features.

The allowed features are available via `rasqal_features_enumerate()`.

Note: no feature value is negative

#### Parameters

query | rasqal_query query object |
feature | feature to get value |

#### Returns

feature value or < 0 for an illegal feature

### rasqal_query_get_feature_string ()

    const unsigned char *
    rasqal_query_get_feature_string (rasqal_query *query,
                                     rasqal_feature feature);

Get query features with string values.

The allowed features are available via `rasqal_features_enumerate()`. If a string is returned, it must be freed by the caller.

#### Parameters

query | rasqal_query query object |
feature | feature to get value |

#### Returns

feature value or NULL for an illegal feature or no value

### rasqal_query_get_result_type ()

    rasqal_query_results_type
    rasqal_query_get_result_type (rasqal_query *query);

Get the result type expected from executing the query.

This function is only valid after `rasqal_query_prepare()` has been run on the query and will return RASQAL_QUERY_RESULTS_UNKNOWN if called before preparation.

#### Parameters

query | rasqal_query query object |

#### Returns

result type or RASQAL_QUERY_RESULTS_UNKNOWN if not known or on error

### rasqal_query_get_update_operation ()

    rasqal_update_operation *
    rasqal_query_get_update_operation (rasqal_query *query,
                                       int idx);

Get a query update operation in the sequence of update operations

#### Parameters

query | rasqal_query query object |
idx | index into the sequence (0 or larger) |

#### Returns

a rasqal_update_operation pointer or NULL if out of the sequence range

### rasqal_query_get_update_operations_sequence ()

    raptor_sequence *
    rasqal_query_get_update_operations_sequence
                                   (rasqal_query *query);

Get the sequence of update operations

#### Parameters

query | rasqal_query query object |

#### Returns

a raptor_sequence of rasqal_update_operation pointers.

## Types and Values

### enum rasqal_query_verb

Query main operation verbs describing the major type of query being performed.

#### Members

RASQAL_QUERY_VERB_UNKNOWN | Internal |
RASQAL_QUERY_VERB_SELECT | SPARQL query select verb. |
RASQAL_QUERY_VERB_CONSTRUCT | SPARQL query construct verb. |
RASQAL_QUERY_VERB_DESCRIBE | SPARQL query describe verb. |
RASQAL_QUERY_VERB_ASK | SPARQL query ask verb. |
RASQAL_QUERY_VERB_DELETE | LAQRS query delete verb. |
RASQAL_QUERY_VERB_INSERT | LAQRS query insert verb. |
RASQAL_QUERY_VERB_UPDATE | SPARQL 1.1 (draft) update operation |
RASQAL_QUERY_VERB_LAST | Internal |

### rasqal_query

    rasqal_graph_query* query;

Rasqal query class.