diff --git a/lib/rdf/blank_node.ex b/lib/rdf/blank_node.ex index 9326c7b..a40046a 100644 --- a/lib/rdf/blank_node.ex +++ b/lib/rdf/blank_node.ex @@ -1,13 +1,22 @@ defmodule RDF.BlankNode do @moduledoc """ + An RDF blank node, also known as an anonymous or unlabeled node. + + see + and """ defstruct [:id] @type t :: module - def new, do: %RDF.BlankNode{id: make_ref()} - def new(id) when is_atom(id) or is_binary(id) or is_integer(id), + def new, + do: new(make_ref()) + def new(id) when is_binary(id), do: %RDF.BlankNode{id: id} + def new(id) when is_reference(id), + do: id |> :erlang.ref_to_list |> to_string |> String.replace(~r/\<|\>/, "") |> new + def new(id) when is_atom(id) or is_integer(id), + do: id |> to_string |> new end