Serd 0.28.0
Data Structures | Typedefs | Enumerations
Serd

Detailed Description

A lightweight RDF syntax library.

Data Structures

struct SerdNode
struct SerdChunk
struct SerdError
struct SerdURI

Typedefs

typedef struct SerdEnvImplSerdEnv
typedef struct SerdReaderImplSerdReader
typedef struct SerdWriterImplSerdWriter
typedef uint32_tSerdStatementFlags
typedef uint32_tSerdNodeFlags

Enumerations

enum SerdStatus {
SERD_SUCCESS,
SERD_FAILURE,
SERD_ERR_UNKNOWN,
SERD_ERR_BAD_SYNTAX,
SERD_ERR_BAD_ARG,
SERD_ERR_NOT_FOUND,
SERD_ERR_ID_CLASH,
SERD_ERR_BAD_CURIE,
SERD_ERR_INTERNAL
}
enum SerdSyntax {
SERD_TURTLE = 1,
SERD_NTRIPLES = 2,
SERD_NQUADS = 3,
SERD_TRIG = 4
}
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,
SERD_LIST_S_BEGIN = 1 << 6,
SERD_LIST_O_BEGIN = 1 << 7,
SERD_LIST_CONT = 1 << 8
}
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,
SERD_STYLE_BULK = 1 << 4
}

String Utilities

const uint8_t *serd_strerror (SerdStatus status)
size_tserd_strlen (const uint8_t *str, size_t *n_bytes, SerdNodeFlags *flags)
doubleserd_strtod (const char *str, char **endptr)
void *serd_base64_decode (const uint8_t *str, size_t len, size_t *size)

URI

typedef int(*SerdStreamErrorFunc) (void *stream)
typedef size_t(*SerdSource) (void *buf, size_t size, size_t nmemb, void *stream)
typedef size_t(*SerdSink) (const void *buf, size_t len, void *stream)
static const SerdURISERD_URI_NULL
const uint8_t *serd_uri_to_path (const uint8_t *uri)
uint8_t *serd_file_uri_parse (const uint8_t *uri, uint8_t **hostname)
boolserd_uri_string_has_scheme (const uint8_t *utf8)
SerdStatusserd_uri_parse (const uint8_t *utf8, SerdURI *out)
voidserd_uri_resolve (const SerdURI *r, const SerdURI *base, SerdURI *t)
size_tserd_uri_serialise (const SerdURI *uri, SerdSink sink, void *stream)
size_tserd_uri_serialise_relative (const SerdURI *uri, const SerdURI *base, const SerdURI *root, SerdSink sink, void *stream)

Node

static const SerdNodeSERD_NODE_NULL = { NULL, 0, 0, 0, SERD_NOTHING }
SerdNodeserd_node_from_string (SerdType type, const uint8_t *str)
SerdNodeserd_node_from_substring (SerdType type, const uint8_t *str, size_t len)
SerdNodeserd_node_copy (const SerdNode *node)
boolserd_node_equals (const SerdNode *a, const SerdNode *b)
SerdNodeserd_node_new_uri_from_node (const SerdNode *uri_node, const SerdURI *base, SerdURI *out)
SerdNodeserd_node_new_uri_from_string (const uint8_t *str, const SerdURI *base, SerdURI *out)
SerdNodeserd_node_new_file_uri (const uint8_t *path, const uint8_t *hostname, SerdURI *out, bool escape)
SerdNodeserd_node_new_uri (const SerdURI *uri, const SerdURI *base, SerdURI *out)
SerdNodeserd_node_new_relative_uri (const SerdURI *uri, const SerdURI *base, const SerdURI *root, SerdURI *out)
SerdNodeserd_node_new_decimal (double d, unsigned frac_digits)
SerdNodeserd_node_new_integer (int64_t i)
SerdNodeserd_node_new_blob (const void *buf, size_t size, bool wrap_lines)
voidserd_node_free (SerdNode *node)

Event Handlers

typedef SerdStatus(*SerdErrorSink) (void *handle, const SerdError *error)
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)
voidserd_env_free (SerdEnv *env)
const SerdNode *serd_env_get_base_uri (const SerdEnv *env, SerdURI *out)
SerdStatusserd_env_set_base_uri (SerdEnv *env, const SerdNode *uri)
SerdStatusserd_env_set_prefix (SerdEnv *env, const SerdNode *name, const SerdNode *uri)
SerdStatusserd_env_set_prefix_from_strings (SerdEnv *env, const uint8_t *name, const uint8_t *uri)
boolserd_env_qualify (const SerdEnv *env, const SerdNode *uri, SerdNode *prefix, SerdChunk *suffix)
SerdStatusserd_env_expand (const SerdEnv *env, const SerdNode *curie, SerdChunk *uri_prefix, SerdChunk *uri_suffix)
SerdNodeserd_env_expand_node (const SerdEnv *env, const SerdNode *node)
voidserd_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)
voidserd_reader_set_strict (SerdReader *reader, bool strict)
voidserd_reader_set_error_sink (SerdReader *reader, SerdErrorSink error_sink, void *error_handle)
void *serd_reader_get_handle (const SerdReader *reader)
voidserd_reader_add_blank_prefix (SerdReader *reader, const uint8_t *prefix)
voidserd_reader_set_default_graph (SerdReader *reader, const SerdNode *graph)
SerdStatusserd_reader_read_file (SerdReader *reader, const uint8_t *uri)
SerdStatusserd_reader_start_stream (SerdReader *reader, FILE *file, const uint8_t *name, bool bulk)
SerdStatusserd_reader_start_source_stream (SerdReader *reader, SerdSource read_func, SerdStreamErrorFunc error_func, void *stream, const uint8_t *name, size_t page_size)
SerdStatusserd_reader_read_chunk (SerdReader *reader)
SerdStatusserd_reader_end_stream (SerdReader *reader)
SerdStatusserd_reader_read_file_handle (SerdReader *reader, FILE *file, const uint8_t *name)
SerdStatusserd_reader_read_source (SerdReader *reader, SerdSource source, SerdStreamErrorFunc error, void *stream, const uint8_t *name, size_t page_size)
SerdStatusserd_reader_read_string (SerdReader *reader, const uint8_t *utf8)
voidserd_reader_free (SerdReader *reader)

Writer

SerdWriter *serd_writer_new (SerdSyntax syntax, SerdStyle style, SerdEnv *env, const SerdURI *base_uri, SerdSink ssink, void *stream)
voidserd_writer_free (SerdWriter *writer)
SerdEnv *serd_writer_get_env (SerdWriter *writer)
size_tserd_file_sink (const void *buf, size_t len, void *stream)
size_tserd_chunk_sink (const void *buf, size_t len, void *stream)
uint8_t *serd_chunk_sink_finish (SerdChunk *stream)
voidserd_writer_set_error_sink (SerdWriter *writer, SerdErrorSink error_sink, void *error_handle)
voidserd_writer_chop_blank_prefix (SerdWriter *writer, const uint8_t *prefix)
SerdStatusserd_writer_set_base_uri (SerdWriter *writer, const SerdNode *uri)
SerdStatusserd_writer_set_root_uri (SerdWriter *writer, const SerdNode *uri)
SerdStatusserd_writer_set_prefix (SerdWriter *writer, const SerdNode *name, const SerdNode *uri)
SerdStatusserd_writer_write_statement (SerdWriter *writer, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *datatype, const SerdNode *lang)
SerdStatusserd_writer_end_anon (SerdWriter *writer, const SerdNode *node)
SerdStatusserd_writer_finish (SerdWriter *writer)

Data Structure Documentation

◆ SerdNode

struct SerdNode

A syntactic RDF node.

Data Fields
const uint8_t * buf Value string.
size_t n_bytes Size in bytes (not including null)
size_t n_chars Length in characters (not including null)
SerdNodeFlags flags Node flags (e.g.

string properties)

SerdType type Node type.

◆ SerdChunk

struct SerdChunk

An unterminated string fragment.

Data Fields
const uint8_t * buf Start of chunk.
size_t len Length of chunk in bytes.

◆ SerdError

struct SerdError

An error description.

Data Fields
SerdStatus status Error code.
const uint8_t * filename File where error was encountered, or NULL.
unsigned line Line where error was encountered, or 0.
unsigned col Column where error was encountered.
const char * fmt Message format string (printf style)
va_list * args Arguments for fmt.

◆ SerdURI

struct SerdURI

A parsed URI.

This struct directly refers to chunks in other strings, it does not own any memory itself. Thus, URIs can be parsed and/or resolved against a base URI in-place without allocating memory.

Data Fields
SerdChunk scheme Scheme.
SerdChunk authority Authority.
SerdChunk path_base Path prefix if relative.
SerdChunk path Path suffix.
SerdChunk query Query.
SerdChunk fragment Fragment.

Typedef Documentation

◆ SerdEnv

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.

◆ SerdReader

typedef struct SerdReaderImpl SerdReader

RDF reader.

Parses RDF by calling user-provided sink functions as input is consumed (much like an XML SAX parser).

◆ SerdWriter

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.

◆ SerdStatementFlags

typedef uint32_t SerdStatementFlags

Bitwise OR of SerdNodeFlag values.

◆ SerdNodeFlags

typedef uint32_t SerdNodeFlags

Bitwise OR of SerdNodeFlag values.

◆ SerdStreamErrorFunc

typedef int(* SerdStreamErrorFunc) (void *stream)

Function to detect I/O stream errors.

Identical semantics to ferror.

Returns
Non-zero if stream has encountered an error.

◆ SerdSource

typedef size_t(* SerdSource) (void *buf, size_t size, size_t nmemb, void *stream)

Source function for raw string input.

Identical semantics to fread, but may set errno for more informative error reporting than supported by SerdStreamErrorFunc.

Parameters
bufOutput buffer.
sizeSize of a single element of data in bytes (always 1).
nmembNumber of elements to read.
streamStream to read from (FILE* for fread).
Returns
Number of elements (bytes) read.

◆ SerdSink

typedef size_t(* SerdSink) (const void *buf, size_t len, void *stream)

Sink function for raw string output.

◆ SerdErrorSink

typedef SerdStatus(* SerdErrorSink) (void *handle, const SerdError *error)

Sink (callback) for errors.

Parameters
handleHandle for user data.
errorError description.

◆ SerdBaseSink

typedef SerdStatus(* SerdBaseSink) (void *handle, const SerdNode *uri)

Sink (callback) for base URI changes.

Called whenever the base URI of the serialisation changes.

◆ SerdPrefixSink

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.

◆ SerdStatementSink

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.

◆ SerdEndSink

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).

Enumeration Type Documentation

◆ SerdStatus

enum SerdStatus

Return status code.

Enumerator
SERD_SUCCESS

No error.

SERD_FAILURE

Non-fatal failure.

SERD_ERR_UNKNOWN

Unknown error.

SERD_ERR_BAD_SYNTAX

Invalid syntax.

SERD_ERR_BAD_ARG

Invalid argument.

SERD_ERR_NOT_FOUND

Not found.

SERD_ERR_ID_CLASH

Encountered clashing blank node IDs.

SERD_ERR_BAD_CURIE

Invalid CURIE (e.g.

prefix does not exist)

SERD_ERR_INTERNAL

Unexpected internal error (should not happen)

◆ SerdSyntax

enum SerdSyntax

RDF syntax type.

Enumerator
SERD_TURTLE

Turtle - Terse RDF Triple Language (UTF-8).

See also
Turtle
SERD_NTRIPLES

NTriples - Line-based RDF triples (ASCII).

See also
NTriples
SERD_NQUADS

NQuads - Line-based RDF quads (UTF-8).

See also
NQuads
SERD_TRIG

TRiG - Terse RDF quads (UTF-8).

See also
Trig

◆ SerdStatementFlag

Flags indication inline abbreviation information for a statement.

Enumerator
SERD_EMPTY_S

Empty blank node subject.

SERD_EMPTY_O

Empty blank node object.

SERD_ANON_S_BEGIN

Start of anonymous subject.

SERD_ANON_O_BEGIN

Start of anonymous object.

SERD_ANON_CONT

Continuation of anonymous node.

SERD_LIST_S_BEGIN

Start of list subject.

SERD_LIST_O_BEGIN

Start of list object.

SERD_LIST_CONT

Continuation of list.

◆ SerdType

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.

Enumerator
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").

See also
RFC3986.
SERD_CURIE

CURIE, a shortened URI.

Value is an unquoted CURIE string relative to the current environment, e.g. "rdf:type".

See also
CURIE Syntax 1.0
SERD_BLANK

A blank node.

Value is a blank node ID, e.g. "id3", which is meaningful only within this serialisation.

See also
Turtle nodeID

◆ SerdNodeFlag

Flags indicating certain string properties relevant to serialisation.

Enumerator
SERD_HAS_NEWLINE

Contains line breaks ('\n' or '\r')

SERD_HAS_QUOTE

Contains quotes ('"')

◆ SerdStyle

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).

Enumerator
SERD_STYLE_ABBREVIATED

Abbreviate triples when possible.

SERD_STYLE_ASCII

Escape all non-ASCII characters.

SERD_STYLE_RESOLVED

Resolve URIs against base URI.

SERD_STYLE_CURIED

Shorten URIs into CURIEs.

SERD_STYLE_BULK

Write output in pages.

Function Documentation

◆ serd_strerror()

const uint8_t* serd_strerror ( SerdStatus status)

Return a string describing a status code.

◆ serd_strlen()

size_t serd_strlen ( const uint8_t * str,
size_t * n_bytes,
SerdNodeFlags * flags
)

Measure a UTF-8 string.

Returns
Length of str in characters (except NULL).
Parameters
strA 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.

◆ serd_strtod()

double serd_strtod ( const char * str,
char ** endptr
)

Parse a string to a double.

The API of this function is identical to the standard C strtod function, except this function is locale-independent and always matches the lexical format used in the Turtle grammar (the decimal point is always ".").

◆ serd_base64_decode()

void* serd_base64_decode ( const uint8_t * str,
size_t len,
size_t * size
)

Decode a base64 string.

This function can be used to deserialise a blob node created with serd_node_new_blob().

Parameters
strBase64 string to decode.
lenThe length of str.
sizeSet to the size of the returned blob in bytes.
Returns
A newly allocated blob which must be freed with free().

◆ serd_uri_to_path()

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.

Note this (inappropriately named) function only removes the file scheme if necessary, and returns uri unmodified if it is an absolute path. Percent encoding and other issues are not handled, to properly convert a file URI to a path, use serd_file_uri_parse().

◆ serd_file_uri_parse()

uint8_t* serd_file_uri_parse ( const uint8_t * uri,
uint8_t ** hostname
)

Get the unescaped path and hostname from a file URI.

Parameters
uriA file URI.
hostnameIf non-NULL, set to the hostname, if present.
Returns
The path component of the URI.

The returned path and *hostname must be freed with free().

◆ serd_uri_string_has_scheme()

bool serd_uri_string_has_scheme ( const uint8_t * utf8)

Return true iff utf8 starts with a valid URI scheme.

◆ serd_uri_parse()

SerdStatus serd_uri_parse ( const uint8_t * utf8,
SerdURI * out
)

Parse utf8, writing result to out.

◆ serd_uri_resolve()

void serd_uri_resolve ( const SerdURI * r,
const SerdURI * base,
SerdURI * t
)

Set target t to reference r resolved against base.

See also
http://tools.ietf.org/html/rfc3986#section-5.2.2

◆ serd_uri_serialise()

size_t serd_uri_serialise ( const SerdURI * uri,
SerdSink sink,
void * stream
)

Serialise uri with a series of calls to sink.

◆ serd_uri_serialise_relative()

size_t serd_uri_serialise_relative ( const SerdURI * uri,
const SerdURI * base,
const SerdURI * root,
SerdSink sink,
void * stream
)

Serialise uri relative to base with a series of calls to sink.

The uri is written as a relative URI iff if it a child of base and root. The optional root parameter must be a prefix of base and can be used keep up-references ("../") within a certain namespace.

◆ serd_node_from_string()

SerdNode serd_node_from_string ( SerdType type,
const uint8_t * str
)

Make a (shallow) node from str.

This measures, but does not copy, str. No memory is allocated.

◆ serd_node_from_substring()

SerdNode serd_node_from_substring ( SerdType type,
const uint8_t * str,
size_t len
)

Make a (shallow) node from a prefix of str.

This measures, but does not copy, str. No memory is allocated. Note that the returned node may not be null terminated.

◆ serd_node_copy()

SerdNode serd_node_copy ( const SerdNode * node)

Make a deep copy of node.

Returns
a node that the caller must free with serd_node_free().

◆ serd_node_equals()

bool serd_node_equals ( const SerdNode * a,
const SerdNode * b
)

Return true iff a is equal to b.

◆ serd_node_new_uri_from_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.

◆ serd_node_new_uri_from_string()

SerdNode serd_node_new_uri_from_string ( const uint8_t * str,
const SerdURI * base,
SerdURI * out
)

Simple wrapper for serd_node_new_uri() to resolve a URI string.

◆ serd_node_new_file_uri()

SerdNode serd_node_new_file_uri ( const uint8_t * path,
const uint8_t * hostname,
SerdURI * out,
bool escape
)

Create a new file URI node from a file system path and optional hostname.

Backslashes in Windows paths will be converted and '' will always be percent encoded. If escape is true, all other invalid characters will be percent encoded as well.

If path is relative, hostname is ignored. If out is not NULL, it will be set to the parsed URI.

◆ serd_node_new_uri()

SerdNode serd_node_new_uri ( const SerdURI * uri,
const SerdURI * base,
SerdURI * out
)

Create a new node by serialising uri into a new string.

Parameters
uriThe URI to serialise.
baseBase URI to resolve uri against (or NULL for no resolution).
outSet to the parsing of the new URI (i.e. points only to memory owned by the new returned node).

◆ serd_node_new_relative_uri()

SerdNode serd_node_new_relative_uri ( const SerdURI * uri,
const SerdURI * base,
const SerdURI * root,
SerdURI * out
)

Create a new node by serialising uri into a new relative URI.

Parameters
uriThe URI to serialise.
baseBase URI to make uri relative to, if possible.
rootRoot URI for resolution (see serd_uri_serialise_relative()).
outSet to the parsing of the new URI (i.e. points only to memory owned by the new returned node).

◆ serd_node_new_decimal()

SerdNode serd_node_new_decimal ( double d,
unsigned frac_digits
)

Create a new node by serialising d into an xsd:decimal string.

The resulting node will always contain a ‘.’, start with a digit, and end with a digit (i.e. will have a leading and/or trailing ‘0’ if necessary). It will never be in scientific notation. A maximum of frac_digits digits will be written after the decimal point, but trailing zeros will automatically be omitted (except one if d is a round integer).

Note that about 16 and 8 fractional digits are required to precisely represent a double and float, respectively.

Parameters
dThe value for the new node.
frac_digitsThe maximum number of digits after the decimal place.

◆ serd_node_new_integer()

SerdNode serd_node_new_integer ( int64_t i)

Create a new node by serialising i into an xsd:integer string.

◆ serd_node_new_blob()

SerdNode serd_node_new_blob ( const void * buf,
size_t size,
bool wrap_lines
)

Create a node by serialising buf into an xsd:base64Binary string.

This function can be used to make a serialisable node out of arbitrary binary data, which can be decoded using serd_base64_decode().

Parameters
bufRaw binary input data.
sizeSize of buf.
wrap_linesWrap lines at 76 characters to conform to RFC 2045.

◆ serd_node_free()

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.

◆ serd_env_new()

SerdEnv* serd_env_new ( const SerdNode * base_uri)

Create a new environment.

◆ serd_env_free()

void serd_env_free ( SerdEnv * env)

Free ns.

◆ serd_env_get_base_uri()

const SerdNode* serd_env_get_base_uri ( const SerdEnv * env,
SerdURI * out
)

Get the current base URI.

◆ serd_env_set_base_uri()

SerdStatus serd_env_set_base_uri ( SerdEnv * env,
const SerdNode * uri
)

Set the current base URI.

◆ serd_env_set_prefix()

SerdStatus serd_env_set_prefix ( SerdEnv * env,
const SerdNode * name,
const SerdNode * uri
)

Set a namespace prefix.

◆ serd_env_set_prefix_from_strings()

SerdStatus serd_env_set_prefix_from_strings ( SerdEnv * env,
const uint8_t * name,
const uint8_t * uri
)

Set a namespace prefix.

◆ serd_env_qualify()

bool serd_env_qualify ( const SerdEnv * env,
const SerdNode * uri,
SerdNode * prefix,
SerdChunk * suffix
)

Qualify uri into a CURIE if possible.

◆ serd_env_expand()

SerdStatus serd_env_expand ( const SerdEnv * env,
const SerdNode * curie,
SerdChunk * uri_prefix,
SerdChunk * uri_suffix
)

Expand curie.

◆ serd_env_expand_node()

SerdNode serd_env_expand_node ( const SerdEnv * env,
const SerdNode * node
)

Expand node, which must be a CURIE or URI, to a full URI.

◆ serd_env_foreach()

void serd_env_foreach ( const SerdEnv * env,
SerdPrefixSink func,
void * handle
)

Call func for each prefix defined in env.

◆ serd_reader_new()

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.

◆ serd_reader_set_strict()

void serd_reader_set_strict ( SerdReader * reader,
bool strict
)

Enable or disable strict parsing.

The reader is non-strict (lax) by default, which will tolerate URIs with invalid characters. Setting strict will fail when parsing such files. An error is printed for invalid input in either case.

◆ serd_reader_set_error_sink()

void serd_reader_set_error_sink ( SerdReader * reader,
SerdErrorSink error_sink,
void * error_handle
)

Set a function to be called when errors occur during reading.

The error_sink will be called with handle as its first argument. If no error function is set, errors are printed to stderr in GCC style.

◆ serd_reader_get_handle()

void* serd_reader_get_handle ( const SerdReader * reader)

Return the handle passed to serd_reader_new().

◆ serd_reader_add_blank_prefix()

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.

◆ serd_reader_set_default_graph()

void serd_reader_set_default_graph ( SerdReader * reader,
const SerdNode * graph
)

Set the URI of the default graph.

If this is set, the reader will emit quads with the graph set to the given node for any statements that are not in a named graph (which is currently all of them since Serd currently does not support any graph syntaxes).

◆ serd_reader_read_file()

SerdStatus serd_reader_read_file ( SerdReader * reader,
const uint8_t * uri
)

Read a file at a given uri.

◆ serd_reader_start_stream()

SerdStatus serd_reader_start_stream ( SerdReader * reader,
FILE * file,
const uint8_t * name,
bool bulk
)

Start an incremental read from a file handle.

Iff bulk is true, file will be read a page at a time. This is more efficient, but uses a page of memory and means that an entire page of input must be ready before any callbacks will fire. To react as soon as input arrives, set bulk to false.

◆ serd_reader_start_source_stream()

SerdStatus serd_reader_start_source_stream ( SerdReader * reader,
SerdSource read_func,
SerdStreamErrorFunc error_func,
void * stream,
const uint8_t * name,
size_t page_size
)

Start an incremental read from a user-specified source.

The read_func is guaranteed to only be called for page_size elements with size 1 (i.e. page_size bytes).

◆ serd_reader_read_chunk()

SerdStatus serd_reader_read_chunk ( SerdReader * reader)

Read a single "chunk" of data during an incremental read.

This function will read a single top level description, and return. This may be a directive, statement, or several statements; essentially it reads until a '.' is encountered. This is particularly useful for reading directly from a pipe or socket.

◆ serd_reader_end_stream()

SerdStatus serd_reader_end_stream ( SerdReader * reader)

Finish an incremental read from a file handle.

◆ serd_reader_read_file_handle()

SerdStatus serd_reader_read_file_handle ( SerdReader * reader,
FILE * file,
const uint8_t * name
)

Read file.

◆ serd_reader_read_source()

SerdStatus serd_reader_read_source ( SerdReader * reader,
SerdSource source,
SerdStreamErrorFunc error,
void * stream,
const uint8_t * name,
size_t page_size
)

Read a user-specified byte source.

◆ serd_reader_read_string()

SerdStatus serd_reader_read_string ( SerdReader * reader,
const uint8_t * utf8
)

Read utf8.

◆ serd_reader_free()

void serd_reader_free ( SerdReader * reader)

Free reader.

◆ serd_writer_new()

SerdWriter* serd_writer_new ( SerdSyntax syntax,
SerdStyle style,
SerdEnv * env,
const SerdURI * base_uri,
SerdSink ssink,
void * stream
)

Create a new RDF writer.

◆ serd_writer_free()

void serd_writer_free ( SerdWriter * writer)

Free writer.

◆ serd_writer_get_env()

SerdEnv* serd_writer_get_env ( SerdWriter * writer)

Return the env used by writer.

◆ serd_file_sink()

size_t serd_file_sink ( const void * buf,
size_t len,
void * stream
)

A convenience sink function for writing to a FILE*.

This function can be used as a SerdSink when writing to a FILE*. The stream parameter must be a FILE* opened for writing.

◆ serd_chunk_sink()

size_t serd_chunk_sink ( const void * buf,
size_t len,
void * stream
)

A convenience sink function for writing to a string.

This function can be used as a SerdSink to write to a SerdChunk which is resized as necessary with realloc(). The stream parameter must point to an initialized SerdChunk. When the write is finished, the string should be retrieved with serd_chunk_sink_finish().

◆ serd_chunk_sink_finish()

uint8_t* serd_chunk_sink_finish ( SerdChunk * stream)

Finish a serialisation to a chunk with serd_chunk_sink().

The returned string is the result of the serialisation, which is NULL terminated (by this function) and owned by the caller.

◆ serd_writer_set_error_sink()

void serd_writer_set_error_sink ( SerdWriter * writer,
SerdErrorSink error_sink,
void * error_handle
)

Set a function to be called when errors occur during writing.

The error_sink will be called with handle as its first argument. If no error function is set, errors are printed to stderr.

◆ serd_writer_chop_blank_prefix()

void serd_writer_chop_blank_prefix ( SerdWriter * writer,
const uint8_t * prefix
)

Set a prefix to be removed from matching blank node identifiers.

◆ serd_writer_set_base_uri()

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.

◆ serd_writer_set_root_uri()

SerdStatus serd_writer_set_root_uri ( SerdWriter * writer,
const SerdNode * uri
)

Set the current root URI.

The root URI should be a prefix of the base URI. The path of the root URI is the highest path any relative up-reference can refer to. For example, with root file:///foo/root and base file:///foo/root/base, file:///foo/root will be written as <../>, but file:///foo will be written non-relatively as file:///foo. If the root is not explicitly set, it defaults to the base URI, so no up-references will be created at all.

◆ serd_writer_set_prefix()

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.

◆ serd_writer_write_statement()

SerdStatus serd_writer_write_statement ( SerdWriter * writer,
SerdStatementFlags flags,
const SerdNode * graph,
const SerdNode * subject,
const SerdNode * predicate,
const SerdNode * object,
const SerdNode * datatype,
const SerdNode * lang
)

Write a statement.

Note this function can be safely casted to SerdStatementSink.

◆ serd_writer_end_anon()

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.

◆ serd_writer_finish()

SerdStatus serd_writer_finish ( SerdWriter * writer)

Finish a write.

Variable Documentation

◆ SERD_URI_NULL

const SerdURI SERD_URI_NULL
static
Initial value:
= {
{NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}
}

◆ SERD_NODE_NULL

const SerdNode SERD_NODE_NULL = { NULL, 0, 0, 0, SERD_NOTHING }
static
SerdChunk::len
size_t len
Length of chunk in bytes.
Definition: serd.h:230
serd_reader_new
SerdReader * serd_reader_new(SerdSyntax syntax, void *handle, void(*free_handle)(void *), SerdBaseSink base_sink, SerdPrefixSink prefix_sink, SerdStatementSink statement_sink, SerdEndSink end_sink)
Create a new RDF reader.
SERD_NODE_NULL
static const SerdNode SERD_NODE_NULL
Definition: serd.h:440
SerdURI
A parsed URI.
Definition: serd.h:252
SERD_STYLE_ASCII
@ SERD_STYLE_ASCII
Escape all non-ASCII characters.
Definition: serd.h:271
SERD_ERR_BAD_CURIE
@ SERD_ERR_BAD_CURIE
Invalid CURIE (e.g.
Definition: serd.h:95
serd_env_set_base_uri
SerdStatus serd_env_set_base_uri(SerdEnv *env, const SerdNode *uri)
Set the current base URI.
serd_writer_write_statement
SerdStatus serd_writer_write_statement(SerdWriter *writer, SerdStatementFlags flags, const SerdNode *graph, const SerdNode *subject, const SerdNode *predicate, const SerdNode *object, const SerdNode *datatype, const SerdNode *lang)
Write a statement.
SerdURI::path_base
SerdChunk path_base
Path prefix if relative.
Definition: serd.h:255
SERD_STYLE_CURIED
@ SERD_STYLE_CURIED
Shorten URIs into CURIEs.
Definition: serd.h:273
serd_writer_free
void serd_writer_free(SerdWriter *writer)
Free writer.
serd_reader_set_default_graph
void serd_reader_set_default_graph(SerdReader *reader, const SerdNode *graph)
Set the URI of the default graph.
serd_writer_set_base_uri
SerdStatus serd_writer_set_base_uri(SerdWriter *writer, const SerdNode *uri)
Set the current output base URI (and emit directive if applicable).
SERD_ERR_BAD_SYNTAX
@ SERD_ERR_BAD_SYNTAX
Invalid syntax.
Definition: serd.h:91
serd_base64_decode
void * serd_base64_decode(const uint8_t *str, size_t len, size_t *size)
Decode a base64 string.
SerdError::fmt
const char * fmt
Message format string (printf style)
Definition: serd.h:241
SerdURI::authority
SerdChunk authority
Authority.
Definition: serd.h:254
SerdErrorSink
SerdStatus(* SerdErrorSink)(void *handle, const SerdError *error)
Sink (callback) for errors.
Definition: serd.h:606
serd_reader_free
void serd_reader_free(SerdReader *reader)
Free reader.
SerdError
An error description.
Definition: serd.h:236
SERD_SUCCESS
@ SERD_SUCCESS
No error.
Definition: serd.h:88
SerdPrefixSink
SerdStatus(* SerdPrefixSink)(void *handle, const SerdNode *name, const SerdNode *uri)
Sink (callback) for namespace definitions.
Definition: serd.h:622
serd_reader_read_file_handle
SerdStatus serd_reader_read_file_handle(SerdReader *reader, FILE *file, const uint8_t *name)
Read file.
serd_env_set_prefix
SerdStatus serd_env_set_prefix(SerdEnv *env, const SerdNode *name, const SerdNode *uri)
Set a namespace prefix.
serd_strerror
const uint8_t * serd_strerror(SerdStatus status)
Return a string describing a status code.
SerdNode
A syntactic RDF node.
Definition: serd.h:217
serd_node_new_file_uri
SerdNode serd_node_new_file_uri(const uint8_t *path, const uint8_t *hostname, SerdURI *out, bool escape)
Create a new file URI node from a file system path and optional hostname.
SERD_ANON_CONT
@ SERD_ANON_CONT
Continuation of anonymous node.
Definition: serd.h:136
serd_writer_end_anon
SerdStatus serd_writer_end_anon(SerdWriter *writer, const SerdNode *node)
Mark the end of an anonymous node's description.
SerdURI::fragment
SerdChunk fragment
Fragment.
Definition: serd.h:258
SerdURI::path
SerdChunk path
Path suffix.
Definition: serd.h:256
serd_uri_string_has_scheme
bool serd_uri_string_has_scheme(const uint8_t *utf8)
Return true iff utf8 starts with a valid URI scheme.
SerdType
SerdType
Type of a syntactic RDF node.
Definition: serd.h:156
SerdNodeFlags
uint32_t SerdNodeFlags
Bitwise OR of SerdNodeFlag values.
Definition: serd.h:212
serd_node_new_relative_uri
SerdNode serd_node_new_relative_uri(const SerdURI *uri, const SerdURI *base, const SerdURI *root, SerdURI *out)
Create a new node by serialising uri into a new relative URI.
SerdError::args
va_list * args
Arguments for fmt.
Definition: serd.h:242
SerdStatementSink
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.
Definition: serd.h:631
serd_node_free
void serd_node_free(SerdNode *node)
Free any data owned by node.
serd_reader_set_error_sink
void serd_reader_set_error_sink(SerdReader *reader, SerdErrorSink error_sink, void *error_handle)
Set a function to be called when errors occur during reading.
SerdEndSink
SerdStatus(* SerdEndSink)(void *handle, const SerdNode *node)
Sink (callback) for anonymous node end markers.
Definition: serd.h:647
SerdStatementFlags
uint32_t SerdStatementFlags
Bitwise OR of SerdNodeFlag values.
Definition: serd.h:145
serd_file_uri_parse
uint8_t * serd_file_uri_parse(const uint8_t *uri, uint8_t **hostname)
Get the unescaped path and hostname from a file URI.
SerdChunk
An unterminated string fragment.
Definition: serd.h:228
SERD_ERR_BAD_ARG
@ SERD_ERR_BAD_ARG
Invalid argument.
Definition: serd.h:92
SERD_LIST_O_BEGIN
@ SERD_LIST_O_BEGIN
Start of list object.
Definition: serd.h:138
serd_node_from_substring
SerdNode serd_node_from_substring(SerdType type, const uint8_t *str, size_t len)
Make a (shallow) node from a prefix of str.
SERD_URI
@ SERD_URI
URI (absolute or relative).
Definition: serd.h:179
serd_env_new
SerdEnv * serd_env_new(const SerdNode *base_uri)
Create a new environment.
serd_env_free
void serd_env_free(SerdEnv *env)
Free ns.
SERD_EMPTY_O
@ SERD_EMPTY_O
Empty blank node object.
Definition: serd.h:133
serd_chunk_sink
size_t serd_chunk_sink(const void *buf, size_t len, void *stream)
A convenience sink function for writing to a string.
SerdEnv
struct SerdEnvImpl SerdEnv
Environment.
Definition: serd.h:64
SERD_FAILURE
@ SERD_FAILURE
Non-fatal failure.
Definition: serd.h:89
SERD_LITERAL
@ SERD_LITERAL
Literal value.
Definition: serd.h:169
SERD_NQUADS
@ SERD_NQUADS
NQuads - Line-based RDF quads (UTF-8).
Definition: serd.h:119
serd_node_new_integer
SerdNode serd_node_new_integer(int64_t i)
Create a new node by serialising i into an xsd:integer string.
serd_writer_set_error_sink
void serd_writer_set_error_sink(SerdWriter *writer, SerdErrorSink error_sink, void *error_handle)
Set a function to be called when errors occur during writing.
SerdError::filename
const uint8_t * filename
File where error was encountered, or NULL.
Definition: serd.h:238
serd_writer_set_prefix
SerdStatus serd_writer_set_prefix(SerdWriter *writer, const SerdNode *name, const SerdNode *uri)
Set a namespace prefix (and emit directive if applicable).
SerdError::col
unsigned col
Column where error was encountered.
Definition: serd.h:240
SerdNode::flags
SerdNodeFlags flags
Node flags (e.g.
Definition: serd.h:221
serd_strlen
size_t serd_strlen(const uint8_t *str, size_t *n_bytes, SerdNodeFlags *flags)
Measure a UTF-8 string.
SerdReader
struct SerdReaderImpl SerdReader
RDF reader.
Definition: serd.h:72
SERD_URI_NULL
static const SerdURI SERD_URI_NULL
Definition: serd.h:331
SerdSyntax
SerdSyntax
RDF syntax type.
Definition: serd.h:102
SERD_TRIG
@ SERD_TRIG
TRiG - Terse RDF quads (UTF-8).
Definition: serd.h:125
SerdNode::type
SerdType type
Node type.
Definition: serd.h:222
serd_uri_resolve
void serd_uri_resolve(const SerdURI *r, const SerdURI *base, SerdURI *t)
Set target t to reference r resolved against base.
serd_reader_start_stream
SerdStatus serd_reader_start_stream(SerdReader *reader, FILE *file, const uint8_t *name, bool bulk)
Start an incremental read from a file handle.
SerdNode::n_bytes
size_t n_bytes
Size in bytes (not including null)
Definition: serd.h:219
serd_uri_serialise_relative
size_t serd_uri_serialise_relative(const SerdURI *uri, const SerdURI *base, const SerdURI *root, SerdSink sink, void *stream)
Serialise uri relative to base with a series of calls to sink.
serd_reader_get_handle
void * serd_reader_get_handle(const SerdReader *reader)
Return the handle passed to serd_reader_new().
serd_env_foreach
void serd_env_foreach(const SerdEnv *env, SerdPrefixSink func, void *handle)
Call func for each prefix defined in env.
SERD_EMPTY_S
@ SERD_EMPTY_S
Empty blank node subject.
Definition: serd.h:132
serd_reader_read_chunk
SerdStatus serd_reader_read_chunk(SerdReader *reader)
Read a single "chunk" of data during an incremental read.
SerdSource
size_t(* SerdSource)(void *buf, size_t size, size_t nmemb, void *stream)
Source function for raw string input.
Definition: serd.h:402
serd_node_new_uri_from_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.
SerdStatementFlag
SerdStatementFlag
Flags indication inline abbreviation information for a statement.
Definition: serd.h:131
serd_reader_read_file
SerdStatus serd_reader_read_file(SerdReader *reader, const uint8_t *uri)
Read a file at a given uri.
serd_uri_to_path
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.
SerdNode::n_chars
size_t n_chars
Length in characters (not including null)
Definition: serd.h:220
SerdError::line
unsigned line
Line where error was encountered, or 0.
Definition: serd.h:239
SerdWriter
struct SerdWriterImpl SerdWriter
RDF writer.
Definition: serd.h:82
serd_env_expand
SerdStatus serd_env_expand(const SerdEnv *env, const SerdNode *curie, SerdChunk *uri_prefix, SerdChunk *uri_suffix)
Expand curie.
serd_chunk_sink_finish
uint8_t * serd_chunk_sink_finish(SerdChunk *stream)
Finish a serialisation to a chunk with serd_chunk_sink().
serd_env_qualify
bool serd_env_qualify(const SerdEnv *env, const SerdNode *uri, SerdNode *prefix, SerdChunk *suffix)
Qualify uri into a CURIE if possible.
SERD_ERR_UNKNOWN
@ SERD_ERR_UNKNOWN
Unknown error.
Definition: serd.h:90
serd_writer_new
SerdWriter * serd_writer_new(SerdSyntax syntax, SerdStyle style, SerdEnv *env, const SerdURI *base_uri, SerdSink ssink, void *stream)
Create a new RDF writer.
SERD_LIST_CONT
@ SERD_LIST_CONT
Continuation of list.
Definition: serd.h:139
SERD_STYLE_RESOLVED
@ SERD_STYLE_RESOLVED
Resolve URIs against base URI.
Definition: serd.h:272
serd_writer_get_env
SerdEnv * serd_writer_get_env(SerdWriter *writer)
Return the env used by writer.
serd_writer_set_root_uri
SerdStatus serd_writer_set_root_uri(SerdWriter *writer, const SerdNode *uri)
Set the current root URI.
SERD_NTRIPLES
@ SERD_NTRIPLES
NTriples - Line-based RDF triples (ASCII).
Definition: serd.h:113
serd_reader_start_source_stream
SerdStatus serd_reader_start_source_stream(SerdReader *reader, SerdSource read_func, SerdStreamErrorFunc error_func, void *stream, const uint8_t *name, size_t page_size)
Start an incremental read from a user-specified source.
SerdStreamErrorFunc
int(* SerdStreamErrorFunc)(void *stream)
Function to detect I/O stream errors.
Definition: serd.h:388
serd_node_new_uri
SerdNode serd_node_new_uri(const SerdURI *uri, const SerdURI *base, SerdURI *out)
Create a new node by serialising uri into a new string.
serd_node_new_decimal
SerdNode serd_node_new_decimal(double d, unsigned frac_digits)
Create a new node by serialising d into an xsd:decimal string.
SERD_HAS_QUOTE
@ SERD_HAS_QUOTE
Contains quotes ('"')
Definition: serd.h:206
SERD_ERR_NOT_FOUND
@ SERD_ERR_NOT_FOUND
Not found.
Definition: serd.h:93
SerdURI::query
SerdChunk query
Query.
Definition: serd.h:257
serd_env_set_prefix_from_strings
SerdStatus serd_env_set_prefix_from_strings(SerdEnv *env, const uint8_t *name, const uint8_t *uri)
Set a namespace prefix.
serd_node_equals
bool serd_node_equals(const SerdNode *a, const SerdNode *b)
Return true iff a is equal to b.
serd_writer_chop_blank_prefix
void serd_writer_chop_blank_prefix(SerdWriter *writer, const uint8_t *prefix)
Set a prefix to be removed from matching blank node identifiers.
SERD_ERR_ID_CLASH
@ SERD_ERR_ID_CLASH
Encountered clashing blank node IDs.
Definition: serd.h:94
SERD_HAS_NEWLINE
@ SERD_HAS_NEWLINE
Contains line breaks ('\n' or '\r')
Definition: serd.h:205
SerdNodeFlag
SerdNodeFlag
Flags indicating certain string properties relevant to serialisation.
Definition: serd.h:204
SERD_ANON_S_BEGIN
@ SERD_ANON_S_BEGIN
Start of anonymous subject.
Definition: serd.h:134
serd_strtod
double serd_strtod(const char *str, char **endptr)
Parse a string to a double.
serd_uri_parse
SerdStatus serd_uri_parse(const uint8_t *utf8, SerdURI *out)
Parse utf8, writing result to out.
SERD_BLANK
@ SERD_BLANK
A blank node.
Definition: serd.h:198
SERD_CURIE
@ SERD_CURIE
CURIE, a shortened URI.
Definition: serd.h:188
serd_node_copy
SerdNode serd_node_copy(const SerdNode *node)
Make a deep copy of node.
serd_env_expand_node
SerdNode serd_env_expand_node(const SerdEnv *env, const SerdNode *node)
Expand node, which must be a CURIE or URI, to a full URI.
SerdSink
size_t(* SerdSink)(const void *buf, size_t len, void *stream)
Sink function for raw string output.
Definition: serd.h:410
serd_reader_read_source
SerdStatus serd_reader_read_source(SerdReader *reader, SerdSource source, SerdStreamErrorFunc error, void *stream, const uint8_t *name, size_t page_size)
Read a user-specified byte source.
SerdStyle
SerdStyle
Syntax style options.
Definition: serd.h:269
SERD_NOTHING
@ SERD_NOTHING
The type of a nonexistent node.
Definition: serd.h:162
serd_node_new_blob
SerdNode serd_node_new_blob(const void *buf, size_t size, bool wrap_lines)
Create a node by serialising buf into an xsd:base64Binary string.
serd_uri_serialise
size_t serd_uri_serialise(const SerdURI *uri, SerdSink sink, void *stream)
Serialise uri with a series of calls to sink.
SerdNode::buf
const uint8_t * buf
Value string.
Definition: serd.h:218
SerdBaseSink
SerdStatus(* SerdBaseSink)(void *handle, const SerdNode *uri)
Sink (callback) for base URI changes.
Definition: serd.h:614
serd_node_new_uri_from_string
SerdNode serd_node_new_uri_from_string(const uint8_t *str, const SerdURI *base, SerdURI *out)
Simple wrapper for serd_node_new_uri() to resolve a URI string.
SERD_ERR_INTERNAL
@ SERD_ERR_INTERNAL
Unexpected internal error (should not happen)
Definition: serd.h:96
SerdURI::scheme
SerdChunk scheme
Scheme.
Definition: serd.h:253
serd_reader_set_strict
void serd_reader_set_strict(SerdReader *reader, bool strict)
Enable or disable strict parsing.
serd_reader_read_string
SerdStatus serd_reader_read_string(SerdReader *reader, const uint8_t *utf8)
Read utf8.
SERD_TURTLE
@ SERD_TURTLE
Turtle - Terse RDF Triple Language (UTF-8).
Definition: serd.h:107
serd_reader_end_stream
SerdStatus serd_reader_end_stream(SerdReader *reader)
Finish an incremental read from a file handle.
SERD_ANON_O_BEGIN
@ SERD_ANON_O_BEGIN
Start of anonymous object.
Definition: serd.h:135
serd_env_get_base_uri
const SerdNode * serd_env_get_base_uri(const SerdEnv *env, SerdURI *out)
Get the current base URI.
SerdStatus
SerdStatus
Return status code.
Definition: serd.h:87
SerdChunk::buf
const uint8_t * buf
Start of chunk.
Definition: serd.h:229
SerdError::status
SerdStatus status
Error code.
Definition: serd.h:237
serd_node_from_string
SerdNode serd_node_from_string(SerdType type, const uint8_t *str)
Make a (shallow) node from str.
SERD_LIST_S_BEGIN
@ SERD_LIST_S_BEGIN
Start of list subject.
Definition: serd.h:137
serd_reader_add_blank_prefix
void serd_reader_add_blank_prefix(SerdReader *reader, const uint8_t *prefix)
Set a prefix to be added to all blank node identifiers.
SERD_STYLE_ABBREVIATED
@ SERD_STYLE_ABBREVIATED
Abbreviate triples when possible.
Definition: serd.h:270
serd_file_sink
size_t serd_file_sink(const void *buf, size_t len, void *stream)
A convenience sink function for writing to a FILE*.
serd_writer_finish
SerdStatus serd_writer_finish(SerdWriter *writer)
Finish a write.
SERD_STYLE_BULK
@ SERD_STYLE_BULK
Write output in pages.
Definition: serd.h:274