Commit 0a2b497f3eb552e8d17f7eb69e7bc9cf71d286f6

Authored by Francisco Júnior
1 parent 170a723e

virtuoso: add options for insert / remove triple individually

plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
... ... @@ -20,7 +20,7 @@ class VirtuosoPluginAdminController < AdminController
20 20 redirect_to :action => :index
21 21 end
22 22  
23   - def triple_management
  23 + def triples_management
24 24 triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
25 25 @triples = []
26 26 if request.post?
... ... @@ -45,4 +45,36 @@ class VirtuosoPluginAdminController < AdminController
45 45 redirect_to :action => :triple_management
46 46 end
47 47  
  48 + def add_triple
  49 + if request.post?
  50 +
  51 + triple = VirtuosoPlugin::Triple.new
  52 + triple.graph = params[:triple][:graph]
  53 + triple.subject = params[:triple][:subject]
  54 + triple.predicate = params[:triple][:predicate]
  55 + triple.object = params[:triple][:object]
  56 +
  57 + triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
  58 + triples_management.add_triple(triple)
  59 +
  60 + @triples = []
  61 +
  62 + session[:notice] = _('Triple succesfully added.')
  63 + render :action => :triple_management
  64 + end
  65 + end
  66 +
  67 + def remove_triple
  68 + triple = VirtuosoPlugin::Triple.new
  69 + triple.graph = params[:triple][:graph]
  70 + triple.subject = params[:triple][:subject]
  71 + triple.predicate = params[:triple][:predicate]
  72 + triple.object = params[:triple][:object]
  73 +
  74 + triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
  75 + triples_management.remove_triple(triple)
  76 +
  77 + render json: { :ok => true, :message => _('Triple succesfully removed.') }
  78 + end
  79 +
48 80 end
... ...
plugins/virtuoso/lib/virtuoso_plugin/triple.rb 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +class VirtuosoPlugin::Triple
  2 +
  3 + attr_accessor :graph, :subject, :predicate, :object
  4 +
  5 + def object=(value)
  6 + @object = format_triple_term(value)
  7 + end
  8 +
  9 + protected
  10 +
  11 + def format_triple_term(term)
  12 + term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'"
  13 + end
  14 +
  15 +end
  16 +
... ...
plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
... ... @@ -29,6 +29,16 @@ class VirtuosoPlugin::TriplesManagement
29 29 plugin.virtuoso_client.query(query)
30 30 end
31 31  
  32 + def add_triple(triple)
  33 + query = "WITH <#{triple.graph}> INSERT { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }"
  34 + plugin.virtuoso_client.query(query)
  35 + end
  36 +
  37 + def remove_triple(triple)
  38 + query = "WITH <#{triple.graph}> DELETE { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }"
  39 + plugin.virtuoso_client.query(query)
  40 + end
  41 +
32 42 protected
33 43  
34 44 def format_triple_term(term)
... ...
plugins/virtuoso/public/style.css
... ... @@ -25,3 +25,7 @@
25 25 margin-top: 20px;
26 26 padding-top: 15px;
27 27 }
  28 +
  29 +#virtuoso-triples-management #triples-list .triple-actions {
  30 + text-align: right;
  31 +}
... ...
plugins/virtuoso/public/triples_management.js 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +function remove_triple(triple_id) {
  2 + graph = jQuery("input#graph_uri").val();
  3 + subject = jQuery("input#triples_triple" + triple_id + "_from_subject").val();
  4 + predicate = jQuery("input#triples_triple" + triple_id + "_from_predicate").val();
  5 + object = jQuery("input#triples_triple" + triple_id + "_from_object").val();
  6 +
  7 + var formData = { triple: { graph: graph, subject: subject, predicate: predicate, object: object } }
  8 +
  9 + jQuery.ajax({
  10 + cache: false,
  11 + type: 'POST',
  12 + url: '/admin/plugin/virtuoso/remove_triple',
  13 + data: formData,
  14 + dataType: 'json',
  15 + success: function(data, status, ajax){
  16 + if ( !data.ok ) {
  17 + display_notice(data.error.message);
  18 + }
  19 + else {
  20 + display_notice(data.message);
  21 + jQuery("li#triple-" + triple_id).fadeOut(700, function() {
  22 + if (jQuery("ul#triples-list > li").length == 1) {
  23 + jQuery("form#form-triples-edit").remove();
  24 + }
  25 + else {
  26 + jQuery("li#triple-" + triple_id).remove();
  27 + }
  28 + });
  29 + }
  30 + },
  31 + error: function(ajax, status, errorThrown) {
  32 + alert('Send request - HTTP '+status+': '+errorThrown);
  33 + }
  34 + });
  35 +
  36 + return false;
  37 +}
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/add_triple.html.erb 0 → 100644
... ... @@ -0,0 +1,27 @@
  1 +<div id="virtuoso-triples-management">
  2 + <h1><%= _('Virtuoso settings &raquo; Triples Management &raquo; Add Triple')%></h1>
  3 +
  4 + <%= form_tag('/admin/plugin/virtuoso/add_triple', :method => 'post') do %>
  5 +
  6 + <ul>
  7 + <li>
  8 + <%= labelled_form_field(_('Graph:'), text_field_tag('triple[graph]', '') ) %>
  9 + </li>
  10 + <li>
  11 + <%= labelled_form_field(_('Subject:'), text_field_tag('triple[subject]', '') ) %>
  12 + </li>
  13 + <li>
  14 + <%= labelled_form_field(_('Predicate:'), text_field_tag('triple[predicate]', '') ) %>
  15 + </li>
  16 + <li>
  17 + <%= labelled_form_field(_('Object:'), text_field_tag('triple[object]', '') ) %>
  18 + </li>
  19 + </ul>
  20 +
  21 + <% button_bar do %>
  22 + <%= submit_button(:save, _('Save')) %>
  23 + <% end %>
  24 +
  25 + <% end %>
  26 +
  27 +</div>
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
... ... @@ -39,7 +39,7 @@
39 39  
40 40 <div class="triple-management">
41 41 <div class="actions">
42   - <%= button :edit, _('Triple management'), :action => :triple_management %>
  42 + <%= button :edit, _('Triples management'), :action => :triples_management %>
43 43 <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %>
44 44 </div>
45 45 </div>
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/triple_management.html.erb
1 1 <div id="virtuoso-triples-management">
2 2 <h1><%= _('Virtuoso settings &raquo; Triples Management')%></h1>
3 3  
4   - <%= form_tag('/admin/plugin/virtuoso/triple_management', :method => 'post') do %>
5   - <%= labelled_form_field(_('Default Graph IRI:'), text_field_tag(:graph_uri, @graph_uri) ) %>
  4 + <%= form_tag('/admin/plugin/virtuoso/triples_management', :method => 'post') do %>
  5 + <%= labelled_form_field(_('Graph URI:'), text_field_tag(:graph_uri, @graph_uri) ) %>
6 6 <%= labelled_form_field(_('Query SPARQL:'), text_area_tag(:query, @query, :rows => 7)) %>
7 7 <% button_bar do %>
8   - <%= submit_button(:search, _('Search')) %>
  8 + <%= submit_button(:search, _('Search triples')) %>
  9 + <%= button :add, _('Add triple'), :action => :add_triple %>
9 10 <% end %>
10 11 <% end %>
11 12  
12 13 <% unless @triples.empty? %>
13 14  
14   - <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post') do %>
  15 + <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post', :id => 'form-triples-edit') do %>
15 16 <%= hidden_field_tag(:graph_uri, @graph_uri) %>
16 17  
17 18 <ul id="triples-list">
... ... @@ -20,7 +21,7 @@
20 21  
21 22 <% @triples.each { |triple| %>
22 23  
23   - <li>
  24 + <li id="triple-<%=triple_counter%>">
24 25 <ul class="triple">
25 26 <li>
26 27 <%= hidden_field_tag("triples[triple#{triple_counter}[from][subject]]", triple[:s].to_s) %>
... ... @@ -34,6 +35,9 @@
34 35 <%= hidden_field_tag("triples[triple#{triple_counter}[from][object]]", triple[:o].to_s) %>
35 36 <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %>
36 37 </li>
  38 + <li class="triple-actions">
  39 + <%= button :remove, _('Remove triple'), {}, :href => '#', :onclick => "remove_triple(#{triple_counter}); return false;" %>
  40 + </li>
37 41 </ul>
38 42 </li>
39 43  
... ... @@ -52,3 +56,5 @@
52 56 <% end %>
53 57  
54 58 </div>
  59 +
  60 +<%= javascript_include_tag '/plugins/virtuoso/triples_management.js' %>
... ...