Commit 6231a7a188b8972e16d98f4c00eca35c0f6b09ea

Authored by Victor Costa
2 parents 2cbe945b 8243971d

Merge branch 'virtuoso_integration' into stable

plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
@@ -18,15 +18,21 @@ class VirtuosoPlugin::TriplesManagement @@ -18,15 +18,21 @@ class VirtuosoPlugin::TriplesManagement
18 def update_triple(graph_uri, from_triple, to_triple) 18 def update_triple(graph_uri, from_triple, to_triple)
19 from_subject = from_triple[:subject] 19 from_subject = from_triple[:subject]
20 from_predicate = from_triple[:predicate] 20 from_predicate = from_triple[:predicate]
21 - from_object = from_triple[:object] 21 + from_object = format_triple_term(from_triple[:object])
22 22
23 to_subject = to_triple[:subject] 23 to_subject = to_triple[:subject]
24 to_predicate = to_triple[:predicate] 24 to_predicate = to_triple[:predicate]
25 - to_object = to_triple[:object] 25 + to_object = format_triple_term(to_triple[:object])
26 26
27 - query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> '#{from_object}' } INSERT { <#{to_subject}> <#{to_predicate}> '#{to_object}' }" 27 + query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> #{from_object} } INSERT { <#{to_subject}> <#{to_predicate}> #{to_object} }"
28 28
29 plugin.virtuoso_client.query(query) 29 plugin.virtuoso_client.query(query)
30 end 30 end
31 31
  32 + protected
  33 +
  34 + def format_triple_term(term)
  35 + term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'"
  36 + end
  37 +
32 end 38 end
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
@@ -8,8 +8,18 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article @@ -8,8 +8,18 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
8 _('Triples template') 8 _('Triples template')
9 end 9 end
10 10
  11 + def self.initial_template
  12 + '
  13 + {% for row in results %}
  14 + <div>
  15 + {{row}}
  16 + </div>
  17 + {% endfor %}
  18 + '
  19 + end
  20 +
11 settings_items :query, :type => :string 21 settings_items :query, :type => :string
12 - settings_items :template, :type => :string 22 + settings_items :template, :type => :string, :default => initial_template
13 settings_items :stylesheet, :type => :string 23 settings_items :stylesheet, :type => :string
14 24
15 attr_accessible :query, :template, :stylesheet 25 attr_accessible :query, :template, :stylesheet
@@ -28,7 +38,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article @@ -28,7 +38,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
28 def template_content 38 def template_content
29 begin 39 begin
30 results = plugin.virtuoso_client.query(query) 40 results = plugin.virtuoso_client.query(query)
31 - liquid_template = Liquid::Template.parse("{% for row in results %}#{template}{% endfor %}") 41 + liquid_template = Liquid::Template.parse(template)
32 page = liquid_template.render('results' => results) 42 page = liquid_template.render('results' => results)
33 transform_html(page) 43 transform_html(page)
34 rescue => ex 44 rescue => ex
plugins/virtuoso/test/unit/triples_template_test.rb
@@ -12,7 +12,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase @@ -12,7 +12,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
12 article.stubs(:plugin).returns(mock) 12 article.stubs(:plugin).returns(mock)
13 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) 13 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
14 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}]) 14 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}])
15 - article.template = "{{row.var}}" 15 + article.template = "{% for row in results %}{{row.var}}{% endfor %}"
16 16
17 assert_match /Hello World/, article.template_content 17 assert_match /Hello World/, article.template_content
18 end 18 end
@@ -21,7 +21,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase @@ -21,7 +21,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
21 article.stubs(:plugin).returns(mock) 21 article.stubs(:plugin).returns(mock)
22 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) 22 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
23 article.plugin.virtuoso_client.expects(:query).raises(RuntimeError.new) 23 article.plugin.virtuoso_client.expects(:query).raises(RuntimeError.new)
24 - article.template = "{{row.var}}" 24 + article.template = "{% for row in results %}{{row.var}}{% endfor %}"
25 25
26 assert_equal "Failed to process the template", article.template_content 26 assert_equal "Failed to process the template", article.template_content
27 end 27 end
@@ -30,7 +30,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase @@ -30,7 +30,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
30 article.stubs(:plugin).returns(mock) 30 article.stubs(:plugin).returns(mock)
31 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) 31 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
32 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}]) 32 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}])
33 - article.template = "<p>{{row.var}}</p>" 33 + article.template = "{% for row in results %}<p>{{row.var}}</p>{% endfor %}"
34 article.stylesheet = "p {color: red}" 34 article.stylesheet = "p {color: red}"
35 35
36 content = article.template_content 36 content = article.template_content