diff --git a/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb b/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
index af973af..eeae7ff 100644
--- a/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
+++ b/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
@@ -20,4 +20,31 @@ class VirtuosoPluginAdminController < AdminController
redirect_to :action => :index
end
+ def triple_management
+ triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
+ @triples = []
+ if request.post?
+ @query = params[:query]
+ @graph_uri = params[:graph_uri]
+ @triples = triples_management.search_triples(@graph_uri, @query)
+ end
+ render :action => 'triple_management'
+ end
+
+ def triple_update
+ graph_uri = params[:graph_uri]
+ triples = params[:triples]
+
+ triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
+
+ triples.each { |triple|
+ from_triple = triple[:from]
+ to_triple = triple[:to]
+ triples_management.update_triple(graph_uri, from_triple, to_triple)
+ }
+
+ session[:notice] = _('Triple(s) succesfully updated.')
+ redirect_to :action => :triple_management
+ end
+
end
diff --git a/plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb b/plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
new file mode 100644
index 0000000..5140c9c
--- /dev/null
+++ b/plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
@@ -0,0 +1,32 @@
+class VirtuosoPlugin::TriplesManagement
+
+ def initialize(environment)
+ @environment = environment
+ end
+
+ attr_reader :environment
+
+ def plugin
+ @plugin ||= VirtuosoPlugin.new(self)
+ end
+
+ def search_triples(graph_uri, query_sparql)
+ query = "WITH <#{graph_uri}> #{query_sparql}"
+ plugin.virtuoso_client.query(query)
+ end
+
+ def update_triple(graph_uri, from_triple, to_triple)
+ from_subject = from_triple[:subject]
+ from_predicate = from_triple[:predicate]
+ from_object = from_triple[:object]
+
+ to_subject = to_triple[:subject]
+ to_predicate = to_triple[:predicate]
+ to_object = to_triple[:object]
+
+ query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> '#{from_object}' } INSERT { <#{to_subject}> <#{to_predicate}> '#{to_object}' }"
+
+ plugin.virtuoso_client.query(query)
+ end
+
+end
diff --git a/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb b/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
index 6bc8e70..3386b68 100644
--- a/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
+++ b/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
@@ -23,7 +23,6 @@
<%= time_ago_as_sentence @settings.last_harvest %>
<% end %>
-