Changeset 448

Show
Ignore:
Timestamp:
05/29/09 20:56:10 (9 years ago)
Author:
samuraraujo
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Explorator/trunk/lib/query_builder.rb

    r440 r448  
    7878    else 
    7979      #not URI 
     80       
    8081      @result = @result | Query.new.distinct(:s,:p,:o).where(:s,:p,:o).keyword_where(:o,word).execute     
     82 
     83      
    8184    end   
    8285    self 
     
    113116  #No variable 
    114117  #In this case we have to execute a ASK statement instead the select 
    115   def query (s,p,o,r=nil)        
     118  def query (s,p,o,r=nil)   
     119     
    116120    q = Query.new 
    117121    ask = false 
     
    126130      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)).where(to_resource(p,:p),:x,:y) 
    127131      q.optional(to_resource(p,:p),RDFS::label,:label_s).optional(to_resource(p,:p),RDF::type,:type_s) if Thread.current[:query_retrieve_label_and_type] 
    128    #   q.optional(to_resource(x,:x),RDFS::label,:label_p).optional(to_resource(x,:x),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
    129 #      q.optional(to_resource(y,:y),RDFS::label,:label_o).optional(to_resource(y,:y),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
     132      #   q.optional(to_resource(x,:x),RDFS::label,:label_p).optional(to_resource(x,:x),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
     133      #      q.optional(to_resource(y,:y),RDFS::label,:label_o).optional(to_resource(y,:y),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
    130134    elsif r.to_s == :o.to_s       
    131135      variables << :o if o.instance_of? Symbol 
     
    137141      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)).where(to_resource(o,:o),:x,:y) 
    138142      q.optional(to_resource(o,:o),RDFS::label,:label_s).optional(to_resource(o,:o),RDF::type,:type_s) if Thread.current[:query_retrieve_label_and_type] 
    139     #  q.optional(to_resource(x,:x),RDFS::label,:label_p).optional(to_resource(x,:x),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
    140 #      q.optional(to_resource(y,:y),RDFS::label,:label_o).optional(to_resource(y,:y),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
     143      #  q.optional(to_resource(x,:x),RDFS::label,:label_p).optional(to_resource(x,:x),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
     144      #      q.optional(to_resource(y,:y),RDFS::label,:label_o).optional(to_resource(y,:y),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
    141145    else      
    142146      variables << :s if s.instance_of? Symbol 
     
    154158      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)) 
    155159      q.optional(to_resource(s,:s),RDFS::label,:label_s).optional(to_resource(s,:s),RDF::type,:type_s) if Thread.current[:query_retrieve_label_and_type] 
    156     #  q.optional(to_resource(p,:p),RDFS::label,:label_p).optional(to_resource(p,:p),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
    157 #      q.optional(to_resource(o,:o),RDFS::label,:label_o).optional(to_resource(o,:o),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
     160      #  q.optional(to_resource(p,:p),RDFS::label,:label_p).optional(to_resource(p,:p),RDF::type,:type_p) if Thread.current[:query_retrieve_label_and_type] 
     161      #      q.optional(to_resource(o,:o),RDFS::label,:label_o).optional(to_resource(o,:o),RDF::type,:type_o) if Thread.current[:query_retrieve_label_and_type]       
    158162    end 
    159163    if Thread.current[:query_retrieve_label_and_type] 
     
    190194    end 
    191195     
     196     
     197     
     198     
    192199    values.each do |x| 
     200       
     201       
    193202      triple = Array.new        
    194203      triple << (idxs == nil ? to_resource(s,:s) : (x.instance_of?(Array) ? x[idxs] : x))  #subject 
     
    196205      triple << (idxo == nil ? to_resource(o,:o) : (x.instance_of?(Array) ? x[idxo] : x))  #object 
    197206       
    198       if Thread.current[:query_retrieve_label_and_type] 
     207       
     208      if Thread.current[:query_retrieve_label_and_type]  
    199209         
    200210        uris =   [triple[0].uri]  
    201211        uris.each {|t| cache[t]= Hash.new  if cache[t] == nil}         
    202           
     212         
    203213        uris.each_index{|idx|  
    204          if x[idxs_label[idx]] != nil 
    205           cache[uris[idx]][c_label]= Array.new if cache[uris[idx]][c_label] == nil 
    206           cache[uris[idx]][c_label] << x[idxs_label[idx]] 
    207            
    208         end 
    209         if x[idxs_type[idx]] != nil 
    210           cache[uris[idx]][c_type]= Array.new if cache[uris[idx]][c_type] == nil 
    211           cache[uris[idx]][c_type] << x[idxs_type[idx]] 
    212         end 
     214          if x[idxs_label[idx]] != nil 
     215            cache[uris[idx]][c_label]= Array.new if cache[uris[idx]][c_label] == nil 
     216            cache[uris[idx]][c_label] << x[idxs_label[idx]] 
     217             
     218          end 
     219          if x[idxs_type[idx]] != nil 
     220            cache[uris[idx]][c_type]= Array.new if cache[uris[idx]][c_type] == nil 
     221            cache[uris[idx]][c_type] << x[idxs_type[idx]] 
     222          end 
    213223        } 
    214         
     224         
    215225      end 
    216226       
     
    232242    end 
    233243     
     244    
    234245    triples.uniq 
    235246  end 
     
    287298      @result = @result | query(s,p,o,r) 
    288299    end 
     300   
    289301    self 
    290302  end 
     
    314326    end 
    315327    #@result = @result & tmp - The intersection is between the subjects and it is not between triples. 
     328     
    316329    a = tmp.collect{|s,p,o| s} 
     330     
    317331    @result = @result.collect { |s,p,o| [s,p,o] if a.include?(s) }  
     332     
    318333    self 
    319334  end