Serd
0.5.0
|
Structures | |
struct | SerdNode |
A syntactic RDF node. More... | |
struct | SerdChunk |
An unterminated string fragment. More... | |
struct | SerdURI |
A parsed URI. More... | |
Opaque Types | |
typedef struct SerdEnvImpl | SerdEnv |
typedef struct SerdReaderImpl | SerdReader |
typedef struct SerdWriterImpl | SerdWriter |
typedef uint32_t | SerdStatementFlags |
typedef uint32_t | SerdNodeFlags |
Enumerations | |
enum | SerdStatus { SERD_SUCCESS, SERD_FAILURE, SERD_ERR_UNKNOWN, SERD_ERR_BAD_SYNTAX, SERD_ERR_BAD_ARG, SERD_ERR_NOT_FOUND } |
enum | SerdSyntax { SERD_TURTLE = 1, SERD_NTRIPLES = 2 } |
enum | SerdStatementFlag { SERD_EMPTY_S = 1 << 1, SERD_EMPTY_O = 1 << 2, SERD_ANON_S_BEGIN = 1 << 3, SERD_ANON_O_BEGIN = 1 << 4, SERD_ANON_CONT = 1 << 5 } |
enum | SerdType { SERD_NOTHING = 0, SERD_LITERAL = 1, SERD_URI = 2, SERD_CURIE = 3, SERD_BLANK = 4 } |
enum | SerdNodeFlag { SERD_HAS_NEWLINE = 1, SERD_HAS_QUOTE = 1 << 1 } |
enum | SerdStyle { SERD_STYLE_ABBREVIATED = 1, SERD_STYLE_ASCII = 1 << 1, SERD_STYLE_RESOLVED = 1 << 2, SERD_STYLE_CURIED = 1 << 3 } |
Functions | |
const uint8_t * | serd_strerror (SerdStatus status) |
size_t | serd_strlen (const uint8_t *str, size_t *n_bytes, SerdNodeFlags *flags) |
URI | |
typedef size_t(* | SerdSink )(const void *buf, size_t len, void *stream) |
static const SerdURI | SERD_URI_NULL = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}} |
const uint8_t * | serd_uri_to_path (const uint8_t *uri) |
bool | serd_uri_string_has_scheme (const uint8_t *utf8) |
SerdStatus | serd_uri_parse (const uint8_t *utf8, SerdURI *out) |
void | serd_uri_resolve (const SerdURI *uri, const SerdURI *base, SerdURI *out) |
size_t | serd_uri_serialise (const SerdURI *uri, SerdSink sink, void *stream) |
Node | |
static const SerdNode | SERD_NODE_NULL = { 0, 0, 0, 0, SERD_NOTHING } |
SerdNode | serd_node_from_string (SerdType type, const uint8_t *str) |
SerdNode | serd_node_copy (const SerdNode *node) |
bool | serd_node_equals (const SerdNode *a, const SerdNode *b) |
SerdNode | serd_node_new_uri_from_node (const SerdNode *uri_node, const SerdURI *base, SerdURI *out) |
SerdNode | serd_node_new_uri_from_string (const uint8_t *str, const SerdURI *base, SerdURI *out) |
SerdNode | serd_node_new_uri (const SerdURI *uri, const SerdURI *base, SerdURI *out) |
void | serd_node_free (SerdNode *node) |
Event Handlers | |
typedef SerdStatus(* | SerdBaseSink )(void *handle, const SerdNode *uri) |
typedef SerdStatus(* | SerdPrefixSink )(void *handle, const SerdNode *name, const SerdNode *uri) |
typedef SerdStatus(* | SerdStatementSink )(void *handle, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *object_datatype, const SerdNode *object_lang) |
typedef SerdStatus(* | SerdEndSink )(void *handle, const SerdNode *node) |
Environment | |
SerdEnv * | serd_env_new (const SerdNode *base_uri) |
void | serd_env_free (SerdEnv *env) |
const SerdNode * | serd_env_get_base_uri (const SerdEnv *env, SerdURI *out) |
SerdStatus | serd_env_set_base_uri (SerdEnv *env, const SerdNode *uri) |
SerdStatus | serd_env_set_prefix (SerdEnv *env, const SerdNode *name, const SerdNode *uri) |
SerdStatus | serd_env_set_prefix_from_strings (SerdEnv *env, const uint8_t *name, const uint8_t *uri) |
bool | serd_env_qualify (const SerdEnv *env, const SerdNode *uri, SerdNode *prefix, SerdChunk *suffix) |
SerdStatus | serd_env_expand (const SerdEnv *env, const SerdNode *curie, SerdChunk *uri_prefix, SerdChunk *uri_suffix) |
SerdNode | serd_env_expand_node (const SerdEnv *env, const SerdNode *node) |
void | serd_env_foreach (const SerdEnv *env, SerdPrefixSink func, void *handle) |
Reader | |
SerdReader * | serd_reader_new (SerdSyntax syntax, void *handle, void(*free_handle)(void *), SerdBaseSink base_sink, SerdPrefixSink prefix_sink, SerdStatementSink statement_sink, SerdEndSink end_sink) |
void * | serd_reader_get_handle (const SerdReader *reader) |
void | serd_reader_add_blank_prefix (SerdReader *reader, const uint8_t *prefix) |
SerdStatus | serd_reader_read_file (SerdReader *reader, const uint8_t *uri) |
SerdStatus | serd_reader_read_file_handle (SerdReader *reader, FILE *file, const uint8_t *name) |
SerdStatus | serd_reader_read_string (SerdReader *me, const uint8_t *utf8) |
void | serd_reader_free (SerdReader *reader) |
Writer | |
SerdWriter * | serd_writer_new (SerdSyntax syntax, SerdStyle style, SerdEnv *env, const SerdURI *base_uri, SerdSink sink, void *stream) |
void | serd_writer_free (SerdWriter *writer) |
void | serd_writer_chop_blank_prefix (SerdWriter *writer, const uint8_t *prefix) |
SerdStatus | serd_writer_set_base_uri (SerdWriter *writer, const SerdNode *uri) |
SerdStatus | serd_writer_set_prefix (SerdWriter *writer, const SerdNode *name, const SerdNode *uri) |
SerdStatus | serd_writer_write_statement (SerdWriter *writer, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *object_datatype, const SerdNode *object_lang) |
SerdStatus | serd_writer_end_anon (SerdWriter *writer, const SerdNode *node) |
SerdStatus | serd_writer_finish (SerdWriter *writer) |
A lightweight RDF syntax library.
typedef struct SerdEnvImpl SerdEnv |
Environment.
Represents the state required to resolve a CURIE or relative URI, e.g. the base URI and set of namespace prefixes at a particular point.
typedef struct SerdReaderImpl SerdReader |
RDF reader.
Parses RDF by calling user-provided sink functions as input is consumed (much like an XML SAX parser).
typedef struct SerdWriterImpl SerdWriter |
RDF writer.
Provides a number of functions to allow writing RDF syntax out to some stream. These functions are deliberately compatible with the sink functions used by SerdReader, so a reader can be directly connected to a writer to re-serialise a document with minimal overhead.
typedef uint32_t SerdStatementFlags |
Bitwise OR of SerdNodeFlag values.
typedef uint32_t SerdNodeFlags |
Bitwise OR of SerdNodeFlag values.
typedef size_t(* SerdSink)(const void *buf, size_t len, void *stream) |
Sink function for raw string output.
typedef SerdStatus(* SerdBaseSink)(void *handle, const SerdNode *uri) |
Sink (callback) for base URI changes.
Called whenever the base URI of the serialisation changes.
typedef SerdStatus(* SerdPrefixSink)(void *handle, const SerdNode *name, const SerdNode *uri) |
Sink (callback) for namespace definitions.
Called whenever a prefix is defined in the serialisation.
typedef SerdStatus(* SerdStatementSink)(void *handle, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *object_datatype, const SerdNode *object_lang) |
Sink (callback) for statements.
Called for every RDF statement in the serialisation.
typedef SerdStatus(* SerdEndSink)(void *handle, const SerdNode *node) |
Sink (callback) for anonymous node end markers.
This is called to indicate that the anonymous node with the given value
will no longer be referred to by any future statements (i.e. the anonymous serialisation of the node is finished).
enum SerdStatus |
enum SerdSyntax |
enum SerdStatementFlag |
enum SerdType |
Type of a syntactic RDF node.
This is more precise than the type of an abstract RDF node. An abstract node is either a resource, literal, or blank. In syntax there are two ways to refer to a resource (by URI or CURIE) and two ways to refer to a blank (by ID or anonymously). Anonymous (inline) blank nodes are expressed using SerdStatementFlags rather than this type.
SERD_NOTHING |
The type of a nonexistent node. This type is useful as a sentinel, but is never emitted by the reader. |
SERD_LITERAL |
Literal value. A literal optionally has either a language, or a datatype (not both). |
SERD_URI |
URI (absolute or relative). Value is an unquoted URI string, which is either a relative reference with respect to the current base URI (e.g. "foo/bar"), or an absolute URI (e.g. "http://example.org/foo").
|
SERD_CURIE |
CURIE, a shortened URI. Value is an unquoted CURIE string relative to the current environment, e.g. "rdf:type".
|
SERD_BLANK |
A blank node. Value is a blank node ID, e.g. "id3", which is meaningful only within this serialisation.
|
enum SerdNodeFlag |
enum SerdStyle |
Syntax style options.
The style of the writer output can be controlled by ORing together values from this enumeration. Note that some options are only supported for some syntaxes (e.g. NTriples does not support abbreviation and is always ASCII).
const uint8_t* serd_strerror | ( | SerdStatus | status | ) |
size_t serd_strlen | ( | const uint8_t * | str, |
size_t * | n_bytes, | ||
SerdNodeFlags * | flags | ||
) |
UTF-8 strlen.
str
in characters (except NULL). str | A null-terminated UTF-8 string. |
n_bytes | (Output) Set to the size of str in bytes (except NULL). |
flags | (Output) Set to the applicable flags. |
const uint8_t* serd_uri_to_path | ( | const uint8_t * | uri | ) |
Return the local path for uri
, or NULL if uri
is not a file URI.
bool serd_uri_string_has_scheme | ( | const uint8_t * | utf8 | ) |
Return true iff utf8
starts with a valid URI scheme.
SerdStatus serd_uri_parse | ( | const uint8_t * | utf8, |
SerdURI * | out | ||
) |
Parse utf8
, writing result to out
.
Set out
to uri
resolved against base
.
Serialise uri
with a series of calls to sink
.
Make a (shallow) node from str
.
This measures, but does not copy, str
. No memory is allocated.
Make a deep copy of node
.
SerdNode serd_node_new_uri_from_node | ( | const SerdNode * | uri_node, |
const SerdURI * | base, | ||
SerdURI * | out | ||
) |
Simple wrapper for serd_node_new_uri to resolve a URI node.
Simple wrapper for serd_node_new_uri to resolve a URI string.
Create a new node by serialising uri
into a new string.
uri | The URI to parse and serialise. |
base | Base URI to resolve uri against (or NULL for no resolution). |
out | Set to the parsing of the new URI (i.e. points only to memory owned by the new returned node). |
void serd_node_free | ( | SerdNode * | node | ) |
Free any data owned by node
.
Note that if node
is itself dynamically allocated (which is not the case for nodes created internally by serd), it will not be freed.
void serd_env_free | ( | SerdEnv * | env | ) |
Free ns
.
Get the current base URI.
SerdStatus serd_env_set_base_uri | ( | SerdEnv * | env, |
const SerdNode * | uri | ||
) |
Set the current base URI.
SerdStatus serd_env_set_prefix | ( | SerdEnv * | env, |
const SerdNode * | name, | ||
const SerdNode * | uri | ||
) |
Set a namespace prefix.
SerdStatus serd_env_set_prefix_from_strings | ( | SerdEnv * | env, |
const uint8_t * | name, | ||
const uint8_t * | uri | ||
) |
Set a namespace prefix.
bool serd_env_qualify | ( | const SerdEnv * | env, |
const SerdNode * | uri, | ||
SerdNode * | prefix, | ||
SerdChunk * | suffix | ||
) |
Qualify uri
into a CURIE if possible.
SerdStatus serd_env_expand | ( | const SerdEnv * | env, |
const SerdNode * | curie, | ||
SerdChunk * | uri_prefix, | ||
SerdChunk * | uri_suffix | ||
) |
Expand curie
.
Expand node
, which must be a CURIE or URI, to a full URI.
void serd_env_foreach | ( | const SerdEnv * | env, |
SerdPrefixSink | func, | ||
void * | handle | ||
) |
Call func
for each prefix defined in env
.
SerdReader* serd_reader_new | ( | SerdSyntax | syntax, |
void * | handle, | ||
void(*)(void *) | free_handle, | ||
SerdBaseSink | base_sink, | ||
SerdPrefixSink | prefix_sink, | ||
SerdStatementSink | statement_sink, | ||
SerdEndSink | end_sink | ||
) |
Create a new RDF reader.
void* serd_reader_get_handle | ( | const SerdReader * | reader | ) |
Return the handle
passed to serd_reader_new.
void serd_reader_add_blank_prefix | ( | SerdReader * | reader, |
const uint8_t * | prefix | ||
) |
Set a prefix to be added to all blank node identifiers.
This is useful when multiple files are to be parsed into the same output (e.g. a store, or other files). Since Serd preserves blank node IDs, this could cause conflicts where two non-equivalent blank nodes are merged, resulting in corrupt data. By setting a unique blank node prefix for each parsed file, this can be avoided, while preserving blank node names.
SerdStatus serd_reader_read_file | ( | SerdReader * | reader, |
const uint8_t * | uri | ||
) |
Read a file at a given uri
.
SerdStatus serd_reader_read_file_handle | ( | SerdReader * | reader, |
FILE * | file, | ||
const uint8_t * | name | ||
) |
Read file
.
SerdStatus serd_reader_read_string | ( | SerdReader * | me, |
const uint8_t * | utf8 | ||
) |
Read utf8
.
void serd_reader_free | ( | SerdReader * | reader | ) |
Free reader
.
SerdWriter* serd_writer_new | ( | SerdSyntax | syntax, |
SerdStyle | style, | ||
SerdEnv * | env, | ||
const SerdURI * | base_uri, | ||
SerdSink | sink, | ||
void * | stream | ||
) |
Create a new RDF writer.
void serd_writer_free | ( | SerdWriter * | writer | ) |
Free writer
.
void serd_writer_chop_blank_prefix | ( | SerdWriter * | writer, |
const uint8_t * | prefix | ||
) |
Set a prefix to be removed from matching blank node identifiers.
SerdStatus serd_writer_set_base_uri | ( | SerdWriter * | writer, |
const SerdNode * | uri | ||
) |
Set the current output base URI (and emit directive if applicable).
Note this function can be safely casted to SerdBaseSink.
SerdStatus serd_writer_set_prefix | ( | SerdWriter * | writer, |
const SerdNode * | name, | ||
const SerdNode * | uri | ||
) |
Set a namespace prefix (and emit directive if applicable).
Note this function can be safely casted to SerdPrefixSink.
SerdStatus serd_writer_write_statement | ( | SerdWriter * | writer, |
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.
Note this function can be safely casted to SerdStatementSink.
SerdStatus serd_writer_end_anon | ( | SerdWriter * | writer, |
const SerdNode * | node | ||
) |
Mark the end of an anonymous node's description.
Note this function can be safely casted to SerdEndSink.
SerdStatus serd_writer_finish | ( | SerdWriter * | writer | ) |
Finish a write.
const SerdURI SERD_URI_NULL = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}} [static] |
const SerdNode SERD_NODE_NULL = { 0, 0, 0, 0, SERD_NOTHING } [static] |