Querying
3
REDLAND Library

# Querying

RDF query languages and execution.

## Synopsis

    typedef             librdf_query;
    typedef             librdf_query_factory;
    void                librdf_query_register_factory       (librdf_world *world,
                                                             const char *name,
                                                             unsigned char *uri_string,
                                                             void (factorylibrdf_query_factory*) ());
    librdf_query*       librdf_new_query                    (librdf_world *world,
                                                             const char *name,
                                                             librdf_uri *uri,
                                                             unsigned char *query_string,
                                                             librdf_uri *base_uri);
    librdf_query*       librdf_new_query_from_query         (librdf_query *old_query);
    librdf_query*       librdf_new_query_from_factory       (librdf_world *world,
                                                             librdf_query_factory *factory,
                                                             const char *name,
                                                             librdf_uri *uri,
                                                             unsigned char *query_string,
                                                             librdf_uri *base_uri);
    void                librdf_free_query                   (librdf_query *query);
    librdf_query_results* librdf_query_execute              (librdf_query *query,
                                                             librdf_model *model);
    int                 librdf_query_get_limit              (librdf_query *query);
    int                 librdf_query_set_limit              (librdf_query *query,
                                                             int limit);
    int                 librdf_query_get_offset             (librdf_query *query);
    int                 librdf_query_set_offset             (librdf_query *query,
                                                             int offset);

## Description

Provides classes to create query objects and to execute them over an RDF graph (librdf_model) returning a librdf_query_results Query result limits and offsets can be set.

## Details

### librdf_query

    typedef struct librdf_query_s librdf_query;

Redland query class.

### librdf_query_factory

    typedef struct librdf_query_factory_s librdf_query_factory;

Redland query factory class.

### librdf_query_register_factory ()

    void                librdf_query_register_factory       (librdf_world *world,
                                                             const char *name,
                                                             unsigned char *uri_string,
                                                             void (factorylibrdf_query_factory*) ());

Register a query factory.

`world` :

  redland world object

`name` :

  the query language name

`uri_string` :

  the query language URI string (or NULL if none)

`factory` :

  pointer to function to call to register the factory

### librdf_new_query ()

    librdf_query*       librdf_new_query                    (librdf_world *world,
                                                             const char *name,
                                                             librdf_uri *uri,
                                                             unsigned char *query_string,
                                                             librdf_uri *base_uri);

Constructor - create a new librdf_query object.

`world` :

  redland world object

`name` :

  the name identifying the query language

`uri` :

  the URI identifying the query language (or NULL)

`query_string` :

  the query string

`base_uri` :

  the base URI of the query string (or NULL)

Returns :

  a new librdf_query object or NULL on failure

### librdf_new_query_from_query ()

    librdf_query*       librdf_new_query_from_query         (librdf_query *old_query);

Should create a new query in the same context as the existing one as appropriate.

`old_query` :

  the existing query librdf_query to use

Returns :

  a new librdf_query object or NULL on failure

### librdf_new_query_from_factory ()

    librdf_query*       librdf_new_query_from_factory       (librdf_world *world,
                                                             librdf_query_factory *factory,
                                                             const char *name,
                                                             librdf_uri *uri,
                                                             unsigned char *query_string,
                                                             librdf_uri *base_uri);

Constructor - create a new librdf_query object.

`world` :

  redland world object

`factory` :

  the factory to use to construct the query

`name` :

  query language name

`uri` :

  query language URI (or NULL)

`query_string` :

  the query string

`base_uri` :

  base URI of the query string (or NULL)

Returns :

  a new librdf_query object or NULL on failure

### librdf_free_query ()

    void                librdf_free_query                   (librdf_query *query);

Destructor - destroy a librdf_query object.

`query` :

  librdf_query object

### librdf_query_execute ()

    librdf_query_results* librdf_query_execute              (librdf_query *query,
                                                             librdf_model *model);

Run the query on a model.

Runs the query against the (previously registered) model and returns a librdf_query_results for the result objects.

`query` :

  librdf_query object

`model` :

  model to operate query on

Returns :

  librdf_query_results or NULL on failure

### librdf_query_get_limit ()

    int                 librdf_query_get_limit              (librdf_query *query);

Get the query-specified limit on results.

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

`query` :

  librdf_query query object

Returns :

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

### librdf_query_set_limit ()

    int                 librdf_query_set_limit              (librdf_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.

`query` :

  librdf_query query object

`limit` :

  the limit on results, >=0 to set a limit, <0 to have no limit

Returns :

  non-0 on failure

### librdf_query_get_offset ()

    int                 librdf_query_get_offset             (librdf_query *query);

Get the query-specified offset on results.

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

`query` :

  librdf_query query object

Returns :

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

### librdf_query_set_offset ()

    int                 librdf_query_set_offset             (librdf_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.

`query` :

  librdf_query query object

`offset` :

  offset for results, >=0 to set an offset, <0 to have no offset

Returns :

  non-0 on failure