5c7efe4cbd
Closes #1
51 lines
1.8 KiB
Elixir
51 lines
1.8 KiB
Elixir
defmodule RDF.Quad do
|
|
@moduledoc """
|
|
Helper functions for RDF quads.
|
|
|
|
A RDF Quad is represented as a plain Elixir tuple consisting of four valid
|
|
RDF values for subject, predicate, object and a graph context.
|
|
"""
|
|
|
|
alias RDF.Statement
|
|
|
|
@doc """
|
|
Creates a `RDF.Quad` with proper RDF values.
|
|
|
|
An error is raised when the given elements are not coercible to RDF values.
|
|
|
|
Note: The `RDF.quad` function is a shortcut to this function.
|
|
|
|
## Examples
|
|
|
|
iex> RDF.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.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")}
|
|
"""
|
|
def new(subject, predicate, object, graph_context) do
|
|
{
|
|
Statement.coerce_subject(subject),
|
|
Statement.coerce_predicate(predicate),
|
|
Statement.coerce_object(object),
|
|
Statement.coerce_graph_name(graph_context)
|
|
}
|
|
end
|
|
|
|
@doc """
|
|
Creates a `RDF.Quad` with proper RDF values.
|
|
|
|
An error is raised when the given elements are not coercible to RDF values.
|
|
|
|
Note: The `RDF.quad` function is a shortcut to this function.
|
|
|
|
## Examples
|
|
|
|
iex> RDF.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.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")}
|
|
"""
|
|
def new({subject, predicate, object, graph_context}),
|
|
do: new(subject, predicate, object, graph_context)
|
|
|
|
end
|