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