This module implements the Turtle language for representing the RDF
triple model as defined by Dave Beckett from the Institute for Learning
and Research Technology University of Bristol in the document:
The Turtle format is designed as an RDF serialization that is easy to
read and write by both machines and humans. Due to the latter property,
this library goes a long way in trying to produce human-readable output.
In addition to the human-readable format, this library can write a
canonical representation of RDF graphs. The canonical representation
has the following properties:
- Equivalent graphs result in the same document. Graphs are
considered equivalent iff they contain the same set of
triples, regardless of the labeling of blank nodes in the
graph.
- Changes to the graph are diff-friendly. This means
- Prefixes are combined in the header and thus changes
to the namespaces only result in changes in the header.
- Blank nodes that are used only once (including collections)
are written in-line with the object they belong to.
- For other blank nodes we to realise stable labeling that
is based on property-values.
- To be done
- - Low-level string output takes 28% of the time. Move to C?
- rdf_save_turtle(+Out, :Options) is det
- Save an RDF graph as Turtle. Options processed are:
- a(+Boolean)
- If
true
(default), use a
for the predicate rdf:type
.
Otherwise use the full resource.
- align_prefixes(+Boolean)
- Nicely align the @prefix declarations
- base(+Base)
- Save relative to the given Base
- canonize_numbers(+Boolean)
- If
true
(default false
), emit numeric datatypes using
Prolog's write to achieve canonical output.
- comment(+Boolean)
- It
true
(default), write some informative comments
between the output segments
- encoding(+Encoding)
- Encoding used for the output stream. Default is UTF-8.
- expand(:Goal)
- Query an alternative graph-representation. See below.
- indent(+Column)
- Indentation for ; -lists. `0' does not indent, but
writes on the same line. Default is 8.
- graph(+Graph)
- Save only the named graph
- group(+Boolean)
- If
true
(default), using P-O and O-grouping.
- inline_bnodes(+Boolean)
- if
true
(default), inline bnodes that are used once.
- abbreviate_literals(+Boolean)
- if
true
(default), omit the type if allowed by turtle.
- only_known_prefixes(+Boolean)
- Only use prefix notation for known prefixes. Without, some
documents produce huge amounts of prefixes.
- prefixes(+List)
- If provided, uses exactly these prefixes. List is a list
of prefix specifications, where each specification is either
a term Prefix_-_URI or a prefix that is known to
rdf_current_prefix/2.
- silent(+Boolean)
- If
true
(default false
), do not print the final
informational message.
- single_line_bnodes(+Bool)
- If
true
(default false
), write [...] and (...) on a
single line.
- subject_white_lines(+Count)
- Extra white lines to insert between statements about a
different subject. Default is 1.
- tab_distance(+Tab)
- Distance between tab-stops. `0' forces the library to
use only spaces for layout. Default is 8.
- user_prefixes(+Boolean)
- If
true
(default), use prefixes from rdf_current_prefix/2.
The option expand
allows for serializing alternative graph
representations. It is called through call/5, where the first
argument is the expand-option, followed by S,P,O,G. G is the
graph-option (which is by default a variable). This notably
allows for writing RDF graphs represented as rdf(S,P,O)
using
the following code fragment:
triple_in(RDF, S,P,O,_G) :-
member(rdf(S,P,O), RDF).
...,
rdf_save_turtle(Out, [ expand(triple_in(RDF)) ]),
- Arguments:
-
Out | - is one of stream(Stream) , a stream handle, a file-URL
or an atom that denotes a filename. |
- rdf_save_canonical_turtle(+Spec, :Options) is det
- Save triples in a canonical format. This is the same as
rdf_save_turtle/2, but using different defaults. In particular:
encoding(utf8)
,
indent(0)
,
tab_distance(0)
,
subject_white_lines(1)
,
align_prefixes(false)
,
user_prefixes(false)
comment(false)
,
group(false)
,
single_line_bnodes(true)
- To be done
- - Work in progress. Notably blank-node handling is
incomplete.
- rdf_save_ntriples(+Spec, :Options) is det
- Save RDF using ntriples format. The ntriples format is a subset
of Turtle, writing each triple fully qualified on its own line.
- rdf_save_trig(+Spec, :Options) is det
- Save multiple RDF graphs into a TriG file. Options are the same
as for rdf_save_turtle/2. rdf_save_trig/2 ignores the
graph(+Graph)
option and instead processes one additional
option:
- graphs(+ListOfGraphs)
- List of graphs to save. When omitted, all graphs in the RDF
store are stored in the TriG file.
- rdf_save_canonical_trig(+Spec, :Options) is det
- Save triples in a canonical format. See
rdf_save_canonical_turtle/2 foir details.
- turtle_prefix(+OnlyKnown, +Where, +Prefix, +URI) is semidet
- Test whether we want to include the proposed prefix in the
@prefix declaration.