class Krikri::Engine

Krikri provides metadata aggregation and enhancement services.

Public Instance Methods

configure_blacklight!() click to toggle source
# File lib/krikri/engine.rb, line 24
def configure_blacklight!
  return unless File.exist?(Blacklight.solr_file)
  krikri_solr = Krikri::Settings.solr
  Blacklight.solr_config = Blacklight.solr_config.merge(krikri_solr) unless
    krikri_solr.nil?
end
dpla_id() click to toggle source

@return [String, nil] returns only the final portion of the URI (the

"local name"), with the `#base_uri` removed. `nil` if this is a node

@raise NamespaceError

# File lib/krikri/engine.rb, line 149
def dpla_id
  return nil if node?
  raise NamespaceError, rdf_subject unless id.start_with?(base_uri)

  id.gsub("#{base_uri}/", '')
end
krikri.helpers() click to toggle source

Allow the methods in Krikri::ApplicatoinHelper to be accessible by the host application.

# File lib/krikri/engine.rb, line 192
initializer 'krikri.helpers' do |app|
  ActionView::Base.send :include, Krikri::ApplicationHelper
end
local_name_from_original_record() click to toggle source
# File lib/krikri/engine.rb, line 158
def local_name_from_original_record
  return nil if originalRecord.empty?
  raise "#{self} has more than one OriginalRecord, cannot source a " \
  "definitive identifier." unless originalRecord.length == 1
  originalRecord.first.rdf_subject.path.split('/').last.split('.').first
end
mint_id!(seed = nil) click to toggle source
# File lib/krikri/engine.rb, line 105
def mint_id!(seed = nil)
  set_subject!(mint_id_fragment(seed))
  update_source_resource_subject
end
mint_id_fragment(seed = nil) click to toggle source
# File lib/krikri/engine.rb, line 165
def mint_id_fragment(seed = nil)
  return seed if seed
  # We rely on originalRecord for consistent ID minting, so we have to
  # raise an exception if it's empty or is a blank node; for example,
  # if a mapping failed to map it.
  raise NameError, no_origrec_message if
    originalRecord.empty? || originalRecord.first.node?
  local_name_from_original_record
end
no_origrec_cond() click to toggle source
# File lib/krikri/engine.rb, line 179
def no_origrec_cond
  if originalRecord.empty?
    "has an empty originalRecord"
  else
    "has a blank node for its originalRecord"
  end
end
no_origrec_message() click to toggle source
# File lib/krikri/engine.rb, line 175
def no_origrec_message
  "#{dpla_id} #{no_origrec_cond}"
end
original_record() click to toggle source

Get the persisted original record for this Aggregation. @return [Krikri::OriginalRecord, nil]

@raise [NameError] when the original record is empty or is a blank

node.

@raise [Faraday::ConnectionError] when there is a connection problem

with Marmotta.
# File lib/krikri/engine.rb, line 137
def original_record
  raise NameError, no_origrec_message if
    originalRecord.empty? || originalRecord.first.node?
  Krikri::OriginalRecord.load(originalRecord.first.rdf_subject
    .to_s)
end
update_source_resource_subject() click to toggle source

Forceably update the subject for the dpla:SourceResource to use a fragment URI. This is necessary because of an issue in ActiveTriples.

@see github.com/ActiveTriples/ActiveTriples/issues/107

# File lib/krikri/engine.rb, line 116
def update_source_resource_subject
  unless sourceResource.empty?
    sr = get_values(RDF::EDM::aggregatedCHO).first
    orig = sourceResource_ids.first
    # Q: should we have a check like `orig.node?` here?
    sr.set_subject!(rdf_subject / '#sourceResource')
    sr.persist!
    update([self, RDF::EDM::aggregatedCHO, sr])
    delete([orig, nil, nil])
  end
end