View Source RDF.Star.Statement (RDF.ex v2.0.0)

Helper functions for RDF-star statements.

An RDF-star statement is either a RDF.Star.Triple or a RDF.Star.Quad.

Summary

Functions

Creates a RDF.Star.Statement tuple with proper RDF values.

Coerces the given value to a valid object of an RDF-star statement.

Coerces the given value to a valid subject of an RDF-star statement.

Creates a RDF.Star.Triple or RDF.Star.Quad with proper RDF values.

Checks if the given tuple is an RDF-star statement with a quoted triple on subject or object position.

Checks if the given tuple is a valid RDF-star statement, i.e. RDF-star triple or quad.

Types

Functions

Link to this function

coerce(statement, property_map \\ nil)

View Source
@spec coerce(coercible(), RDF.PropertyMap.t() | nil) ::
  RDF.Star.Triple.t() | RDF.Star.Quad.t()

Creates a RDF.Star.Statement tuple with proper RDF values.

An error is raised when the given elements are not coercible to RDF-star values.

Examples

iex> RDF.Star.Statement.coerce {"http://example.com/S", "http://example.com/p", 42}
{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}
iex> RDF.Star.Statement.coerce {"http://example.com/S", "http://example.com/p", 42, "http://example.com/Graph"}
{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42), ~I<http://example.com/Graph>}

See RDF.Statement.coerce_graph_name/1.

Link to this function

coerce_object(value, property_map \\ nil)

View Source
@spec coerce_object(coercible_object(), RDF.PropertyMap.t() | nil) :: object()

Coerces the given value to a valid object of an RDF-star statement.

Link to this function

coerce_predicate(predicate)

View Source

See RDF.Statement.coerce_predicate/1.

Link to this function

coerce_predicate(predicate, property_map)

View Source

See RDF.Statement.coerce_predicate/2.

Link to this function

coerce_subject(value, property_map \\ nil)

View Source
@spec coerce_subject(coercible_subject(), RDF.PropertyMap.t() | nil) :: subject()

Coerces the given value to a valid subject of an RDF-star statement.

Raises an RDF.Triple.InvalidSubjectError when the value can not be coerced.

Link to this function

new(tuple, property_map \\ nil)

View Source

Creates a RDF.Star.Triple or RDF.Star.Quad with proper RDF values.

An error is raised when the given elements are not coercible to RDF-star values.

Note: The RDF.statement function is a shortcut to this function.

Examples

iex> RDF.Star.Statement.new({EX.S, EX.p, 42})
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42)}

iex> RDF.Star.Statement.new({EX.S, EX.p, 42, EX.Graph})
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42), RDF.iri("http://example.com/Graph")}

iex> RDF.Star.Statement.new({EX.S, :p, 42, EX.Graph}, RDF.PropertyMap.new(p: EX.p))
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42), RDF.iri("http://example.com/Graph")}

See RDF.Star.Triple.new/3.

See RDF.Star.Quad.new/4.

@spec star_statement?(RDF.Star.Triple.t() | RDF.Star.Quad.t() | any()) :: boolean()

Checks if the given tuple is an RDF-star statement with a quoted triple on subject or object position.

Note: This function won't check if the given tuple or the quoted triple is valid. Use valid?/1 for this purpose.

Examples

iex> RDF.Star.Statement.star_statement?({EX.S, EX.P, EX.O})
false
iex> RDF.Star.Statement.star_statement?({EX.AS, EX.AP, {EX.S, EX.P, EX.O}})
true
iex> RDF.Star.Statement.star_statement?({{EX.S, EX.P, EX.O}, EX.AP, EX.AO})
true
@spec valid?(RDF.Star.Triple.t() | RDF.Star.Quad.t() | any()) :: boolean()

Checks if the given tuple is a valid RDF-star statement, i.e. RDF-star triple or quad.

The elements of a valid RDF-star statement must be RDF terms. On the subject position only IRIs, blank nodes and triples allowed, while on the predicate and graph context position only IRIs allowed. The object position can be any RDF term or a triple.

@spec valid_graph_name?(graph_name() | any()) :: boolean()
@spec valid_object?(object() | any()) :: boolean()
@spec valid_predicate?(predicate() | any()) :: boolean()
@spec valid_subject?(subject() | any()) :: boolean()