Sha256: d720a3f9d6f9d65e3a02825ac6d61d9effac3cb8dd9784443f299137fd3e2510

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

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

  def initialize
    @result = []
    @vars = []
    @current_type = nil
  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'
      RDFS::Resource.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

3 entries across 3 versions & 1 rubygems

Version Path
activerdf_sparql-1.3.5 lib/activerdf_sparql/sparql_result_parser.rb
activerdf_sparql-1.3.6 lib/activerdf_sparql/sparql_result_parser.rb
activerdf_sparql-1.3.4 lib/activerdf_sparql/sparql_result_parser.rb