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

Helper functions for RDF-star quads.

An RDF-star quad is represented as a plain Elixir tuple consisting of four valid RDF values for subject, predicate, object and a graph name. As opposed to an RDF.Quad the subject or object can be a triple.

Summary

Functions

Creates a RDF.Star.Quad with proper RDF-star values.

Checks if the given tuple is a valid RDF quad.

Types

Functions

Link to this function

new(statement, property_map \\ nil)

View Source
@spec new(RDF.Star.Statement.coercible(), RDF.PropertyMap.t() | nil) :: t()

Creates a RDF.Star.Quad with proper RDF-star values.

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

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

Examples

iex> RDF.Star.Quad.new {"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>}

iex> RDF.Star.Quad.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.Quad.new {EX.S, EX.p, 42}
{RDF.iri("http://example.com/S"), RDF.iri("http://example.com/p"), RDF.literal(42), nil}

iex> RDF.Star.Quad.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")}

iex> RDF.Star.Quad.new({{EX.S, :p, 42}, :p2, 43, EX.Graph}, RDF.PropertyMap.new(p: EX.p, p2: EX.p2))
{{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}, ~I<http://example.com/p2>, RDF.literal(43), ~I<http://example.com/Graph>}
Link to this function

new(subject, predicate, object, graph_name, property_map \\ nil)

View Source

Creates a RDF.Star.Quad with proper RDF-star values.

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

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

Examples

iex> RDF.Star.Quad.new("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>}

iex> RDF.Star.Quad.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.Quad.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")}

iex> RDF.Star.Quad.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")}

iex> RDF.Star.Quad.new({EX.S, :p, 42}, :p2, 43, EX.Graph, RDF.PropertyMap.new(p: EX.p, p2: EX.p2))
{{~I<http://example.com/S>, ~I<http://example.com/p>, RDF.literal(42)}, ~I<http://example.com/p2>, RDF.literal(43), ~I<http://example.com/Graph>}
@spec valid?(t() | any()) :: boolean()

Checks if the given tuple is a valid RDF quad.

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