Sord 0.4.2
Opaque Types | Enumerations
Sord

A lightweight RDF model library. More...

Opaque Types

typedef struct SordWorldImpl SordWorld
typedef struct SordModelImpl SordModel
typedef struct SordIterImpl SordIter
typedef struct SordNodeImpl SordNode
typedef const SordNodeSordQuad [4]

Enumerations

enum  SordQuadIndex { SORD_SUBJECT = 0, SORD_PREDICATE = 1, SORD_OBJECT = 2, SORD_GRAPH = 3 }
enum  SordNodeType { SORD_URI = 1, SORD_BLANK = 2, SORD_LITERAL = 3 }
enum  SordIndexOption {
  SORD_SPO = 1, SORD_SOP = 1 << 1, SORD_OPS = 1 << 2, SORD_OSP = 1 << 3,
  SORD_PSO = 1 << 4, SORD_POS = 1 << 5
}

World

SordWorldsord_world_new (void)
void sord_world_free (SordWorld *world)

Node

SordNodesord_new_uri (SordWorld *world, const uint8_t *str)
SordNodesord_new_blank (SordWorld *world, const uint8_t *str)
SordNodesord_new_literal (SordWorld *world, SordNode *datatype, const uint8_t *str, const char *lang)
SordNodesord_node_copy (const SordNode *node)
void sord_node_free (SordWorld *world, SordNode *node)
SordNodeType sord_node_get_type (const SordNode *node)
const uint8_t * sord_node_get_string (const SordNode *node)
const uint8_t * sord_node_get_string_counted (const SordNode *node, size_t *len)
const char * sord_node_get_language (const SordNode *node)
SordNodesord_node_get_datatype (const SordNode *node)
SerdNodeFlags sord_node_get_flags (const SordNode *node)
bool sord_node_is_inline_object (const SordNode *node)
bool sord_node_equals (const SordNode *a, const SordNode *b)
const SerdNode * sord_node_to_serd_node (const SordNode *node)
SordNodesord_node_from_serd_node (SordWorld *world, SerdEnv *env, const SerdNode *node, const SerdNode *datatype, const SerdNode *lang)

Model

SordModelsord_new (SordWorld *world, unsigned indices, bool graphs)
void sord_free (SordModel *model)
SordWorldsord_get_world (SordModel *model)
size_t sord_num_nodes (const SordWorld *world)
size_t sord_num_quads (const SordModel *model)
SordItersord_begin (const SordModel *model)
SordItersord_find (SordModel *model, const SordQuad pat)
bool sord_add (SordModel *model, const SordQuad quad)
void sord_remove (SordModel *model, const SordQuad quad)

Iteration

void sord_iter_get (const SordIter *iter, SordQuad quad)
const SordModelsord_iter_get_model (SordIter *iter)
bool sord_iter_next (SordIter *iter)
bool sord_iter_end (const SordIter *iter)
void sord_iter_free (SordIter *iter)

Utilities

bool sord_quad_match (const SordQuad x, const SordQuad y)

Serialisation

SerdReader * sord_new_reader (SordModel *model, SerdEnv *env, SerdSyntax syntax, SordNode *graph)
bool sord_write (SordModel *model, SerdWriter *writer, SordNode *graph)

Detailed Description

A lightweight RDF model library.

Sord stores RDF (subject object predicate context) quads, where the context may be omitted (to represent triples in the default graph).


Typedef Documentation

typedef struct SordWorldImpl SordWorld

Sord World.

The World represents all library state, including interned strings.

typedef struct SordModelImpl SordModel

Sord Model.

A model is an indexed set of Quads (i.e. it can contain several RDF graphs). It may be searched using various patterns depending on which indices are enabled.

typedef struct SordIterImpl SordIter

Model Iterator.

typedef struct SordNodeImpl SordNode

RDF Node.

A Node is a component of a Quad. Nodes may be URIs, blank nodes, or (in the case of quad objects only) string literals. Literal nodes may have an associate language or datatype (but not both).

typedef const SordNode* SordQuad[4]

Quad of nodes (a statement), or a quad pattern.

Nodes are ordered (S P O G). The ID of the default graph is 0.


Enumeration Type Documentation

Index into a SordQuad.

Enumerator:
SORD_SUBJECT 

Subject.

SORD_PREDICATE 

Predicate (a.k.a.

"key")

SORD_OBJECT 

Object (a.k.a.

"value")

SORD_GRAPH 

Graph (a.k.a.

"context")

Type of a node.

Enumerator:
SORD_URI 

URI.

SORD_BLANK 

Blank node identifier.

SORD_LITERAL 

Literal (string with optional lang or datatype)

Indexing option.

Enumerator:
SORD_SPO 

Subject, Predicate, Object.

SORD_SOP 

Subject, Object, Predicate.

SORD_OPS 

Object, Predicate, Subject.

SORD_OSP 

Object, Subject, Predicate.

SORD_PSO 

Predicate, Subject, Object.

SORD_POS 

Predicate, Object, Subject.


Function Documentation

SordWorld* sord_world_new ( void  )

Create a new Sord World.

It is safe to use multiple worlds in one process, though no data (e.g. nodes) can be shared between worlds, and this should be avoided if possible for performance reasons.

void sord_world_free ( SordWorld world)

Free world.

SordNode* sord_new_uri ( SordWorld world,
const uint8_t *  str 
)

Get a URI node from a string.

Note this function measures str, which is a common bottleneck. Use sord_node_from_serd_node instead if str is already measured.

SordNode* sord_new_blank ( SordWorld world,
const uint8_t *  str 
)

Get a blank node from a string.

Note this function measures str, which is a common bottleneck. Use sord_node_from_serd_node instead if str is already measured.

SordNode* sord_new_literal ( SordWorld world,
SordNode datatype,
const uint8_t *  str,
const char *  lang 
)

Get a literal node from a string.

Note this function measures str, which is a common bottleneck. Use sord_node_from_serd_node instead if str is already measured.

SordNode* sord_node_copy ( const SordNode node)

Copy a node (obtain a reference).

Node that since nodes are interned and reference counted, this does not actually create a deep copy of node.

void sord_node_free ( SordWorld world,
SordNode node 
)

Free a node (drop a reference).

SordNodeType sord_node_get_type ( const SordNode node)

Return the type of a node (SORD_URI, SORD_BLANK, or SORD_LITERAL).

const uint8_t* sord_node_get_string ( const SordNode node)

Return the string value of a node.

const uint8_t* sord_node_get_string_counted ( const SordNode node,
size_t *  len 
)

Return the string value of a node, and set len to its length.

const char* sord_node_get_language ( const SordNode node)

Return the language of a literal node (or NULL).

SordNode* sord_node_get_datatype ( const SordNode node)

Return the datatype URI of a literal node (or NULL).

SerdNodeFlags sord_node_get_flags ( const SordNode node)

Return the flags (string attributes) of a node.

bool sord_node_is_inline_object ( const SordNode node)

Return true iff node can be serialised as an inline object.

More specifically, this returns true iff the node is the object field of exactly one statement, and therefore can be inlined since it needn't be referred to by name.

bool sord_node_equals ( const SordNode a,
const SordNode b 
)

Return true iff a is equal to b.

Note this is much faster than comparing the node's strings.

const SerdNode* sord_node_to_serd_node ( const SordNode node)

Return a SordNode as a SerdNode.

The returned node is shared and must not be freed or modified.

SordNode* sord_node_from_serd_node ( SordWorld world,
SerdEnv *  env,
const SerdNode *  node,
const SerdNode *  datatype,
const SerdNode *  lang 
)

Create a new SordNode from a SerdNode.

The returned node must be freed using sord_node_free.

SordModel* sord_new ( SordWorld world,
unsigned  indices,
bool  graphs 
)

Create a new model.

Parameters:
worldThe world in which to make this model.
indicesSordIndexOption flags (e.g. SORD_SPO|SORD_OPS). Be sure to enable an index where the most significant node(s) are not variables in your queries (e.g. to make (? P O) queries, enable either SORD_OPS or SORD_POS).
graphsIf true, store (and index) graph contexts.
void sord_free ( SordModel model)

Close and free model.

SordWorld* sord_get_world ( SordModel model)

Get the world associated with model.

size_t sord_num_nodes ( const SordWorld world)

Return the number of nodes stored in world.

Nodes are included in this count iff they are a part of a quad in world.

size_t sord_num_quads ( const SordModel model)

Return the number of quads stored in model.

SordIter* sord_begin ( const SordModel model)

Return an iterator to the start of model.

SordIter* sord_find ( SordModel model,
const SordQuad  pat 
)

Search for a triple pattern.

Returns:
an iterator to the first match, or NULL if no matches found.
bool sord_add ( SordModel model,
const SordQuad  quad 
)

Add a quad to a model.

void sord_remove ( SordModel model,
const SordQuad  quad 
)

Remove a quad from a model.

Note that is it illegal to remove while iterating over model.

void sord_iter_get ( const SordIter iter,
SordQuad  quad 
)

Set quad to the quad pointed to by iter.

const SordModel* sord_iter_get_model ( SordIter iter)

Return the store pointed to by iter.

bool sord_iter_next ( SordIter iter)

Increment iter to point to the next statement.

bool sord_iter_end ( const SordIter iter)

Return true iff iter is at the end of its range.

void sord_iter_free ( SordIter iter)

Free iter.

bool sord_quad_match ( const SordQuad  x,
const SordQuad  y 
)

Match two quads (using ID comparison only).

This function is a straightforward and fast equivalence match with wildcard support (ID 0 is a wildcard). It does not actually read node data.

Returns:
true iff x and y match.
SerdReader* sord_new_reader ( SordModel model,
SerdEnv *  env,
SerdSyntax  syntax,
SordNode graph 
)

Return a reader that will read into model.

bool sord_write ( SordModel model,
SerdWriter *  writer,
SordNode graph 
)

Write a model to a writer.