Updates

Updates — Graph update operations

Synopsis

                    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.

Details

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.

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

typedef enum {
  /* internal */
  RASQAL_UPDATE_TYPE_UNKNOWN   = 0,
  RASQAL_UPDATE_TYPE_CLEAR     = 1,
  RASQAL_UPDATE_TYPE_CREATE    = 2,
  RASQAL_UPDATE_TYPE_DROP      = 3,
  RASQAL_UPDATE_TYPE_LOAD      = 4,
  RASQAL_UPDATE_TYPE_UPDATE    = 5,
  RASQAL_UPDATE_TYPE_ADD       = 6,
  RASQAL_UPDATE_TYPE_MOVE      = 7,
  RASQAL_UPDATE_TYPE_COPY      = 8,

  /* internal */
  RASQAL_UPDATE_TYPE_LAST = RASQAL_UPDATE_TYPE_COPY
} rasqal_update_type;

Update type being performed.

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

typedef enum {
  RASQAL_UPDATE_FLAGS_SILENT = 1,
  RASQAL_UPDATE_FLAGS_DATA = 2
} rasqal_update_flags;

Bitflags for graph update operations

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

typedef enum {
  RASQAL_UPDATE_GRAPH_ONE = 0,
  RASQAL_UPDATE_GRAPH_DEFAULT = 1,
  RASQAL_UPDATE_GRAPH_NAMED = 2,
  RASQAL_UPDATE_GRAPH_ALL = 3
} rasqal_update_graph_applies;

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

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