Module: ActiveTriples::Repositories

Defined in:
lib/active_triples/repositories.rb

Overview

Defines module methods for registering an RDF::Repository for persistence of Resources.

This allows any triplestore (or other storage platform) with an RDF::Repository implementation to be used for persistence of resources that will be shared between ActiveFedora::Base objects.

Multiple repositories can be registered to keep different kinds of resources seperate. This is configurable on subclasses of Resource at the class level.

Examples:

registering a repository


ActiveTriples::Repositories.add_repository :defaulst, RDF::Repository.new

See Also:

Class Method Summary collapse

Class Method Details

.add_repository(name, repo) ⇒ RDF::Repository

Register a repository to be configured by name

Parameters:

  • name (Symbol)
  • repo (RDF::Repository)

Returns:

  • (RDF::Repository)

    gives the original repository on success

Raises:

  • (ArgumentError)

    raised if the repository is not an ‘RDF::Repository`



31
32
33
34
35
# File 'lib/active_triples/repositories.rb', line 31

def add_repository(name, repo)
  raise ArgumentError, "Repositories must be an RDF::Repository" unless 
    repo.kind_of? RDF::Repository
  repositories[name] = repo
end

.clear_repositories!Hash<Symbol, Repository>

Delete existing name, repository pairs from the registry hash

Returns:

  • (Hash<Symbol, Repository>)

    the now empty repository registry hash



42
43
44
# File 'lib/active_triples/repositories.rb', line 42

def clear_repositories!
  @repositories = {}
end

.has_subject?(rdf_subject, repo_name = nil) ⇒ Boolean

Check for the specified rdf_subject in the specified repository defaulting to search all registered repositories.

Parameters:

  • rdf_subject (String)
  • repository (Symbol)

    name

Returns:

  • (Boolean)

    true if the repository contains at least one statement with the given subject term



64
65
66
67
68
69
70
71
72
73
# File 'lib/active_triples/repositories.rb', line 64

def has_subject?(rdf_subject, repo_name=nil)
  search_repositories = [repositories[repo_name]] if repo_name
  search_repositories ||= repositories.values
  found = false
  search_repositories.each do |repo|
    found = repo.has_subject? rdf_subject
    break if found
  end
  found
end

.repositoriesHash<Symbol, Repository>

Returns a hash of currrently registered names and repositories.

Returns:

  • (Hash<Symbol, Repository>)

    a hash of currrently registered names and repositories



50
51
52
# File 'lib/active_triples/repositories.rb', line 50

def repositories
  @repositories ||= {}
end