Method: PublishMyData::CubeResults#loop_and_page_sparql_query

Defined in:
app/models/concerns/publish_my_data/cube_results.rb

#loop_and_page_sparql_query(sparql, page_size = 5000) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/concerns/publish_my_data/cube_results.rb', line 7

def loop_and_page_sparql_query(sparql, page_size=5000)
  results = []
  try_again = true
  page = 1
  while try_again
    page_start = Time.now
    # we need to paginate
    sparql_query = PublishMyData::SparqlQuery.new(sparql, {:request_format => :json} )
    sparql_query_result = JSON.parse(sparql_query.paginate(page, page_size).to_s)["results"]["bindings"]
    try_again = (sparql_query_result.length == page_size) # this page is full - keep going!
    page += 1
    results += sparql_query_result
    Rails.logger.debug(">>>> getting page of sparql took #{Time.now - page_start}s")
  end
  results
end