lib/rdf/turtle/reader.rb in rdf-turtle-1.1.0p0 vs lib/rdf/turtle/reader.rb in rdf-turtle-1.1.0p1
- old
+ new
@@ -65,30 +65,30 @@
terminal(:STRING_LITERAL_SINGLE_QUOTE, STRING_LITERAL_SINGLE_QUOTE, :unescape => true) do |prod, token, input|
input[:string_value] = token.value[1..-2]
end
# String terminals
- terminal(nil, %r([\(\),.;\[\]a]|\^\^|@base|@prefix|true|false)) do |prod, token, input|
+ terminal(nil, %r([\(\),.;\[\]Aa]|\^\^|true|false)) do |prod, token, input|
case token.value
- when 'a' then input[:resource] = RDF.type
+ when 'A', 'a' then input[:resource] = RDF.type
when 'true', 'false' then input[:resource] = RDF::Literal::Boolean.new(token.value)
when '@base', '@prefix' then input[:lang] = token.value[1..-1]
else input[:string] = token.value
end
end
- terminal(:LANGTAG, LANGTAG) do |prod, token, input|
- input[:lang] = token.value[1..-1]
- end
-
- terminal(:SPARQL_PREFIX, SPARQL_PREFIX) do |prod, token, input|
+ terminal(:PREFIX, PREFIX) do |prod, token, input|
input[:string_value] = token.value.downcase
end
- terminal(:SPARQL_BASE, SPARQL_BASE) do |prod, token, input|
+ terminal(:BASE, BASE) do |prod, token, input|
input[:string_value] = token.value.downcase
end
+ terminal(:LANGTAG, LANGTAG) do |prod, token, input|
+ input[:lang] = token.value[1..-1]
+ end
+
# Productions
# [4] prefixID defines a prefix mapping
production(:prefixID) do |input, current, callback|
prefix = current[:prefix]
iri = current[:resource]
@@ -101,25 +101,10 @@
iri = current[:resource]
debug("base") {"Defined base as #{iri}"}
options[:base_uri] = iri
end
- # [28s] sparqlPrefix ::= [Pp][Rr][Ee][Ff][Ii][Xx] PNAME_NS IRIREF
- production(:sparqlPrefix) do |input, current, callback|
- prefix = current[:prefix]
- iri = current[:resource]
- debug("sparqlPrefix") {"Defined prefix #{prefix.inspect} mapping to #{iri.inspect}"}
- prefix(prefix, iri)
- end
-
- # [29s] sparqlBase ::= [Bb][Aa][Ss][Ee] IRIREF
- production(:sparqlBase) do |input, current, callback|
- iri = current[:resource]
- debug("base") {"Defined base as #{iri}"}
- options[:base_uri] = iri
- end
-
# [6] triples
start_production(:triples) do |input, current, callback|
# Note production as triples for blankNodePropertyList
# to set :subject instead of :resource
current[:triples] = true
@@ -174,23 +159,18 @@
current[:object_list] = []
end
production(:collection) do |input, current, callback|
# Create an RDF list
- bnode = self.bnode
objects = current[:object_list]
- list = RDF::List.new(bnode, nil, objects)
+ list = RDF::List[*objects]
list.each_statement do |statement|
- # Spec Confusion, referenced section "Collection" is missing from the spec.
- # Anicdodal evidence indicates that some expect each node to be of type rdf:list,
- # but existing Notation3 and Turtle tests (http://www.w3.org/2001/sw/DataAccess/df1/tests/manifest.ttl) do not.
next if statement.predicate == RDF.type && statement.object == RDF.List
callback.call(:statement, "collection", statement.subject, statement.predicate, statement.object)
end
- bnode = RDF.nil if list.empty?
# Return bnode as resource
- input[:resource] = bnode
+ input[:resource] = list.subject
end
# [16] RDFLiteral ::= String ( LanguageTag | ( "^^" IRIref ) )?
production(:RDFLiteral) do |input, current, callback|
opts = {}