【发布时间】:2016-07-02 13:44:16
【问题描述】:
我有一个处理一些 sparql 查询结果的小型 Rails 应用程序。
sparql 创建了一个包含 6859 个解决方案的解决方案集 @solutions_array。解决方案集属于 RDF::Query::Solutions 类,其中包含 RDF::Query::Solutions 类的 6859 个实例。每个 RDF::Query::Solution 包含两个变量,:unit 和:battle。根据文档,这些应该以 solution.unit 和 solution.battle 的形式提供。当我使用@solutions_array.first.unit 时,我得到了完全预期的结果。我的输出中破折号上方的所有内容都按预期工作。
发现的概念
类:类 RDF::Query::Solutions
计数:6859 类
第一个查询解决方案:
#URI:...resource/3rd_Guards_Infantry_Division_(German_Empire)>, :battle=>#})>
第一单元: ...resource/3rd_Guards_Infantry_Division_(German_Empire)
类:RDF::Query::Solution
检查:
#URI:...resource/3rd_Guards_Infantry_Division_(German_Empire)>, :battle=>#})>
类:RDF::Query::Solution
检查:
#URI:...resource/3rd_Guards_Infantry_Division_(German_Empire)>, :battle=>#})>
输出由以下几行产生:
<div class="span3 offset1">
<h2> Discovered Concepts </h2>
<P>Class: class <%= @solutions_array.class %> </p>
<P>Count: class <%= @solutions_array.count %> </p>
<p>First Query Solution: <%= @solutions_array.first.inspect %></p>
<p>First Unit: <%= @solutions_array.first.unit %></p>
<p>-------------------------------------------------</p>
<%= @solutions_array.each do |solution| %>
<p>Class: <%= solution.class %></p>
<p>Inspect: <%= solution.inspect %></p>
<% end %>
现在,当我在迭代解决方案时尝试访问我的变量时,{|solution| puts solution.battle } 抛出错误“方法未知”。当我使用 irb 尝试相同的操作时,我没有收到任何错误。我的代码如下所示(与上面相同,除了单个添加行<p>Unit: <%= solution.unit %></p>:
<div class="span3 offset1">
<h2> Discovered Concepts </h2>
<P>Class: class <%= @solutions_array.class %> </p>
<P>Count: class <%= @solutions_array.count %> </p>
<p>First Query Solution: <%= @solutions_array.first.inspect %></p>
<p>First Unit: <%= @solutions_array.first.unit %></p>
<p>-------------------------------------------------</p>
<%= @solutions_array.each do |solution| %>
<p>Class: <%= solution.class %></p>
<p>Inspect: <%= solution.inspect %></p>
<p>Unit: <%= solution.unit %></p>
<% end %>
运行此代码会导致:
> NoMethodError in Pages#extract
> Showing/.../app/views/pages/extract.html.erb where line #20 raised:
> undefined method `unit' for #<RDF::Query::Solutions:0x007fd17b17bca0>
> Extracted source (around line #20):
20 <p>Unit: <%= solution.unit %>
有趣的是,错误表明“单元”不是 RDF::Query::Solutions 类的方法......原则上是正确的,但 solution.inspect 表明我正在处理一个实例类 RDF::Query::Solution 的变量名应该可用...
我做错了什么?或者这是 RDF.rb 中的错误?
【问题讨论】:
标签: ruby-on-rails sparql rdf