Module: ActiveTriples::Configurable

Included in:
List
Defined in:
lib/active_triples/configurable.rb

Overview

Module to include configurable class-wide properties common to RDFSources.

Define properties at the class level with:

Available properties are base_uri, rdf_label, type, and repository

Examples:

configure base_uri: "http://oregondigital.org/resource/",
  repository: :default

Instance Method Summary collapse

Instance Method Details

#base_uriObject



22
23
24
# File 'lib/active_triples/configurable.rb', line 22

def base_uri
  configuration[:base_uri]
end

#configurationObject



34
35
36
# File 'lib/active_triples/configurable.rb', line 34

def configuration
  @configuration ||= Configuration.new
end

#configure(options = {}) ⇒ Object

API for configuring class properties on a RDFSource. This is an alternative to overriding the methods in this module.

Can configure the following values:

- base_uri (allows passing slugs to the RDFSource initializer
  in place of fully qualified URIs)
- rdf_label (overrides default label predicates)
- type (a default rdf:type to include when initializing a
  new RDFSource)
- repository (the target persist location to for the RDFSource)

Examples:

configure base_uri: "http://oregondigital.org/resource/", repository: :default

Parameters:

  • options (Hash) (defaults to: {})


58
59
60
61
62
63
64
65
66
# File 'lib/active_triples/configurable.rb', line 58

def configure(options = {})
  options = options.map do |key, value|
    if self.respond_to?("transform_#{key}")
      value = self.__send__("transform_#{key}", value)
    end
    [key, value]
  end
  @configuration = configuration.merge(options)
end

#inherited(child_class) ⇒ Object



17
18
19
20
# File 'lib/active_triples/configurable.rb', line 17

def inherited(child_class)
  child_class.configure type: self.type
  super
end

#rdf_labelObject



26
27
28
# File 'lib/active_triples/configurable.rb', line 26

def rdf_label
  configuration[:rdf_label]
end

#repositoryObject



38
39
40
# File 'lib/active_triples/configurable.rb', line 38

def repository
  configuration[:repository]
end

#transform_type(values) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/active_triples/configurable.rb', line 68

def transform_type(values)
  Array.wrap(values).map do |value|
    RDF::URI.intern(value).tap do |uri|
      RDFSource.type_registry[uri] = self
    end
  end
end

#typeObject



30
31
32
# File 'lib/active_triples/configurable.rb', line 30

def type
  configuration[:type]
end