defmodule RTC do
@moduledoc """
RDF Triple Compounds.
This library provides the `RTC.Compound` struct for working with
RDF Triple Compounds.
See the [RTC spec](https://rtc-org.github.io/spec) for a general introduction into the
vocabulary and the idea behind it and the [guide on RTC.ex](https://rdf-elixir.dev/rtc-ex/)
for an introduction on working with this library.
"""
alias RDF.Resource.Generator
def id, do: Generator.generate(generator_config())
def id(args), do: Generator.generate(generator_config(), args)
defp generator_config do
Application.get_env(:rtc, :id, generator: RDF.BlankNode)
end
############################################################################
# These alias functions for the RTC.NS.RTC namespace are mandatory.
# Without them the property functions are inaccessible, since the namespace
# can't be aliased, because it gets in conflict with the root namespace
# of the project.
defdelegate elementOf(), to: RTC.NS.RTC
defdelegate elementOf(subject, objects), to: RTC.NS.RTC
defdelegate element_of(), to: RTC.NS.RTC
defdelegate element_of(subject, objects), to: RTC.NS.RTC
defdelegate elements(), to: RTC.NS.RTC
defdelegate elements(subject, objects), to: RTC.NS.RTC
defdelegate subCompoundOf(), to: RTC.NS.RTC
defdelegate subCompoundOf(subject, objects), to: RTC.NS.RTC
defdelegate sub_compound_of(), to: RTC.NS.RTC
defdelegate sub_compound_of(subject, objects), to: RTC.NS.RTC
end