Module: Tripod::SparqlClient::Query
- Defined in:
- lib/tripod/sparql_client.rb
Class Method Summary collapse
- ._response_limit_options(response_limit_bytes) ⇒ Object
-
.query(sparql, accept_header, extra_params = {}, response_limit_bytes = :default) ⇒ RestClient::Response
Runs a
sparqlquery against the endpoint. -
.select(query) ⇒ Hash, String
Runs a SELECT
queryagainst the endpoint.
Class Method Details
._response_limit_options(response_limit_bytes) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/tripod/sparql_client.rb', line 59 def self.(response_limit_bytes) case response_limit_bytes when Integer {response_limit_bytes: response_limit_bytes} when :default {response_limit_bytes: Tripod.response_limit_bytes} when :no_response_limit {} end end |
.query(sparql, accept_header, extra_params = {}, response_limit_bytes = :default) ⇒ RestClient::Response
Runs a sparql query against the endpoint. Returns a RestClient response object.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/tripod/sparql_client.rb', line 17 def self.query(sparql, accept_header, extra_params={}, response_limit_bytes = :default) params = {:query => sparql}.merge(extra_params).to_query request_url = Tripod.query_endpoint streaming_opts = {:accept => accept_header, :timeout_seconds => Tripod.timeout_seconds} streaming_opts.merge!((response_limit_bytes)) if Tripod.response_limit_bytes # Hash.to_query from active support core extensions stream_data = -> { Tripod.logger.debug "TRIPOD: About to run query: #{sparql}" Tripod.logger.debug "TRIPOD: Streaming fron url: #{request_url}" Tripod.logger.debug "TRIPOD: Streaming opts: #{streaming_opts.inspect}" Tripod::Streaming.get_data(request_url, params, streaming_opts) } if Tripod.cache_store # if a cache store is configured Tripod.logger.debug "TRIPOD: caching is on!" # SHA-2 the key to keep the it within the small limit for many cache stores (e.g. Memcached is 250bytes) # Note: SHA2's are pretty certain to be unique http://en.wikipedia.org/wiki/SHA-2. cache_key = 'SPARQL-QUERY-' + Digest::SHA2.hexdigest([extra_params, accept_header, sparql].join("-")) Tripod.cache_store.fetch(cache_key, &stream_data) else Tripod.logger.debug "TRIPOD caching is off!" stream_data.call() end end |
.select(query) ⇒ Hash, String
Runs a SELECT query against the endpoint. Returns a Hash of the results.
Tripod::SparqlClient::Query.select(‘SELECT * WHERE ?p ?o’)
54 55 56 57 |
# File 'lib/tripod/sparql_client.rb', line 54 def self.select(query) query_response = self.query(query, "application/sparql-results+json") JSON.parse(query_response)["results"]["bindings"] end |