RDF.ex v0.3.1 RDF.Description View Source
A set of RDF triples about the same subject.
RDF.Description implements:
- Elixirs
Accessbehaviour - Elixirs
Enumerableprotocol - Elixirs
Inspectprotocol - the
RDF.Dataprotocol
Link to this section Summary
Functions
Adds statements to a RDF.Description
Add objects to a predicate of a RDF.Description
Returns the number of statements of a RDF.Description
Deletes statements from a RDF.Description
Deletes statements from a RDF.Description
Deletes all statements with the given properties
Checks if a RDF.Description has the given resource as subject
Fetches the objects for the given predicate of a Description
Gets a single object for the given predicate of a Description
Gets the objects for the given predicate of a Description
Gets and updates the objects of the given predicate of a Description, in a single pass
Checks if the given statement exists within a RDF.Description
Creates a new RDF.Description about the given subject with optional initial statements
Creates a new RDF.Description about the given subject with optional initial statements
Creates a new RDF.Description about the given subject with optional initial statements
The set of all resources used in the objects within a RDF.Description
The set of all resources used in the objects within a RDF.Description satisfying the given filter criterion
Pops an arbitrary triple from a RDF.Description
Pops the objects of the given predicate of a Description
The set of all properties used in the predicates within a RDF.Description
Adds statements to a RDF.Description and overwrites all existing statements with already used predicates
Puts objects to a predicate of a RDF.Description, overwriting all existing objects
The set of all resources used within a RDF.Description
The list of all triples within a RDF.Description
Link to this section Types
Link to this section Functions
Adds statements to a RDF.Description.
Note: When the statements to be added are given as another RDF.Description,
the subject must not match subject of the description to which the statements
are added. As opposed to that RDF.Data.merge/2 will produce a RDF.Graph
containing both descriptions.
Add objects to a predicate of a RDF.Description.
Examples
iex> RDF.Description.add(RDF.Description.new({EX.S, EX.P1, EX.O1}), EX.P2, EX.O2)
RDF.Description.new([{EX.S, EX.P1, EX.O1}, {EX.S, EX.P2, EX.O2}])
iex> RDF.Description.add(RDF.Description.new({EX.S, EX.P, EX.O1}), EX.P, [EX.O2, EX.O3])
RDF.Description.new([{EX.S, EX.P, EX.O1}, {EX.S, EX.P, EX.O2}, {EX.S, EX.P, EX.O3}])
Returns the number of statements of a RDF.Description.
Deletes statements from a RDF.Description.
Note: When the statements to be deleted are given as another RDF.Description,
the subject must not match subject of the description from which the statements
are deleted. If you want to delete only a matching description subject, you can
use RDF.Data.delete/2.
Deletes statements from a RDF.Description.
Deletes all statements with the given properties.
Checks if a RDF.Description has the given resource as subject.
Examples
iex> RDF.Description.new(EX.S1, EX.p1, EX.O1) |> RDF.Description.describes?(EX.S1)
true
iex> RDF.Description.new(EX.S1, EX.p1, EX.O1) |> RDF.Description.describes?(EX.S2)
false
Fetches the objects for the given predicate of a Description.
When the predicate can not be found :error is returned.
Examples
iex> RDF.Description.fetch(RDF.Description.new({EX.S, EX.p, EX.O}), EX.p)
{:ok, [RDF.iri(EX.O)]}
iex> RDF.Description.fetch(RDF.Description.new([{EX.S, EX.P, EX.O1},
...> {EX.S, EX.P, EX.O2}]), EX.P)
{:ok, [RDF.iri(EX.O1), RDF.iri(EX.O2)]}
iex> RDF.Description.fetch(RDF.Description.new(EX.S), EX.foo)
:error
Gets a single object for the given predicate of a Description.
When the predicate can not be found, the optionally given default value or nil is returned.
Examples
iex> RDF.Description.first(RDF.Description.new({EX.S, EX.P, EX.O}), EX.P)
RDF.iri(EX.O)
iex> RDF.Description.first(RDF.Description.new(EX.S), EX.foo)
nil
Gets the objects for the given predicate of a Description.
When the predicate can not be found, the optionally given default value or nil is returned.
Examples
iex> RDF.Description.get(RDF.Description.new({EX.S, EX.P, EX.O}), EX.P)
[RDF.iri(EX.O)]
iex> RDF.Description.get(RDF.Description.new(EX.S), EX.foo)
nil
iex> RDF.Description.get(RDF.Description.new(EX.S), EX.foo, :bar)
:bar
Gets and updates the objects of the given predicate of a Description, in a single pass.
Invokes the passed function on the objects of the given predicate; this
function should return either {objects_to_return, new_object} or :pop.
If the passed function returns {objects_to_return, new_objects}, the return
value of get_and_update is {objects_to_return, new_description} where
new_description is the input Description updated with new_objects for
the given predicate.
If the passed function returns :pop the objects for the given predicate are
removed and a {removed_objects, new_description} tuple gets returned.
Examples
iex> RDF.Description.new({EX.S, EX.P, EX.O}) |>
...> RDF.Description.get_and_update(EX.P, fn current_objects ->
...> {current_objects, EX.NEW}
...> end)
{[RDF.iri(EX.O)], RDF.Description.new({EX.S, EX.P, EX.NEW})}
iex> RDF.Description.new([{EX.S, EX.P1, EX.O1}, {EX.S, EX.P2, EX.O2}]) |>
...> RDF.Description.get_and_update(EX.P1, fn _ -> :pop end)
{[RDF.iri(EX.O1)], RDF.Description.new({EX.S, EX.P2, EX.O2})}
Checks if the given statement exists within a RDF.Description.
Creates a new RDF.Description about the given subject with optional initial statements.
When given a list of statements, the first one must contain a subject.
Creates a new RDF.Description about the given subject with optional initial statements.
Creates a new RDF.Description about the given subject with optional initial statements.
The set of all resources used in the objects within a RDF.Description.
Note: This function does collect only IRIs and BlankNodes, not Literals.
Examples
iex> RDF.Description.new([
...> {EX.S1, EX.p1, EX.O1},
...> {EX.p2, EX.O2},
...> {EX.p3, EX.O2},
...> {EX.p4, RDF.bnode(:bnode)},
...> {EX.p3, "foo"}
...> ]) |> RDF.Description.objects
MapSet.new([RDF.iri(EX.O1), RDF.iri(EX.O2), RDF.bnode(:bnode)])
The set of all resources used in the objects within a RDF.Description satisfying the given filter criterion.
Pops an arbitrary triple from a RDF.Description.
Pops the objects of the given predicate of a Description.
When the predicate can not be found the optionally given default value or nil is returned.
Examples
iex> RDF.Description.pop(RDF.Description.new({EX.S, EX.P, EX.O}), EX.P)
{[RDF.iri(EX.O)], RDF.Description.new(EX.S)}
iex> RDF.Description.pop(RDF.Description.new({EX.S, EX.P, EX.O}), EX.Missing)
{nil, RDF.Description.new({EX.S, EX.P, EX.O})}
The set of all properties used in the predicates within a RDF.Description.
Examples
iex> RDF.Description.new([
...> {EX.S1, EX.p1, EX.O1},
...> {EX.p2, EX.O2},
...> {EX.p2, EX.O3}]) |>
...> RDF.Description.predicates
MapSet.new([EX.p1, EX.p2])
Adds statements to a RDF.Description and overwrites all existing statements with already used predicates.
Examples
iex> RDF.Description.put(RDF.Description.new({EX.S, EX.P, EX.O1}), {EX.P, EX.O2})
RDF.Description.new([{EX.S, EX.P, EX.O2}])
iex> RDF.Description.new({EX.S, EX.P1, EX.O1}) |>
...> RDF.Description.put([{EX.P2, EX.O2}, {EX.S, EX.P2, EX.O3}, {EX.P1, EX.O4}])
RDF.Description.new([{EX.S, EX.P1, EX.O4}, {EX.S, EX.P2, EX.O2}, {EX.S, EX.P2, EX.O3}])
iex> RDF.Description.new({EX.S, EX.P, EX.O1}) |>
...> RDF.Description.put(RDF.Description.new(EX.S, EX.P, [EX.O1, EX.O2]))
RDF.Description.new([{EX.S, EX.P, EX.O1}, {EX.S, EX.P, EX.O2}])
iex> RDF.Description.new([{EX.S, EX.P1, EX.O1}, {EX.S, EX.P2, EX.O2}]) |>
...> RDF.Description.put(%{EX.P2 => [EX.O3, EX.O4]})
RDF.Description.new([{EX.S, EX.P1, EX.O1}, {EX.S, EX.P2, EX.O3}, {EX.S, EX.P2, EX.O4}])
Puts objects to a predicate of a RDF.Description, overwriting all existing objects.
Examples
iex> RDF.Description.put(RDF.Description.new({EX.S, EX.P, EX.O1}), EX.P, EX.O2)
RDF.Description.new([{EX.S, EX.P, EX.O2}])
iex> RDF.Description.put(RDF.Description.new({EX.S, EX.P1, EX.O1}), EX.P2, EX.O2)
RDF.Description.new([{EX.S, EX.P1, EX.O1}, {EX.S, EX.P2, EX.O2}])
The set of all resources used within a RDF.Description.
Examples
iex> RDF.Description.new([
...> {EX.S1, EX.p1, EX.O1},
...> {EX.p2, EX.O2},
...> {EX.p1, EX.O2},
...> {EX.p2, RDF.bnode(:bnode)},
...> {EX.p3, "foo"}
...> ]) |> RDF.Description.resources
MapSet.new([RDF.iri(EX.O1), RDF.iri(EX.O2), RDF.bnode(:bnode), EX.p1, EX.p2, EX.p3])
The list of all triples within a RDF.Description.