diff --git a/plugins/virtuoso/lib/virtuoso_plugin.rb b/plugins/virtuoso/lib/virtuoso_plugin.rb index 7b8e00d..0a1561c 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin.rb @@ -1,7 +1,5 @@ class VirtuosoPlugin < Noosfero::Plugin - @virtuosoServers - def self.plugin_name "Virtuoso integration" end @@ -30,6 +28,12 @@ class VirtuosoPlugin < Noosfero::Plugin true end + def self.ontology_mapping_default_setting + VirtuosoPlugin::DublinCoreMetadata::FIELDS.map do |field| + {:source => "dc:#{field}", :target => "http://purl.org/dc/elements/1.1/#{field}"} + end + end + protected def virtuoso_client_builder(uri, username, password) diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb index e159fbb..18edb93 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb @@ -24,10 +24,10 @@ class VirtuosoPlugin::DspaceHarvest metadata = VirtuosoPlugin::DublinCoreMetadata.new(record.metadata) puts "triplify #{record.header.identifier}" - DC_CONVERSION.each do |c| - values = [metadata.send(c)].flatten.compact + 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("http://purl.org/dc/elements/1.1/#{c}"), value]).graph(RDF::URI.new(@dspace_uri)) + query = RDF::Virtuoso::Query.insert_data([RDF::URI.new(metadata.identifier), RDF::URI.new(mapping[:target]), value]).graph(RDF::URI.new(@dspace_uri)) plugin.virtuoso_client.insert(query) end end @@ -53,16 +53,15 @@ class VirtuosoPlugin::DspaceHarvest settings.save! puts "ending harvest #{harvest_time}" end - + def self.harvest_all(environment, from_start) settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin) settings.dspace_servers.each do |k, v| harvest = VirtuosoPlugin::DspaceHarvest.new(environment, k[:dspace_uri]) harvest.start(from_start) - harvest.run - end - end - + end + end + def start(from_start = false) if find_job.empty? if from_start diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb b/plugins/virtuoso/lib/virtuoso_plugin/dublin_core_metadata.rb index f8990d4..62e85aa 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(&:text) + value.map { |v| v.respond_to?(:text) ? v.text : v} end end diff --git a/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb b/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb index eb35caf..9bda5e9 100644 --- a/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb +++ b/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb @@ -29,4 +29,8 @@ class VirtuosoPluginTest < ActiveSupport::TestCase plugin.virtuoso_readonly_client end + should 'has a default value for ontology mapping setting' do + assert plugin.settings.ontology_mapping + end + end -- libgit2 0.21.2