Sha256: 607330037d1b7b631d6ec58799a81f4eca79c48b3947ec6f61d7f3888f74b26e
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 KB
Contents
require 'active_rdf' # Translates abstract query into SPARQL that can be executed on SPARQL-compliant # data source. class Query2SPARQL def self.translate(query) str = "" if query.select? distinct = query.distinct? ? "DISTINCT " : "" select_clauses = query.select_clauses.collect{|s| construct_clause(s)} str << "SELECT #{distinct}#{select_clauses.join(' ')} " str << "WHERE { #{where_clauses(query)} }" elsif query.ask? str << "ASK { #{where_clauses(query)} }" end return str end # concatenate each where clause using space (e.g. 's p o') # and concatenate the clauses using dot, e.g. 's p o . s2 p2 o2 .' def self.where_clauses(query) where_clauses = query.where_clauses.collect do |s,p,o,c| # ignore context parameter [s,p,o].collect {|term| construct_clause(term) }.join(' ') end "#{where_clauses.join('. ')} ." end def self.construct_clause(term) if term.respond_to? :uri '<' + term.uri + '>' else case term when Symbol '?' + term.to_s else term.to_s end end end private_class_method :where_clauses, :construct_clause end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
activerdf-1.5 | lib/active_rdf/queryengine/query2sparql.rb |
activerdf-1.6.1 | lib/active_rdf/queryengine/query2sparql.rb |
activerdf-1.6 | lib/active_rdf/queryengine/query2sparql.rb |