Changeset 357

Show
Ignore:
Timestamp:
03/17/09 17:44:45 (10 years ago)
Author:
samuraraujo
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Explorator/trunk/vendor/plugins/active_rdf/lib/active_rdf/queryengine/query2sparql.rb

    r272 r357  
    1515       
    1616      str << "SELECT #{distinct}#{select_clauses.join(' ')} " 
    17       str << "WHERE { #{where_clauses(query)} #{optional_clauses(query)} #{filter_clauses(query)} #{keywords_clauses(query)}} " 
     17      str << "WHERE { #{where_clauses(query)} #{optional_clauses(query)} #{filter_clauses(query)} #{keywords_clauses(query,engine)}} " 
    1818      str << "ORDER BY #{query.sort_clauses} " unless query.sort_clauses.empty? 
    1919      str << "LIMIT #{query.limits} " if query.limits 
     
    3737        o=o.to_sym() 
    3838      end 
    39  
     39       
    4040      # does there where clause use a context ?  
    4141      if c.nil?          
     
    4444        where = where + " FILTER(str(?#{o}) = '#{object}')  " unless object == nil 
    4545        where = where + " } " 
    46       
     46         
    4747        where 
    4848      else 
     
    5757  end 
    5858  #build keywords 
    59   def self.keywords_clauses(query) 
     59  def self.keywords_clauses(query,engine=nil) 
    6060    if query.keyword?            
    6161      filters= Array.new 
    6262      query.keywords.each do |term, keyword| 
    63         filters << "regex(str(?#{term}),'#{keyword}','i')"         
     63        if engine == :virtuoso 
     64          filters << "bif:contains (?#{term}, '\"#{keyword}\"')"     
     65        else 
     66          filters << "regex(str(?#{term}),'#{keyword}','i')"         
     67        end            
    6468      end       
    6569      filters = " FILTER (#{filters.join(" || ")})" unless filters.empty?      
    66      filters  
     70      filters  
    6771    end  
    6872  end 
    6973  # concatenate each where clause using space (e.g. 's p o') 
    7074  # and concatenate the clauses using dot, e.g. 's p o . s2 p2 o2 .' 
    71    def self.where_clauses(query)    
     75  def self.where_clauses(query)    
    7276    object = nil 
    7377    count = 0