Updates

## Updates Updates — Graph update operations |

## Types and Values

| rasqal_update_operation
enum | rasqal_update_type
enum | rasqal_update_flags
enum | rasqal_update_graph_applies

## Description

This class provides a object to record a graph update operation with adding and/or removing triples, using a templated insert/delete with optional where clause. It is designed to be able to record the SPARQL 1.1 (Draft) update format, and is a work in progress as of February 2010.

## Functions

## Types and Values

### rasqal_update_operation

    typedef struct {
      rasqal_update_type type;

      raptor_uri* graph_uri;

      raptor_uri* document_uri;

      raptor_sequence* insert_templates;

      raptor_sequence* delete_templates;

      rasqal_graph_pattern* where;

      int flags;

      rasqal_update_graph_applies applies;
    } rasqal_update_operation;

Update operation - changing the dataset

For LOAD and CLEAR if `applies` is set (not 0) then the operation applies to just those `graph()`, otherwise it applies to the `graph_uri` .

For ADD, MOVE and COPY the source graph is stored in `graph_uri` field and the destination graph in the `document_uri` field. The field names have no meaning in this case since both values are always present, always graphs and a NULL value signifies the default graph.

#### Members

rasqal_update_type `type`; | type of update |
raptor_uri *`graph_uri`; | optional graph URI (clear, drop, load, with ... delete, insert); source graph (add, move, copy) |
raptor_uri *`document_uri`; | optional document URI (load); destination graph (add, move, copy) |
raptor_sequence *`insert_templates`; | optional sequence of rasqal_triple to insert. Data triples if `flags` is RASQAL_UPDATE_FLAGS_DATA set, templates otherwise. |
raptor_sequence *`delete_templates`; | optional sequence of rasqal_triple templates to delete |
rasqal_graph_pattern *`where`; | optional where template (insert/delete) |
int `flags`; | update flags - bit-or of flags defined in rasqal_update_flags |
rasqal_update_graph_applies `applies`; | the graph(s) that the update operation applies to, or `graph_uri` if RASQAL_UPDATE_GRAPH_ONE |

### enum rasqal_update_type

Update type being performed.

#### Members

RASQAL_UPDATE_TYPE_UNKNOWN | Internal |
RASQAL_UPDATE_TYPE_CLEAR | Clear graph. |
RASQAL_UPDATE_TYPE_CREATE | Create graph. |
RASQAL_UPDATE_TYPE_DROP | Drop graph. |
RASQAL_UPDATE_TYPE_LOAD | Load graph. |
RASQAL_UPDATE_TYPE_UPDATE | Insert or Delete graph or triples. |
RASQAL_UPDATE_TYPE_ADD | Add graph to another graph. |
RASQAL_UPDATE_TYPE_MOVE | Move graph to another grpah. |
RASQAL_UPDATE_TYPE_COPY | Copy graph to another graph. |
RASQAL_UPDATE_TYPE_LAST | Internal |

### enum rasqal_update_flags

Bitflags for graph update operations

#### Members

RASQAL_UPDATE_FLAGS_SILENT | the update operation should be silent |
RASQAL_UPDATE_FLAGS_DATA | the update operation is triple data not templates |

### enum rasqal_update_graph_applies

The graph(s) that the update operation applies to.

#### Members

RASQAL_UPDATE_GRAPH_ONE | the update operation applies to 1 graph |
RASQAL_UPDATE_GRAPH_DEFAULT | the update operation applies to the default graph |
RASQAL_UPDATE_GRAPH_NAMED | the update operation applies to all named graphs |
RASQAL_UPDATE_GRAPH_ALL | the update operation applies ALL graphs |