lib/sxp/reader/sparql.rb in sxp-0.0.11 vs lib/sxp/reader/sparql.rb in sxp-0.0.12
- old
+ new
@@ -6,10 +6,12 @@
#
# Requires [RDF.rb](http://rdf.rubyforge.org/).
#
# @see http://openjena.org/wiki/SSE
class SPARQL < Extended
+ FALSE = /^false$/i
+ TRUE = /^true$/i
EXPONENT = /[eE][+-]?[0-9]+/
DECIMAL = /^[+-]?(\d*)?\.\d*#{EXPONENT}?$/
BNODE_ID = /^_:([A-Za-z][A-Za-z0-9]*)/ # FIXME
BNODE_NEW = /^_:$/
VAR_ID = /^\?([A-Za-z][A-Za-z0-9]*)/ # FIXME
@@ -60,9 +62,11 @@
##
# @return [Object]
def read_atom
case buffer = read_literal
when '.' then buffer.to_sym
+ when FALSE then RDF::Literal(false)
+ when TRUE then RDF::Literal(true)
when DECIMAL then RDF::Literal(Float(buffer[-1].eql?(?.) ? buffer + '0' : buffer))
when INTEGER then RDF::Literal(Integer(buffer))
when BNODE_ID then RDF::Node($1)
when BNODE_NEW then RDF::Node.new
when VAR_ID then RDF::Query::Variable.new($1)