|
Sord 0.16.18
|
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).
Typedefs | |
| typedef struct SordWorldImpl | SordWorld |
| typedef struct SordModelImpl | SordModel |
| typedef struct SordInserterImpl | SordInserter |
| typedef struct SordIterImpl | SordIter |
| typedef struct SordNodeImpl | SordNode |
| typedef const SordNode * | SordQuad[4] |
Enumerations | |
| enum | SordQuadIndex { SORD_SUBJECT = 0U , SORD_PREDICATE = 1U , SORD_OBJECT = 2U , SORD_GRAPH = 3U } |
| enum | SordNodeType { SORD_URI = 1U , SORD_BLANK = 2U , SORD_LITERAL = 3U } |
| enum | SordIndexOption { SORD_SPO = 1U , SORD_SOP = 1U << 1U , SORD_OPS = 1U << 2U , SORD_OSP = 1U << 3U , SORD_PSO = 1U << 4U , SORD_POS = 1U << 5U } |
World | |
| SORD_API SordWorld * | sord_world_new (void) |
| SORD_API void | sord_world_free (SordWorld *world) |
| SORD_API void | sord_world_set_error_sink (SordWorld *world, SerdErrorSink error_sink, void *handle) |
Node | |
| SORD_API SordNode * | sord_new_uri (SordWorld *world, const uint8_t *uri) |
| SORD_API SordNode * | sord_new_relative_uri (SordWorld *world, const uint8_t *uri, const uint8_t *base_uri) |
| SORD_API SordNode * | sord_new_blank (SordWorld *world, const uint8_t *str) |
| SORD_API SordNode * | sord_new_literal (SordWorld *world, SordNode *datatype, const uint8_t *str, const char *lang) |
| SORD_API SordNode * | sord_node_copy (const SordNode *node) |
| SORD_API void | sord_node_free (SordWorld *world, SordNode *node) |
| SORD_API SordNodeType | sord_node_get_type (const SordNode *node) |
| SORD_API const uint8_t * | sord_node_get_string (const SordNode *node) |
| SORD_API const uint8_t * | sord_node_get_string_counted (const SordNode *node, size_t *bytes) |
| SORD_API const uint8_t * | sord_node_get_string_measured (const SordNode *node, size_t *bytes, size_t *chars) |
| SORD_API const char * | sord_node_get_language (const SordNode *node) |
| SORD_API SordNode * | sord_node_get_datatype (const SordNode *node) |
| SORD_API SerdNodeFlags | sord_node_get_flags (const SordNode *node) |
| SORD_API bool | sord_node_is_inline_object (const SordNode *node) |
| SORD_API bool | sord_node_equals (const SordNode *a, const SordNode *b) |
| SORD_API const SerdNode * | sord_node_to_serd_node (const SordNode *node) |
| SORD_API SordNode * | sord_node_from_serd_node (SordWorld *world, SerdEnv *env, const SerdNode *node, const SerdNode *datatype, const SerdNode *lang) |
Model | |
| SORD_API SordModel * | sord_new (SordWorld *world, unsigned indices, bool graphs) |
| SORD_API void | sord_free (SordModel *model) |
| SORD_API SordWorld * | sord_get_world (SordModel *model) |
| SORD_API size_t | sord_num_nodes (const SordWorld *world) |
| SORD_API size_t | sord_num_quads (const SordModel *model) |
| SORD_API SordIter * | sord_begin (const SordModel *model) |
| SORD_API SordIter * | sord_find (SordModel *model, const SordQuad pat) |
| SORD_API SordIter * | sord_search (SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g) |
| SORD_API SordNode * | sord_get (SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g) |
| SORD_API bool | sord_ask (SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g) |
| SORD_API uint64_t | sord_count (SordModel *model, const SordNode *s, const SordNode *p, const SordNode *o, const SordNode *g) |
| SORD_API bool | sord_contains (SordModel *model, const SordQuad pat) |
| SORD_API bool | sord_add (SordModel *model, const SordQuad tup) |
| SORD_API void | sord_remove (SordModel *model, const SordQuad tup) |
| SORD_API SerdStatus | sord_erase (SordModel *model, SordIter *iter) |
Inserter | |
| SORD_API SordInserter * | sord_inserter_new (SordModel *model, SerdEnv *env) |
| SORD_API void | sord_inserter_free (SordInserter *inserter) |
| SORD_API SerdStatus | sord_inserter_set_base_uri (SordInserter *inserter, const SerdNode *uri) |
| SORD_API SerdStatus | sord_inserter_set_prefix (SordInserter *inserter, const SerdNode *name, const SerdNode *uri) |
| SORD_API SerdStatus | sord_inserter_write_statement (SordInserter *inserter, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *object_datatype, const SerdNode *object_lang) |
Iteration | |
| SORD_API void | sord_iter_get (const SordIter *iter, SordQuad tup) |
| SORD_API const SordNode * | sord_iter_get_node (const SordIter *iter, SordQuadIndex index) |
| SORD_API const SordModel * | sord_iter_get_model (SordIter *iter) |
| SORD_API bool | sord_iter_next (SordIter *iter) |
| SORD_API bool | sord_iter_end (const SordIter *iter) |
| SORD_API void | sord_iter_free (SordIter *iter) |
Utilities | |
| SORD_API bool | sord_quad_match (const SordQuad x, const SordQuad y) |
Serialisation | |
| SORD_API SerdReader * | sord_new_reader (SordModel *model, SerdEnv *env, SerdSyntax syntax, SordNode *graph) |
| SORD_API bool | sord_write (SordModel *model, SerdWriter *writer, SordNode *graph) |
| SORD_API bool | sord_write_iter (SordIter *iter, SerdWriter *writer) |
| 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 SordInserterImpl SordInserter |
Model Inserter.
An inserter is used for writing statements to a model using the Serd sink interface. This makes it simple to write to a model directly using a SerdReader, or any other code that writes statements to a SerdStatementSink.
| 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.
| enum SordQuadIndex |
Index into a SordQuad.
| Enumerator | |
|---|---|
| SORD_SUBJECT | Subject. |
| SORD_PREDICATE | Predicate ("key"). |
| SORD_OBJECT | Object ("value"). |
| SORD_GRAPH | Graph ("context"). |
| enum SordNodeType |
| enum SordIndexOption |
| SORD_API 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.
References sord_world_new().
Referenced by sord_world_new().
| SORD_API void sord_world_free | ( | SordWorld * | world | ) |
| SORD_API void sord_world_set_error_sink | ( | SordWorld * | world, |
| SerdErrorSink | error_sink, | ||
| void * | handle ) |
Set a function to be called when errors occur.
The error_sink will be called with handle as its first argument. If no error function is set, errors are printed to stderr.
References sord_world_set_error_sink().
Referenced by sord_world_set_error_sink().
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.
References sord_new_uri().
Referenced by sord_new_uri().
| SORD_API SordNode * sord_new_relative_uri | ( | SordWorld * | world, |
| const uint8_t * | uri, | ||
| const uint8_t * | base_uri ) |
Get a URI node from a relative URI string.
References sord_new_relative_uri().
Referenced by sord_new_relative_uri().
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.
References sord_new_blank().
Referenced by sord_new_blank().
| SORD_API 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.
References sord_new_literal().
Referenced by sord_new_literal().
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.
References sord_node_copy().
Referenced by sord_node_copy().
| SORD_API SordNodeType sord_node_get_type | ( | const SordNode * | node | ) |
Return the type of a node (SORD_URI, SORD_BLANK, or SORD_LITERAL).
References sord_node_get_type().
Referenced by sord_node_get_type().
| SORD_API const uint8_t * sord_node_get_string | ( | const SordNode * | node | ) |
Return the string value of a node.
References sord_node_get_string().
Referenced by sord_node_get_string().
| SORD_API const uint8_t * sord_node_get_string_counted | ( | const SordNode * | node, |
| size_t * | bytes ) |
Return the string value of a node, and set bytes to its length in bytes.
References sord_node_get_string_counted().
Referenced by sord_node_get_string_counted().
| SORD_API const uint8_t * sord_node_get_string_measured | ( | const SordNode * | node, |
| size_t * | bytes, | ||
| size_t * | chars ) |
Return the string value of a node, and set bytes to its length in bytes, and count to its length in characters.
References sord_node_get_string_measured().
Referenced by sord_node_get_string_measured().
| SORD_API const char * sord_node_get_language | ( | const SordNode * | node | ) |
Return the language of a literal node (or NULL).
References sord_node_get_language().
Referenced by sord_node_get_language().
Return the datatype URI of a literal node (or NULL).
References sord_node_get_datatype().
Referenced by sord_node_get_datatype().
| SORD_API SerdNodeFlags sord_node_get_flags | ( | const SordNode * | node | ) |
Return the flags (string attributes) of a node.
References sord_node_get_flags().
Referenced by sord_node_get_flags().
| SORD_API 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.
References sord_node_is_inline_object().
Referenced by sord_node_is_inline_object().
Return true iff a is equal to b.
Note this is much faster than comparing the node's strings.
References sord_node_equals().
Referenced by sord_node_equals().
| SORD_API 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.
References sord_node_to_serd_node().
Referenced by sord_node_to_serd_node().
| SORD_API 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().
References sord_node_from_serd_node().
Referenced by sord_node_from_serd_node().
Create a new model.
| world | The world in which to make this model. |
| indices | SordIndexOption 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). |
| graphs | If true, store (and index) graph contexts. |
References sord_new().
Referenced by sord_new().
| SORD_API void sord_free | ( | SordModel * | model | ) |
| SORD_API 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.
References sord_num_nodes().
Referenced by sord_num_nodes().
| SORD_API size_t sord_num_quads | ( | const SordModel * | model | ) |
Return the number of quads stored in model.
References sord_num_quads().
Referenced by sord_num_quads().
Search for statements by a quad pattern.
References sord_find().
Referenced by sord_find().
| SORD_API SordIter * sord_search | ( | SordModel * | model, |
| const SordNode * | s, | ||
| const SordNode * | p, | ||
| const SordNode * | o, | ||
| const SordNode * | g ) |
Search for statements by nodes.
References sord_search().
Referenced by sord_search().
| SORD_API SordNode * sord_get | ( | SordModel * | model, |
| const SordNode * | s, | ||
| const SordNode * | p, | ||
| const SordNode * | o, | ||
| const SordNode * | g ) |
Search for a single node that matches a pattern.
Exactly one of s, p, o must be NULL. This function is mainly useful for predicates that only have one value. The returned node must be freed using sord_node_free().
References sord_get().
Referenced by sord_get().
Check if model contains a triple pattern.
References sord_contains().
Referenced by sord_contains().
Add a quad to a model.
Calling this function invalidates all iterators on model.
References sord_add().
Referenced by sord_add().
Remove a quad from a model.
Calling this function invalidates all iterators on model. To remove quads while iterating, use sord_erase() instead.
References sord_remove().
Referenced by sord_remove().
Remove a quad from a model via an iterator.
Calling this function invalidates all iterators on model except iter.
| model | The model which iter points to. |
| iter | Iterator to the element to erase, which is incremented to the next value on return. |
References sord_erase().
Referenced by sord_erase().
| SORD_API SordInserter * sord_inserter_new | ( | SordModel * | model, |
| SerdEnv * | env ) |
Create an inserter for writing statements to a model.
References sord_inserter_new().
Referenced by sord_inserter_new().
| SORD_API void sord_inserter_free | ( | SordInserter * | inserter | ) |
| SORD_API SerdStatus sord_inserter_set_base_uri | ( | SordInserter * | inserter, |
| const SerdNode * | uri ) |
Set the current base URI for writing to the model.
Note this function can be safely casted to SerdBaseSink.
References sord_inserter_set_base_uri().
Referenced by sord_inserter_set_base_uri().
| SORD_API SerdStatus sord_inserter_set_prefix | ( | SordInserter * | inserter, |
| const SerdNode * | name, | ||
| const SerdNode * | uri ) |
Set a namespace prefix for writing to the model.
Note this function can be safely casted to SerdPrefixSink.
References sord_inserter_set_prefix().
Referenced by sord_inserter_set_prefix().
| SORD_API SerdStatus sord_inserter_write_statement | ( | SordInserter * | inserter, |
| SerdStatementFlags | flags, | ||
| const SerdNode * | graph, | ||
| const SerdNode * | subject, | ||
| const SerdNode * | predicate, | ||
| const SerdNode * | object, | ||
| const SerdNode * | object_datatype, | ||
| const SerdNode * | object_lang ) |
Write a statement to the model.
Note this function can be safely casted to SerdStatementSink.
References sord_inserter_write_statement().
Referenced by sord_inserter_write_statement().
| SORD_API const SordNode * sord_iter_get_node | ( | const SordIter * | iter, |
| SordQuadIndex | index ) |
Return a field of the quad pointed to by iter.
Returns NULL if iter is NULL or is at the end.
References sord_iter_get_node().
Referenced by sord_iter_get_node().
Return the store pointed to by iter.
References sord_iter_get_model().
Referenced by sord_iter_get_model().
| SORD_API bool sord_iter_next | ( | SordIter * | iter | ) |
Increment iter to point to the next statement.
References sord_iter_next().
Referenced by sord_iter_next().
| SORD_API bool sord_iter_end | ( | const SordIter * | iter | ) |
Return true iff iter is at the end of its range.
References sord_iter_end().
Referenced by sord_iter_end().
| SORD_API void sord_iter_free | ( | SordIter * | iter | ) |
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.
References sord_quad_match().
Referenced by sord_quad_match().
| SORD_API SerdReader * sord_new_reader | ( | SordModel * | model, |
| SerdEnv * | env, | ||
| SerdSyntax | syntax, | ||
| SordNode * | graph ) |
Return a reader that will read into model.
References sord_new_reader().
Referenced by sord_new_reader().
| SORD_API bool sord_write_iter | ( | SordIter * | iter, |
| SerdWriter * | writer ) |
Write a range to a writer.
This increments iter to its end, then frees it.
References sord_write_iter().
Referenced by sord_write_iter().