read and write RDF syntax
serdi is a fast command-line utility for streaming and
processing RDF data. It reads an RDF document and writes the data to stdout,
possibly transformed and/or in a different syntax. By default, the input
syntax is guessed from the file extension, and output is written in NTriples
serdi can be used to check for syntax
errors, convert from one syntax to another, pretty-print documents, or
transform URIs and blank node IDs.
The options are as follows:
- Write ASCII output. If this is enabled, all non-ASCII characters will be
escaped, even if the output syntax allows them to be written in
- Bulk output writing. If this is enabled, output will be written a page at
a time, rather than a byte at a time.
- Chop prefix from matching blank node IDs. This is
typically used to revert the effects of
example, with prefix “doc01”, the
_:doc01b42 will be emitted as
- Eat input one character at a time, rather than a page at a time which is
the default. This is useful when reading from a pipe since output will be
generated immediately as input arrives, rather than waiting until an
entire page of input has arrived. With this option serdi uses one page
less memory, but will likely be significantly slower.
- Fast and loose URI mode: preserve full URIs (without qualifying or making
relative), and pass prefixed names through as-is.
- Print the command line options.
- Read input as syntax. Case is ignored, valid values
are: “NQuads”, “NTriples”,
- Lax (non-strict) parsing. If this is enabled, recoverable syntax errors
will print a warning, but parsing will proceed starting at the next
statement if possible. Note that data may be lost when using this
- Write output as syntax. Case is ignored, valid
values are: “NQuads”, “NTriples”,
- Add prefix to blank node IDs. This can be used to
avoid clashes between blank node IDs in input documents. The effects can
be reversed in a later run with
-c. For example,
with prefix “doc01”, the blank node
_:b42 will be emitted as
- Suppress all output except data.
- Keep relative URIs within a root URI. This will
avoid creating any relative URI references with leading path segments like
../ that enter a parent of
For example, if /home/you/file.ttl is
written to the file /home/me/output.ttl using
the destination's base URI, then it could be written as
would prevent references from “escaping” like this, so the
above would instead be written as
<file:///home/you/file.ttl>, since it
can't be expressed relative to the root URI.
This is useful for keeping relative references within some
- Parse string input instead of a file (terminates
- Display version information and exit.
serdi exits with a status of 0, or non-zero if an error
- Pretty-print a document:
turtle file.ttl >
- Print any errors:
serdi file.ttl >