lib/sxp/reader/sparql.rb in sxp-0.0.6 vs lib/sxp/reader/sparql.rb in sxp-0.0.7

- old
+ new

@@ -8,12 +8,12 @@ # # @see http://openjena.org/wiki/SSE class SPARQL < Extended BNODE_ID = /^_:([A-Za-z][A-Za-z0-9]*)/.freeze # FIXME BNODE_NEW = /^_:$/.freeze - VARIABLE = /^\?([A-Za-z][A-Za-z0-9]*)/.freeze # FIXME - URIREF = /^<([^>]+)>/.freeze + VARIABLE = /^\?([A-Za-z][A-Za-z0-9]*)/.freeze # FIXME + URIREF = /^<([^>]+)>/.freeze ## # @return [Object] def read_token case peek_char @@ -34,31 +34,33 @@ when ?^ 2.times { skip_char } # '^^' {:datatype => read_rdf_uri} # TODO: support prefixed names else {} end - RDF::Literal.new(value, options) + RDF::Literal(value, options) end ## # @return [RDF::URI] def read_rdf_uri buffer = String.new skip_char # '<' + return :< if (char = peek_char).nil? || char !~ ATOM # FIXME: nasty special case for '< symbol until peek_char == ?> buffer << read_char # TODO: unescaping end skip_char # '>' - RDF::URI.new(buffer) + RDF::URI(buffer) end ## # @return [Object] def read_atom case buffer = read_literal when '.' then buffer.to_sym - when INTEGER then RDF::Literal.new(Integer(buffer)) - when BNODE_ID then RDF::Node.new($1) + when DECIMAL then RDF::Literal(Float(buffer)) + when INTEGER then RDF::Literal(Integer(buffer)) + when BNODE_ID then RDF::Node($1) when BNODE_NEW then RDF::Node.new when VARIABLE then RDF::Query::Variable.new($1) else buffer.to_sym end end