Changeset 432

Show
Ignore:
Timestamp:
05/21/09 15:30:18 (9 years ago)
Author:
samuraraujo
Message:
 
Location:
Explorator/trunk
Files:
17 modified

Legend:

Unmodified
Added
Removed
  • Explorator/trunk/app/controllers/application_controller.rb

    r410 r432  
    1717      session[:triples]=Hash.new 
    1818      session[:application] =  Application.new(request.session_options[:id]) 
     19      session[:query_retrieve_label_and_type]=$QUERY_RETRIEVE_LABEL_AND_TYPE 
     20      session[:label_properties]=$LABEL_PROPERTIES 
    1921    end 
    2022    Thread.current[:triples]=session[:triples] 
     
    2224    Thread.current[:disablerepositories]=session[:disablerepositories]     
    2325    Thread.current[:application]=session[:application] 
    24     Thread.current[:autodiscovery]=session[:autodiscovery]     
     26    Thread.current[:autodiscovery]=session[:autodiscovery]   
     27    Thread.current[:query_retrieve_label_and_type]=session[:query_retrieve_label_and_type] 
     28    Thread.current[:label_properties]=session[:label_properties] 
    2529  end   
    2630  #This was set to false for enable ajaxs request over post HTTP method. 
  • Explorator/trunk/app/controllers/explorator_controller.rb

    r423 r432  
    1616  #default rails method. returns the view index.rhtml. 
    1717  def index      
    18        
     18    
    1919  end 
    2020  
  • Explorator/trunk/app/controllers/repository_controller.rb

    r411 r432  
    1818     
    1919    session[:autodiscovery] = params[:flag]  
    20     
     20     
    2121    render :text => '' 
    2222  end 
    23  
     23  def queryRetrieveLabelAndType 
     24     
     25    if  params[:flag] =='true' 
     26      Thread.current[:query_retrieve_label_and_type]=session[:query_retrieve_label_and_type]=true 
     27      Thread.current[:label_properties]=session[:label_properties]=['rdfs::label'] 
     28    else 
     29      Thread.current[:query_retrieve_label_and_type]=session[:query_retrieve_label_and_type]=false 
     30      Thread.current[:label_properties]=session[:label_properties]=$LABEL_PROPERTIES 
     31    end 
     32  end 
     33   
    2434  def limit 
    2535    adapters = ConnectionPool.adapters() 
     
    3040        repository.limit=params[:limit].rstrip 
    3141        repository.limit=nil if repository.limit == 0 || repository.limit =='' 
    32           
     42         
    3343      end 
    3444    end        
     
    3949  def enable 
    4050    RDFS::Resource.reset_cache()  
    41  
     51     
    4252    session[:disablerepositories] << (params[:title])  
    4353    session[:disablerepositories].uniq! 
     
    5767    render :text => '',:layout => false 
    5868  end 
    59   
     69   
    6070  def add 
    6171    if params[:title]==nil || params[:title]  == '' 
     
    6575    begin 
    6676      adapter = ConnectionPool.add_data_source :title =>params[:title] , :type => :sparql, :url => params[:uri], :results => :sparql_xml, :caching =>true    
    67   
     77       
    6878      adapter.limit=params[:limit]  if params[:limit] != nil && params[:limit].rstrip != ''   
    6979      session[:addrepositories]<< adapter 
    7080      session[:disablerepositories] << (params[:title])  
    7181      session[:disablerepositories].uniq! 
    72   
     82       
    7383       
    7484    rescue Exception => e 
     
    8494    end 
    8595    begin  
    86   
     96       
    8797      # construct the necessary Ruby Modules and Classes to use the Namespace 
    8898      ObjectManager.construct_classes 
  • Explorator/trunk/app/helpers/render_helper.rb

    r347 r432  
    2121  end 
    2222  ##sorts the resources using render_resource label 
    23     
     23   
    2424  #Render a resource view.  
    2525  # The heuristic used is the following: 
     
    2828    return truncate(resource) if !(resource.instance_of? RDFS::Resource)      
    2929    #if a view was defined by the user.         
    30     if  resource.explorator::view != nil && !is_class(resource)   
     30     
     31    if $USE_EXPLORATOR_VIEW && resource.explorator::view != nil && !is_class(resource)   
    3132      resource.instance_eval(resource.explorator::view.to_s)           
    3233      #render the resource type's view. 
    33     elsif RDFS::Resource.new(resource.type[0].uri).explorator::view != nil  
     34    elsif $USE_EXPLORATOR_VIEW && RDFS::Resource.new(resource.type[0].uri).explorator::view != nil  
    3435      resource.instance_eval(RDFS::Resource.new(resource.type[0].uri).explorator::view)     
    3536      #render a default property: label, name, title, or the resource localname 
    36     else            
    37       if resource.rdfs::label != nil 
    38         truncate(resource.rdfs::label) 
    39       elsif resource.name != nil 
    40         truncate(resource.name ) 
    41       elsif resource.title != nil 
    42         truncate(resource.title)      
     37  else   
     38      session[:label_properties].each do |methodname|  
     39        #Do not use send here. 
     40        value = eval ("resource." + methodname) 
     41        if value != nil  
     42          return  truncate(value) 
     43        end 
     44      end       
     45      str = resource.uri.to_s.downcase 
     46      str = str[str.length-4,str.length] 
     47      if  str == '.jpg' || str =='.gif' || str =='.png' 
     48          '<img class = "image"   src ="' + resource.uri + '"/>' 
    4349      else 
    44         str = resource.uri.to_s.downcase 
    45         str = str[str.length-4,str.length] 
    46          if  str == '.jpg' || str =='.gif' || str =='.png' 
    47           '<img class = "image"   src ="' + resource.uri + '"/>' 
    48         else 
    49           truncate(resource.localname) 
    50         end         
    51       end 
     50        truncate(resource.localname) 
     51      end         
     52       
    5253    end     
    5354  end  
  • Explorator/trunk/app/views/explorator/_subject_view.rhtml

    r425 r432  
    9797   <br> 
    9898    <div class ="flickr_pagination"> 
    99         <%require "will_paginate" %> 
     99          
    100100        <div align= center> 
    101101            <%= will_paginate resources, :remote => {:update =>  uri(resourceset), :url =>{:action=>'reload',:uri=> uri(resourceset),:view=>'subject_view'}} %> 
  • Explorator/trunk/app/views/repository/index.rhtml

    r380 r432  
    66        &nbsp; 
    77    </div> 
    8         <h1>Auto-discovery endpoint</h1> 
    9   
    10              <input name="autodiscovery"  onchange="new Ajax.Request('/repository/autodiscovery?flag='+this.checked,{  method: 'get'} )" type="checkbox" <%= 'checked' if  session[:autodiscovery] == 'true'%> /> 
    11           <br> 
     8        <h1>Configurations</h1> 
     9        <center> 
     10  <table cellpadding=4 border="0"> 
     11        <tr   align=left bgcolor="#efefef" > 
     12          
     13              
     14            <td> 
     15               <input name="autodiscovery"  onchange="new Ajax.Request('/repository/autodiscovery?flag='+this.checked,{  method: 'get'} )" type="checkbox" <%= 'checked' if  session[:autodiscovery] == 'true'%> /> 
     16            </td> 
     17             <td nowrap> 
     18                Auto-discovery endpoint 
     19            </td> 
     20        </tr> 
     21                 <tr   align=left  > 
     22            
     23            <td> 
     24               <input name="queryRetrieveLabelAndType"  onchange="new Ajax.Request('/repository/queryRetrieveLabelAndType?flag='+this.checked,{  method: 'get'} )" type="checkbox" <%= 'checked' if  session[:query_retrieve_label_and_type] == true%> /> 
     25            </td> 
     26           <td nowrap> 
     27                Retrieve label and type on queries 
     28            </td> 
     29              
     30        </tr> 
     31                </table> 
     32             </center>  
    1233    <br> 
    1334         
  • Explorator/trunk/config/environment.rb

    r431 r432  
    5151WillPaginate::ViewHelpers.pagination_options[:previous_label] ='<' 
    5252WillPaginate::ViewHelpers.pagination_options[:next_label] = '>'  
    53 WillPaginate::ViewHelpers.pagination_options[:inner_window] = 2  
     53WillPaginate::ViewHelpers.pagination_options[:inner_window] = 2 
    5454 
    5555$WILL_PAGINATE_PER_PAGE=30  #number of resourcer per page 
     56#Setting this $QUERY_RETRIEVE_LABEL_AND_TYPE to true will force Explorator's queries to retrieve resources's label and type , of course, if they exist. 
     57#This increase the Explorator's response time because only 1 query will be executed at all.  
     58#If $QUERY_RETRIEVE_LABEL_AND_TYPE=false then Explorator will execute one query for each resource rendered on the interface. 
     59#We MUST set $LABEL_PROPERTIES as ['rdfs::label'], otherwise the heuristic above will not behave as described. 
     60$QUERY_RETRIEVE_LABEL_AND_TYPE=false 
     61 
     62#RENDER HEURISTIC CONFIGURATION 
     63# if $USE_EXPLORATOR_VIEW=true explorator's render will try to get the Resource'label from an expression defined in a property explorator:view 
     64$USE_EXPLORATOR_VIEW=false  
     65#The $LABEL_PROPERTIES is used to defined which properties Explorator should look for human readable label. The first one found will be used on the interface. 
     66#If you are using $QUERY_RETRIEVE_LABEL_AND_TYPE=true the you must set $LABEL_PROPERTIES=['rdfs::label'] 
     67$LABEL_PROPERTIES=['rdfs::label','name','title']  
     68#$LABEL_PROPERTIES=['rdfs::label'] 
     69  
  • Explorator/trunk/lib/query_builder.rb

    r416 r432  
    5858    p = resource_or_self(p,r).uniq 
    5959    o = resource_or_self(o,r).uniq 
    60      s.each do |x| 
     60    s.each do |x| 
    6161      p.each do |y| 
    6262        o.each do |z| 
    63 #          puts x.to_s + ' **** ' + y.to_s  + ' **** ' + z.to_s 
     63          #          puts x.to_s + ' **** ' + y.to_s  + ' **** ' + z.to_s 
    6464          result |= query(x,y,z,r) 
    6565        end         
     
    8787    } 
    8888    uri = RDFS::Resource.new(uri) 
    89      adapter.first().bridge.loaduri(uri.uri, false,'rdf');    
     89    adapter.first().bridge.loaduri(uri.uri, false,'rdf');    
    9090    adapter.first().reset_cache() 
    9191    @result = @result | Query.new.distinct(:s,:p,:o).where(:s,:p,:o,RDFS::Resource.new(uri)).execute 
     
    9797  end   
    9898  #Wrapper for the class ActiveRDF Query. This method executes a query and returns a set of resources. 
    99   #With parameter must be a single resource. 
    100   #  In the following situations we have to build the triples after query result. 
     99  #Each parameter must be a single resource. 
     100  #In the following situations we have to build the triples after query results. 
    101101  # 
    102102  #Two variables in the query  
     
    115115  def query (s,p,o,r=nil)        
    116116    q = Query.new 
    117     ask =false 
     117    ask = false 
    118118    variables = Array.new 
    119119    if r.to_s == :p.to_s        
     
    123123      q.distinct(:p)      if p.instance_of? Symbol 
    124124      q.distinct(:x,:y) 
    125       q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o))  .where(to_resource(p,:p),:x,:y) 
     125      q.distinct(:label,:type) if Thread.current[:query_retrieve_label_and_type] 
     126      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)).where(to_resource(p,:p),:x,:y) 
     127      q.optional(to_resource(p,:p),RDFS::label,:label).optional(to_resource(p,:p),RDF::type,:type) if Thread.current[:query_retrieve_label_and_type] 
    126128    elsif r.to_s == :o.to_s       
    127129      variables << :o if o.instance_of? Symbol 
    128130      variables << :x 
    129131      variables << :y  
    130       q.distinct(:o)      if o.instance_of? Symbol 
     132      q.distinct(:o) if o.instance_of? Symbol 
    131133      q.distinct(:x,:y) 
    132        
    133       q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o))  .where(to_resource(o,:o),:x,:y) 
     134      q.distinct(:label,:type) if Thread.current[:query_retrieve_label_and_type] 
     135      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)).where(to_resource(o,:o),:x,:y) 
     136      q.optional(to_resource(o,:o),RDFS::label,:label).optional(to_resource(o,:o),RDF::type,:type) if Thread.current[:query_retrieve_label_and_type] 
    134137    else      
    135138      variables << :s if s.instance_of? Symbol 
     
    139142        q.ask()  
    140143        ask =true 
    141          
    142144      else 
    143145        q.distinct(:s)  if s.instance_of? Symbol 
    144         q.distinct(:p)      if p.instance_of? Symbol 
    145         q.distinct(:o)      if o.instance_of? Symbol         
    146       end 
    147       q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o))   
     146        q.distinct(:p)  if p.instance_of? Symbol 
     147        q.distinct(:o)  if o.instance_of? Symbol         
     148        q.distinct(:label,:type) if Thread.current[:query_retrieve_label_and_type] 
     149      end 
     150      q.where(to_resource(s,:s),to_resource(p,:p),to_resource(o,:o)) 
     151      q.optional(to_resource(s,:s),RDFS::label,:label).optional(to_resource(s,:s),RDF::type,:type) if Thread.current[:query_retrieve_label_and_type] 
     152    end 
     153    if Thread.current[:query_retrieve_label_and_type] 
     154      variables << :label 
     155      variables << :type 
    148156    end 
    149157    values = q.execute   
     
    153161    idxp=variables.index(:p) 
    154162    idxo=variables.index(:o)  
     163     
     164    if Thread.current[:query_retrieve_label_and_type] 
     165      idxlabel=variables.index(:label) 
     166      idxtype=variables.index(:type) 
     167    end 
     168     
    155169    if r.to_s == :p.to_s        
    156170      idxs=variables.index(:p) 
     
    161175      idxp=variables.index(:x) 
    162176      idxo=variables.index(:y) 
    163        
    164        
    165     end 
     177    end  
     178     
     179    if Thread.current[:query_retrieve_label_and_type] 
     180      cache = Hash.new     
     181      c_label = RDFS::label 
     182      c_type = RDF::type 
     183    end 
     184     
    166185    values.each do |x| 
    167186      triple = Array.new        
    168187      triple << (idxs == nil ? to_resource(s,:s) : (x.instance_of?(Array) ? x[idxs] : x))  #subject 
    169188      triple << (idxp == nil ? to_resource(p,:p) : (x.instance_of?(Array) ? x[idxp] : x))  #predicate 
    170       triple << (idxo == nil ? to_resource(o,:o) : (x.instance_of?(Array) ? x[idxo] : x))  #object      
     189      triple << (idxo == nil ? to_resource(o,:o) : (x.instance_of?(Array) ? x[idxo] : x))  #object 
     190       
     191      if Thread.current[:query_retrieve_label_and_type] 
     192        c_uri = triple[0].uri 
     193        cache[c_uri]= Hash.new  if cache[c_uri] == nil 
     194         
     195        if x[idxlabel] != nil 
     196          cache[c_uri][c_label]= Array.new if cache[c_uri][c_label] == nil 
     197          cache[c_uri][c_label] << x[idxlabel] 
     198           
     199        end 
     200        if x[idxtype] != nil 
     201          cache[c_uri][c_type]= Array.new if cache[c_uri][c_type] == nil 
     202          cache[c_uri][c_type] << x[idxtype] 
     203        end 
     204      end 
     205       
    171206      triples << triple         
    172207       
    173208    end   if !ask 
     209     
     210    if Thread.current[:query_retrieve_label_and_type] 
     211      Thread.current[:label_type_cache] = cache   if  Thread.current[:label_type_cache] == nil  
     212      Thread.current[:label_type_cache].merge!(cache) 
     213    end 
    174214     
    175215    if ask && values.index('true') != nil 
     
    178218      triple <<  to_resource(p,:p)   
    179219      triple <<  to_resource(o,:o)   
    180       triples << triple         
    181        
     220      triples << triple    
    182221    end 
    183222     
     
    221260  #r - the position on the triple that should be returned. 
    222261  def union(s,p=nil,o=nil, r=nil)    
    223     
    224262    if s.instance_of? SemanticExpression  
    225263      @result = @result | s.result 
     
    229267    elsif Thread.current[:application].is_set?(s) 
    230268      #returns all set of resources 
    231      
    232269      if r != nil   && r!= :s 
    233270        @result = @result | SemanticExpression.new.spo(Thread.current[:application].get(s).elements.collect{|s,p,o| eval(r.to_s)}.uniq,:p,:o).result 
     
    235272        @result = @result | Thread.current[:application].get(s).elements 
    236273      end 
    237        
    238274      #Union method, passed as parameter a triple expression 
    239275    else 
    240        
    241276      @result = @result | query(s,p,o,r) 
    242277    end 
     
    297332    #@result = @result & tmp - The difference is between the subjects and it is not between triples. 
    298333    a = tmp.collect{|s,p,o| s} 
    299     @result = @result.collect { |s,p,o| [s,p,o] if !a.include?(s) }  
    300      
     334    @result = @result.collect { |s,p,o| [s,p,o] if !a.include?(s) }      
    301335    self 
    302336  end    
  • Explorator/trunk/public/stylesheets/pagination.css

    r430 r432  
    44    text-align: center; 
    55    font-size: 10px; 
    6     padding: .2em; 
     6    padding: .2em;  
     7         
    78} .flickr_pagination a, .flickr_pagination span { 
    89    padding: .1em .4em; 
     10          
    911} .flickr_pagination span.disabled { 
    1012    color: #AAA; 
     
    1618    color: #4f94cd; 
    1719    text-decoration: none; 
     20          
    1821} .flickr_pagination a:hover, .flickr_pagination a:focus { 
    1922    border-color: #003366; 
     
    2225} .flickr_pagination .page_info { 
    2326    color: #aaa; 
    24     padding-top: .7em; 
     27    padding-top: 0.7em; 
    2528} .flickr_pagination .prev_page, .flickr_pagination .next_page { 
    2629    border-width: 1px; 
  • Explorator/trunk/vendor/plugins/active_rdf/lib/active_rdf/objectmanager/resource.rb

    r417 r432  
    238238       
    239239      $activerdflog.debug "method_missing: #{method}" 
    240        
     240    
    241241       
    242242      # are we doing an update or not?  
     
    368368                        nil 
    369369                end 
    370  
    371370                # saves instance into datastore 
    372371                def save 
     
    376375                                db.add(self, rdftype, t) 
    377376                        end 
    378  
    379377                        Query.new.distinct(:p,:o).where(self, :p, :o).execute do |p, o| 
    380378                                db.add(self, p, o) 
     
    464462                def to_s 
    465463                        "<#{uri}>" 
    466                 end 
     464        end 
     465      
    467466 
    468467                def set_predicate(predicate, values)      
     
    474473    end 
    475474    def cache(flatten=false)              
    476       tuple = Hash.new        
    477       Thread.current[:triples][self.uri]=tuple       
    478       
    479       properties = Query.new.distinct(:p,:o).where(self, :p, :o).execute(:flatten => flatten)       
    480       
     475      tuple = Hash.new   
     476      Thread.current[:triples][self.uri]=tuple          
     477      properties = Query.new.distinct(:p,:o).where(self, :p, :o).execute(:flatten => flatten)     
     478     
    481479      properties.each do |p,o|           
    482480        tuple[p] = Array.new if tuple[p] == nil 
    483481        tuple[p] << o       
    484       end    if properties != nil   
    485         
     482      end    if properties != nil          
    486483    end  
    487484    def all_instance_predicates 
     485  
    488486       cache(true) if Thread.current[:triples][self.uri] == nil    
    489487       Thread.current[:triples][self.uri].keys 
     
    493491#      Thread.current[:triples][self.uri] 
    494492#    end 
    495     def get_predicate(predicate, flatten=false)         
    496        cache(flatten) if Thread.current[:triples][self.uri] == nil 
    497       #original code 
    498      # values = Query.new.distinct(:o).where(self, predicate, :o).execute(:flatten => flatten) 
     493    def get_predicate(predicate, flatten=false)      
     494       
     495      values = nil 
     496      if Thread.current[:query_retrieve_label_and_type] && Thread.current[:label_type_cache]  != nil && Thread.current[:label_type_cache][self.uri]!= nil &&  (predicate == RDFS::label || predicate == RDF::type ) 
     497           values = Thread.current[:label_type_cache][self.uri][predicate]!= nil && Thread.current[:label_type_cache][self.uri][predicate].size == 1 && flatten ?  Thread.current[:label_type_cache][self.uri][predicate].first : Thread.current[:label_type_cache][self.uri][predicate]           
     498      else  
     499      
     500       cache(flatten) if Thread.current[:triples][self.uri] == nil       
    499501       values  = Thread.current[:triples][self.uri][predicate]!= nil && Thread.current[:triples][self.uri][predicate].size == 1 && flatten ?  Thread.current[:triples][self.uri][predicate].first : Thread.current[:triples][self.uri][predicate] 
    500        
    501502       values = Array.new if values == nil && flatten==false 
    502       
     503        
     504      end 
    503505      # TODO: fix '<<' for Fixnum values etc (we cannot use values.instance_eval  
    504506      # because Fixnum cannot do instace_eval, they're not normal classes) 
     
    519521          end 
    520522        end 
    521       end 
    522  
     523      end  
    523524      values 
    524525    end 
  • Explorator/trunk/vendor/plugins/activerdf_sparql-1.3.6/lib/activerdf_sparql/sparql_sesame_api.rb

    r418 r432  
    6666    add_to_cache(qs, result) if @caching 
    6767    result = [] if result == "timeout" 
    68 #    puts @title 
    69 #    puts qs.to_s   
     68    puts @title 
     69    puts qs.to_s   
    7070    return result 
    7171  end