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