A catalog of the data graphs within a DCATR.Repository.
Each repository contains exactly one such dataset as its primary data container,
modeled as a DCAT catalog of DCATR.DataGraphs. As the root DCATR.Directory
of the graph hierarchy, it can also contain nested DCATR.Directorys for
hierarchical organization.
Schema Mapping
This schema does not directly inherit from DCAT.Catalog in Grax to avoid
bloating the Elixir structs with all DCAT properties. Any DCAT metadata on a
dataset is still preserved in the __additional_statements__ field of the struct.
When needed, Grax schema mapping
allows accessing a dataset as a dcat:Catalog with all DCAT properties mapped
to struct fields via the DCAT.Catalog schema from DCAT.ex:
dataset = %DCATR.Dataset{
__id__: ~I<http://example.org/dataset1>,
__additional_statements__: %{
~I<http://purl.org/dc/terms/title> => %{
~L"My Dataset" => nil
}
}
}
catalog = DCAT.Catalog.from(dataset)
catalog.title
# => "My Dataset"
entity = PROV.Entity.from(dataset)
Summary
Functions
Returns all graphs through the entire sub-directory tree.
Returns all elements through the entire sub-directory tree.
Finds a graph by ID recursively through the sub-directory tree.
Returns a graph by ID or symbolic selector.
Checks if a graph exists in the container.
Returns all direct element members.
Types
Functions
@spec all_graphs(DCATR.Directory.Type.schema()) :: [DCATR.Graph.t()]
Returns all graphs through the entire sub-directory tree.
@spec all_members(DCATR.Directory.Type.schema()) :: [DCATR.Element.t()]
Returns all elements through the entire sub-directory tree.
@spec find_graph(DCATR.Directory.Type.schema(), RDF.IRI.coercible()) :: DCATR.Graph.t() | nil
Finds a graph by ID recursively through the sub-directory tree.
@spec from(Grax.Schema.t()) :: {:ok, t()} | {:error, any()}
@spec from!(Grax.Schema.t()) :: t()
@spec graph(DCATR.GraphResolver.container(), DCATR.GraphResolver.id_or_selector()) :: DCATR.Graph.t() | nil
Returns a graph by ID or symbolic selector.
Tries resolve_graph_selector/2 first. On :undefined, falls back to
find_graph/2 (from DCATR.Directory.Type) for ID-based lookup.
@spec has_graph?( DCATR.GraphResolver.container(), DCATR.GraphResolver.id_or_selector() ) :: boolean()
Checks if a graph exists in the container.
Convenience function based on graph/2 - returns true if the graph exists,
false otherwise.
@spec load( RDF.Graph.t() | RDF.Description.t(), RDF.IRI.coercible() | RDF.BlankNode.t(), opts :: keyword() ) :: {:ok, t()} | {:error, any()}
@spec load!( RDF.Graph.t() | RDF.Description.t(), RDF.IRI.coercible() | RDF.BlankNode.t(), opts :: keyword() ) :: t()
@spec members(DCATR.Directory.Type.schema()) :: [DCATR.Element.t()]
Returns all direct element members.