diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb index 18edb93..7b7f7c8 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb @@ -22,12 +22,13 @@ class VirtuosoPlugin::DspaceHarvest def triplify(record) metadata = VirtuosoPlugin::DublinCoreMetadata.new(record.metadata) - puts "triplify #{record.header.identifier}" + subject_identifier = extract_identifier(record) + puts "triplify #{subject_identifier}" settings.ontology_mapping.each do |mapping| values = [metadata.extract_field(mapping[:source])].flatten.compact values.each do |value| - query = RDF::Virtuoso::Query.insert_data([RDF::URI.new(metadata.identifier), RDF::URI.new(mapping[:target]), value]).graph(RDF::URI.new(@dspace_uri)) + query = RDF::Virtuoso::Query.insert_data([RDF::URI.new(subject_identifier), RDF::URI.new(mapping[:target]), value]).graph(RDF::URI.new(@dspace_uri)) plugin.virtuoso_client.insert(query) end end @@ -85,4 +86,11 @@ class VirtuosoPlugin::DspaceHarvest end end + protected + + def extract_identifier(record) + parsed_identifier = /oai:(.+):(\d+\/\d+)/.match(record.header.identifier) + "#{@dspace_uri}/handle/#{parsed_identifier[2]}" + end + end diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb b/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb index 62e85aa..f8990d4 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb @@ -21,7 +21,7 @@ class VirtuosoPlugin::DublinCoreMetadata when 1 value.first.text else - value.map { |v| v.respond_to?(:text) ? v.text : v} + value.map(&:text) end end -- libgit2 0.21.2