RDF.Triple (RDF.ex v0.9.1) View Source
Helper functions for RDF triples.
A RDF Triple is represented as a plain Elixir tuple consisting of three valid RDF values for subject, predicate and object.
Link to this section Summary
Functions
Returns a triple where each element from a RDF.Triple
is mapped with the given function.
Creates a RDF.Triple
with proper RDF values.
Creates a RDF.Triple
with proper RDF values.
Checks if the given tuple is a valid RDF triple.
Returns a tuple of native Elixir values from a RDF.Triple
of RDF terms.
Link to this section Types
Specs
t() :: {RDF.Statement.subject(), RDF.Statement.predicate(), RDF.Statement.object()}
Specs
Link to this section Functions
Specs
map(t(), RDF.Statement.term_mapping()) :: t_values() | nil
Returns a triple where each element from a RDF.Triple
is mapped with the given function.
Returns nil
if one of the components of the given tuple is not convertible via RDF.Term.value/1
.
The function fun
will receive a tuple {statement_position, rdf_term}
where
statement_position
is one of the atoms :subject
, :predicate
or :object
,
while rdf_term
is the RDF term to be mapped. When the given function returns
nil
this will be interpreted as an error and will become the overhaul result
of the map/2
call.
Examples
iex> {~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
...> |> RDF.Triple.map(fn
...> {:object, object} -> RDF.Term.value(object)
...> {_, term} -> term |> to_string() |> String.last()
...> end)
{"S", "p", 42}
Specs
new(RDF.Statement.coercible_t(), RDF.PropertyMap.t() | nil) :: t()
Creates a RDF.Triple
with proper RDF values.
An error is raised when the given elements are not coercible to RDF values.
Note: The RDF.triple
function is a shortcut to this function.
Examples
iex> RDF.Triple.new {"http://example.com/S", "http://example.com/p", 42}
{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
iex> RDF.Triple.new {EX.S, EX.p, 42}
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}
iex> RDF.Triple.new {EX.S, EX.p, 42, EX.Graph}
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}
iex> RDF.Triple.new {EX.S, :p, 42}, RDF.PropertyMap.new(p: EX.p)
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}
Specs
new( RDF.Statement.coercible_subject(), RDF.Statement.coercible_predicate(), RDF.Statement.coercible_object(), RDF.PropertyMap.t() | nil ) :: t()
Creates a RDF.Triple
with proper RDF values.
An error is raised when the given elements are not coercible to RDF values.
Note: The RDF.triple
function is a shortcut to this function.
Examples
iex> RDF.Triple.new("http://example.com/S", "http://example.com/p", 42)
{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
iex> RDF.Triple.new(EX.S, EX.p, 42)
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}
iex> RDF.Triple.new(EX.S, :p, 42, RDF.PropertyMap.new(p: EX.p))
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}
Specs
Checks if the given tuple is a valid RDF triple.
The elements of a valid RDF triple must be RDF terms. On the subject position only IRIs and blank nodes allowed, while on the predicate position only IRIs allowed. The object position can be any RDF term.
Specs
Returns a tuple of native Elixir values from a RDF.Triple
of RDF terms.
When a :context
option is given with a RDF.PropertyMap
, predicates will
be mapped to the terms defined in the RDF.PropertyMap
, if present.
Returns nil
if one of the components of the given tuple is not convertible via RDF.Term.value/1
.
Examples
iex> RDF.Triple.values {~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
{"http://example.com/S", "http://example.com/p", 42}
iex> {~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
...> |> RDF.Triple.values(context: %{p: ~I<http://example.com/p>})
{"http://example.com/S", :p, 42}