Sha256: aa9600401df8e6553a6d9fd908c4c623d1949358c859dc254d127ec6fda2d0f9

Contents?: true

Size: 1.22 KB

Versions: 6

Compression:

Stored size: 1.22 KB

Contents

# Parser for SPARQL XML result set.
class SparqlResultParser
  attr_reader :result

  # The resource_type is the class that 
  def initialize(resource_type)
    @result = []
    @vars = []
    @current_type = nil
    @resource_type = resource_type
  end
  
  def tag_start(name, attrs)
    case name
    when 'variable'
      @vars << attrs['name']
    when 'result'
      @current_result = []
    when 'binding'
      @index = @vars.index(attrs['name'])
    when 'bnode', 'literal', 'typed-literal', 'uri'
      @current_type = name
    end
  end
  
  def tag_end(name)
    if name == "result"
      @result << @current_result
    elsif name == 'bnode' || name == 'literal' || name == 'typed-literal' || name == 'uri'
      @current_type = nil
    elsif name == "sparql"
    end
  end
  
  def text(text)
    if !@current_type.nil?
      @current_result[@index] = create_node(@current_type, text)  
    end
  end

  # create ruby objects for each RDF node
  def create_node(type, value)
    case type
    when 'uri'
      @resource_type.new(value)
    when 'bnode'
      BNode.new(value)
    when 'literal','typed-literal'
      value.to_s
    end
  end
  
  def method_missing (*args)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
activerdf_net7-1.6.16 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb
activerdf_net7-1.6.15 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb
activerdf_net7-1.6.14 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb
activerdf_net7-1.6.13 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb
activerdf_net7-1.6.12 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb
activerdf_net7-1.6.11 activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb