rdf-turtle 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +5 -5
- data/VERSION +1 -1
- data/lib/ebnf.rb +620 -0
- data/lib/rdf/ll1/lexer.rb +4 -4
- data/lib/rdf/ll1/parser.rb +35 -19
- data/lib/rdf/ll1/scanner.rb +1 -1
- data/lib/rdf/turtle/format.rb +1 -1
- data/lib/rdf/turtle/meta.rb +718 -1232
- data/lib/rdf/turtle/reader.rb +74 -45
- data/lib/rdf/turtle/terminals.rb +60 -34
- data/lib/rdf/turtle/writer.rb +3 -3
- metadata +192 -69
data/lib/rdf/turtle/reader.rb
CHANGED
@@ -17,38 +17,31 @@ module RDF::Turtle
|
|
17
17
|
terminal(:BLANK_NODE_LABEL, BLANK_NODE_LABEL) do |reader, prod, token, input|
|
18
18
|
input[:resource] = reader.bnode(token.value[2..-1])
|
19
19
|
end
|
20
|
-
terminal(:
|
21
|
-
|
20
|
+
terminal(:IRIREF, IRIREF, :unescape => true) do |reader, prod, token, input|
|
21
|
+
begin
|
22
|
+
input[:resource] = reader.process_iri(token.value[1..-2])
|
23
|
+
rescue ArgumentError => e
|
24
|
+
raise RDF::ReaderError, e.message
|
25
|
+
end
|
22
26
|
end
|
23
27
|
terminal(:DOUBLE, DOUBLE) do |reader, prod, token, input|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
input[:resource] = reader.literal(
|
28
|
-
end
|
29
|
-
terminal(:DOUBLE_POSITIVE, DOUBLE_POSITIVE) do |reader, prod, token, input|
|
30
|
-
input[:resource] = reader.literal(token.value, :datatype => RDF::XSD.double)
|
28
|
+
# Note that a Turtle Double may begin with a '.[eE]', so tack on a leading
|
29
|
+
# zero if necessary
|
30
|
+
value = token.value.sub(/\.([eE])/, '.0\1')
|
31
|
+
input[:resource] = reader.literal(value, :datatype => RDF::XSD.double)
|
31
32
|
end
|
32
33
|
terminal(:DECIMAL, DECIMAL) do |reader, prod, token, input|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
terminal(:DECIMAL_POSITIVE, DECIMAL_POSITIVE) do |reader, prod, token, input|
|
39
|
-
input[:resource] = reader.literal(token.value, :datatype => RDF::XSD.decimal)
|
34
|
+
# Note that a Turtle Decimal may begin with a '.', so tack on a leading
|
35
|
+
# zero if necessary
|
36
|
+
value = token.value
|
37
|
+
value = "0#{token.value}" if token.value[0,1] == "."
|
38
|
+
input[:resource] = reader.literal(value, :datatype => RDF::XSD.decimal)
|
40
39
|
end
|
41
40
|
terminal(:INTEGER, INTEGER) do |reader, prod, token, input|
|
42
41
|
input[:resource] = reader.literal(token.value, :datatype => RDF::XSD.integer)
|
43
42
|
end
|
44
|
-
terminal(:INTEGER_NEGATIVE, INTEGER_NEGATIVE) do |reader, prod, token, input|
|
45
|
-
input[:resource] = reader.literal(token.value, :datatype => RDF::XSD.integer)
|
46
|
-
end
|
47
|
-
terminal(:INTEGER_POSITIVE, INTEGER_POSITIVE) do |reader, prod, token, input|
|
48
|
-
input[:resource] = reader.literal(token.value, :datatype => RDF::XSD.integer)
|
49
|
-
end
|
50
43
|
# Spec confusion: spec says : "Literals , prefixed names and IRIs may also contain escape sequences"
|
51
|
-
terminal(:PNAME_LN, PNAME_LN) do |reader, prod, token, input|
|
44
|
+
terminal(:PNAME_LN, PNAME_LN, :unescape => true) do |reader, prod, token, input|
|
52
45
|
prefix, suffix = token.value.split(":", 2)
|
53
46
|
input[:resource] = reader.pname(prefix, suffix)
|
54
47
|
end
|
@@ -58,37 +51,46 @@ module RDF::Turtle
|
|
58
51
|
|
59
52
|
# Two contexts, one when prefix is being defined, the other when being used
|
60
53
|
case prod
|
61
|
-
when :prefixID
|
54
|
+
when :prefixID, :sparqlPrefix
|
62
55
|
input[:prefix] = prefix
|
63
56
|
else
|
64
57
|
input[:resource] = reader.pname(prefix, '')
|
65
58
|
end
|
66
59
|
end
|
67
|
-
terminal(:
|
60
|
+
terminal(:STRING_LITERAL_LONG_SINGLE_QUOTE, STRING_LITERAL_LONG_SINGLE_QUOTE, :unescape => true) do |reader, prod, token, input|
|
68
61
|
input[:string_value] = token.value[3..-4]
|
69
62
|
end
|
70
|
-
terminal(:
|
63
|
+
terminal(:STRING_LITERAL_LONG_QUOTE, STRING_LITERAL_LONG_QUOTE, :unescape => true) do |reader, prod, token, input|
|
71
64
|
input[:string_value] = token.value[3..-4]
|
72
65
|
end
|
73
|
-
terminal(:
|
66
|
+
terminal(:STRING_LITERAL_QUOTE, STRING_LITERAL_QUOTE, :unescape => true) do |reader, prod, token, input|
|
74
67
|
input[:string_value] = token.value[1..-2]
|
75
68
|
end
|
76
|
-
terminal(:
|
69
|
+
terminal(:STRING_LITERAL_SINGLE_QUOTE, STRING_LITERAL_SINGLE_QUOTE, :unescape => true) do |reader, prod, token, input|
|
77
70
|
input[:string_value] = token.value[1..-2]
|
78
71
|
end
|
79
72
|
|
80
73
|
# String terminals
|
81
74
|
terminal(nil, %r([\(\),.;\[\]a]|\^\^|@base|@prefix|true|false)) do |reader, prod, token, input|
|
82
75
|
case token.value
|
83
|
-
when 'a'
|
84
|
-
when 'true', 'false'
|
85
|
-
|
76
|
+
when 'a' then input[:resource] = RDF.type
|
77
|
+
when 'true', 'false' then input[:resource] = RDF::Literal::Boolean.new(token.value)
|
78
|
+
when '@base', '@prefix' then input[:lang] = token.value[1..-1]
|
79
|
+
else input[:string] = token.value
|
86
80
|
end
|
87
81
|
end
|
82
|
+
|
88
83
|
terminal(:LANGTAG, LANGTAG) do |reader, prod, token, input|
|
89
84
|
input[:lang] = token.value[1..-1]
|
90
85
|
end
|
91
86
|
|
87
|
+
terminal(:SPARQL_PREFIX, SPARQL_PREFIX) do |reader, prod, token, input|
|
88
|
+
input[:string_value] = token.value.downcase
|
89
|
+
end
|
90
|
+
terminal(:SPARQL_BASE, SPARQL_BASE) do |reader, prod, token, input|
|
91
|
+
input[:string_value] = token.value.downcase
|
92
|
+
end
|
93
|
+
|
92
94
|
# Productions
|
93
95
|
|
94
96
|
# [4] prefixID defines a prefix mapping
|
@@ -108,6 +110,30 @@ module RDF::Turtle
|
|
108
110
|
reader.options[:base_uri] = iri
|
109
111
|
end
|
110
112
|
|
113
|
+
# [28s] sparqlPrefix ::= [Pp][Rr][Ee][Ff][Ii][Xx] PNAME_NS IRIREF
|
114
|
+
production(:sparqlPrefix) do |reader, phase, input, current, callback|
|
115
|
+
next unless phase == :finish
|
116
|
+
prefix = current[:prefix]
|
117
|
+
iri = current[:resource]
|
118
|
+
callback.call(:trace, "sparqlPrefix", lambda {"Defined prefix #{prefix.inspect} mapping to #{iri.inspect}"})
|
119
|
+
reader.prefix(prefix, iri)
|
120
|
+
end
|
121
|
+
|
122
|
+
# [29s] sparqlBase ::= [Bb][Aa][Ss][Ee] IRIREF
|
123
|
+
production(:sparqlBase) do |reader, phase, input, current, callback|
|
124
|
+
next unless phase == :finish
|
125
|
+
iri = current[:resource]
|
126
|
+
callback.call(:trace, ":sparqlBase", lambda {"Defined base as #{iri}"})
|
127
|
+
reader.options[:base_uri] = iri
|
128
|
+
end
|
129
|
+
|
130
|
+
# [6] triples
|
131
|
+
production(:triples) do |reader, phase, input, current, callback|
|
132
|
+
# Note production as triples for blankNodePropertyList
|
133
|
+
# to set :subject instead of :resource
|
134
|
+
current[:triples] = true
|
135
|
+
end
|
136
|
+
|
111
137
|
# [9] verb ::= predicate | "a"
|
112
138
|
production(:verb) do |reader, phase, input, current, callback|
|
113
139
|
input[:predicate] = current[:resource] if phase == :finish
|
@@ -115,10 +141,11 @@ module RDF::Turtle
|
|
115
141
|
|
116
142
|
# [10] subject ::= IRIref | blank
|
117
143
|
production(:subject) do |reader, phase, input, current, callback|
|
144
|
+
current[:triples] = nil if phase == :start
|
118
145
|
input[:subject] = current[:resource] if phase == :finish
|
119
146
|
end
|
120
147
|
|
121
|
-
# [12] object ::=
|
148
|
+
# [12] object ::= iri | blank | blankNodePropertyList | literal
|
122
149
|
production(:object) do |reader, phase, input, current, callback|
|
123
150
|
next unless phase == :finish
|
124
151
|
if input[:object_list]
|
@@ -134,6 +161,8 @@ module RDF::Turtle
|
|
134
161
|
production(:blankNodePropertyList) do |reader, phase, input, current, callback|
|
135
162
|
if phase == :start
|
136
163
|
current[:subject] = reader.bnode
|
164
|
+
elsif input[:triples]
|
165
|
+
input[:subject] = current[:subject]
|
137
166
|
else
|
138
167
|
input[:resource] = current[:subject]
|
139
168
|
end
|
@@ -162,7 +191,7 @@ module RDF::Turtle
|
|
162
191
|
end
|
163
192
|
end
|
164
193
|
|
165
|
-
# [
|
194
|
+
# [17] RDFLiteral ::= String ( LanguageTag | ( "^^" IRIref ) )?
|
166
195
|
production(:RDFLiteral) do |reader, phase, input, current, callback|
|
167
196
|
next unless phase == :finish
|
168
197
|
opts = {}
|
@@ -240,11 +269,11 @@ module RDF::Turtle
|
|
240
269
|
when :statement
|
241
270
|
add_statement(loc, RDF::Statement.from(data))
|
242
271
|
when :trace
|
243
|
-
debug(loc, *data)
|
272
|
+
debug(loc, *(data.dup << {:level => 0}))
|
244
273
|
end
|
245
274
|
end
|
246
275
|
rescue RDF::LL1::Parser::Error => e
|
247
|
-
|
276
|
+
progress("Parsing completed with errors:\n\t#{e.message}")
|
248
277
|
raise RDF::ReaderError, e.message if validate?
|
249
278
|
end
|
250
279
|
|
@@ -264,15 +293,13 @@ module RDF::Turtle
|
|
264
293
|
|
265
294
|
# add a statement, object can be literal or URI or bnode
|
266
295
|
#
|
267
|
-
# @param [Nokogiri::XML::Node, any] node
|
268
|
-
# @param [
|
269
|
-
# @
|
270
|
-
# @
|
271
|
-
# @return [Statement]:: Added statement
|
272
|
-
# @raise [RDF::ReaderError]:: Checks parameter types and raises if they are incorrect if parsing mode is _validate_.
|
296
|
+
# @param [Nokogiri::XML::Node, any] node XML Node or string for showing context
|
297
|
+
# @param [RDF::Statement] statement the subject of the statement
|
298
|
+
# @return [RDF::Statement] Added statement
|
299
|
+
# @raise [RDF::ReaderError] Checks parameter types and raises if they are incorrect if parsing mode is _validate_.
|
273
300
|
def add_statement(node, statement)
|
274
301
|
if statement.valid?
|
275
|
-
|
302
|
+
progress(node) {"generate statement: #{statement}"}
|
276
303
|
@callback.call(statement)
|
277
304
|
else
|
278
305
|
error(node, "Statement is invalid: #{statement.inspect}")
|
@@ -343,12 +370,14 @@ module RDF::Turtle
|
|
343
370
|
|
344
371
|
##
|
345
372
|
# Progress output when debugging
|
346
|
-
#
|
347
|
-
#
|
348
|
-
#
|
373
|
+
# param [String] node relative location in input
|
374
|
+
# param [String] message ("")
|
375
|
+
# yieldreturn [String] added to message
|
349
376
|
def debug(*args)
|
350
377
|
return unless @options[:debug] || RDF::Turtle.debug?
|
351
378
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
379
|
+
debug_level = options.fetch(:level, 1)
|
380
|
+
return unless debug_level <= DEBUG_LEVEL
|
352
381
|
depth = options[:depth] || self.depth
|
353
382
|
message = args.pop
|
354
383
|
message = message.call if message.is_a?(Proc)
|
data/lib/rdf/turtle/terminals.rb
CHANGED
@@ -14,7 +14,8 @@ module RDF::Turtle
|
|
14
14
|
[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u{10000}-\\u{EFFFF}]
|
15
15
|
EOS
|
16
16
|
U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]")
|
17
|
-
|
17
|
+
# [^<>\"{}|^`\\] - [#x00-#x20]
|
18
|
+
IRI_RANGE = Regexp.compile("[[^<>\"{}|^`\\\\]&&[^\\x00-\\x20]]")
|
18
19
|
else
|
19
20
|
##
|
20
21
|
# UTF-8 regular expressions for Ruby 1.8.x.
|
@@ -58,41 +59,66 @@ module RDF::Turtle
|
|
58
59
|
[\\x7e-\\xff]
|
59
60
|
EOS
|
60
61
|
end
|
61
|
-
UCHAR = RDF::LL1::Lexer::UCHAR
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
63
|
+
# [27]
|
64
|
+
UCHAR = RDF::LL1::Lexer::UCHAR
|
65
|
+
# [170s]
|
66
|
+
PERCENT = /%[0-9A-Fa-f]{2}/
|
67
|
+
# [172s]
|
68
|
+
PN_LOCAL_ESC = /\\[_~\.\-\!$\&'\(\)\*\+,;=:\/\?\#@%]/
|
69
|
+
# [169s]
|
70
|
+
PLX = /#{PERCENT}|#{PN_LOCAL_ESC}/
|
71
|
+
# [163s]
|
72
|
+
PN_CHARS_BASE = /[A-Z]|[a-z]|#{U_CHARS1}/
|
73
|
+
# [164s]
|
74
|
+
PN_CHARS_U = /_|#{PN_CHARS_BASE}/
|
75
|
+
# [166s]
|
76
|
+
PN_CHARS = /-|[0-9]|#{PN_CHARS_U}|#{U_CHARS2}/
|
77
|
+
PN_LOCAL_BODY = /(?:(?:\.|:|#{PN_CHARS}|#{PLX})*(?:#{PN_CHARS}|:|#{PLX}))?/
|
70
78
|
PN_CHARS_BODY = /(?:(?:\.|#{PN_CHARS})*#{PN_CHARS})?/
|
71
|
-
|
72
|
-
|
79
|
+
# [167s]
|
80
|
+
PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/
|
81
|
+
# [100s]
|
82
|
+
PN_LOCAL = /(?:[0-9]|:|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/
|
83
|
+
# [154s]
|
84
|
+
EXPONENT = /[eE][+-]?[0-9]+/
|
85
|
+
# [159s]
|
86
|
+
ECHAR = /\\[tbnrf\\"']/
|
87
|
+
# [19]
|
88
|
+
IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/
|
89
|
+
# [139s]
|
90
|
+
PNAME_NS = /#{PN_PREFIX}?:/
|
91
|
+
# [140s]
|
92
|
+
PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/
|
93
|
+
# [141s]
|
94
|
+
BLANK_NODE_LABEL = /_:(?:[0-9]|#{PN_CHARS_U})(#{PN_CHARS}|\.)*/
|
95
|
+
# [144s]
|
96
|
+
LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/
|
97
|
+
# [20]
|
98
|
+
INTEGER = /[+-]?[0-9]+/
|
99
|
+
# [21]
|
100
|
+
DECIMAL = /[+-]?(?:[0-9]*\.[0-9]+)/
|
101
|
+
# [22]
|
102
|
+
DOUBLE = /[+-]?(?:[0-9]+\.[0-9]*#{EXPONENT}|\.?[0-9]+#{EXPONENT})/
|
103
|
+
# [23]
|
104
|
+
STRING_LITERAL_QUOTE = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/
|
105
|
+
# [24]
|
106
|
+
STRING_LITERAL_SINGLE_QUOTE = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/
|
107
|
+
# [25]
|
108
|
+
STRING_LITERAL_LONG_SINGLE_QUOTE = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/m
|
109
|
+
# [26]
|
110
|
+
STRING_LITERAL_LONG_QUOTE = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/m
|
73
111
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
INTEGER = /[0-9]+/ # [77s]
|
86
|
-
INTEGER_NEGATIVE = /\-[0-9]+/ # [83s]
|
87
|
-
INTEGER_POSITIVE = /\+[0-9]+/ # [80s]
|
88
|
-
IRI_REF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/ # [70s]
|
89
|
-
LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/ # [76s]
|
90
|
-
PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/ # [99s]
|
91
|
-
PNAME_NS = /#{PN_PREFIX}?:/ # [71s]
|
92
|
-
PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/ # [72s]
|
93
|
-
STRING_LITERAL1 = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/ # [87s]
|
94
|
-
STRING_LITERAL2 = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/ # [88s]
|
95
|
-
STRING_LITERAL_LONG1 = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/m # [89s]
|
96
|
-
STRING_LITERAL_LONG2 = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/m # [90s]
|
112
|
+
# [161s]
|
113
|
+
WS = / |\t|\r|\n /
|
114
|
+
# [160s]
|
115
|
+
NIL = /\(#{WS}*\)/
|
116
|
+
# [162s]
|
117
|
+
ANON = /\[#{WS}*\]/
|
118
|
+
# [28t]
|
119
|
+
SPARQL_PREFIX = /prefix/i
|
120
|
+
# [29t]
|
121
|
+
SPARQL_BASE = /base/i
|
122
|
+
|
97
123
|
end
|
98
124
|
end
|
data/lib/rdf/turtle/writer.rb
CHANGED
@@ -243,7 +243,7 @@ module RDF::Turtle
|
|
243
243
|
##
|
244
244
|
# Returns the Turtle representation of a URI reference.
|
245
245
|
#
|
246
|
-
# @param [RDF::URI]
|
246
|
+
# @param [RDF::URI] uri
|
247
247
|
# @param [Hash{Symbol => Object}] options
|
248
248
|
# @return [String]
|
249
249
|
def format_uri(uri, options = {})
|
@@ -393,8 +393,8 @@ module RDF::Turtle
|
|
393
393
|
|
394
394
|
##
|
395
395
|
# Add debug event to debug array, if specified
|
396
|
-
#
|
397
|
-
#
|
396
|
+
# param [String] message ("")
|
397
|
+
# yieldreturn [String] added to message
|
398
398
|
def debug(*args)
|
399
399
|
return unless @options[:debug] || RDF::Turtle.debug?
|
400
400
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
metadata
CHANGED
@@ -1,115 +1,227 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-turtle
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Gregg Kellogg
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-11-06 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rdf
|
16
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
23
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 27
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 3
|
31
|
+
- 4
|
21
32
|
version: 0.3.4
|
22
33
|
type: :runtime
|
34
|
+
requirement: *id001
|
23
35
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
- !ruby/object:Gem::Dependency
|
26
37
|
name: open-uri-cached
|
27
|
-
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 23
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 0
|
47
|
+
- 4
|
32
48
|
version: 0.0.4
|
33
49
|
type: :development
|
50
|
+
requirement: *id002
|
34
51
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
52
|
+
- !ruby/object:Gem::Dependency
|
37
53
|
name: spira
|
38
|
-
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
39
55
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 7
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
- 0
|
63
|
+
- 12
|
43
64
|
version: 0.0.12
|
44
65
|
type: :development
|
66
|
+
requirement: *id003
|
45
67
|
prerelease: false
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
- !ruby/object:Gem::Dependency
|
48
69
|
name: rspec
|
49
|
-
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
71
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 47
|
76
|
+
segments:
|
77
|
+
- 2
|
78
|
+
- 8
|
79
|
+
- 0
|
54
80
|
version: 2.8.0
|
55
81
|
type: :development
|
82
|
+
requirement: *id004
|
56
83
|
prerelease: false
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
84
|
+
- !ruby/object:Gem::Dependency
|
59
85
|
name: rdf-isomorphic
|
60
|
-
|
86
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
61
87
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 27
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
- 3
|
95
|
+
- 4
|
65
96
|
version: 0.3.4
|
66
97
|
type: :development
|
98
|
+
requirement: *id005
|
67
99
|
prerelease: false
|
68
|
-
|
69
|
-
-
|
70
|
-
|
71
|
-
requirement: &70328228099020 !ruby/object:Gem::Requirement
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: json-ld
|
102
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
72
103
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 19
|
108
|
+
segments:
|
109
|
+
- 0
|
110
|
+
- 3
|
111
|
+
- 0
|
112
|
+
version: 0.3.0
|
77
113
|
type: :development
|
114
|
+
requirement: *id006
|
78
115
|
prerelease: false
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
116
|
+
- !ruby/object:Gem::Dependency
|
81
117
|
name: rdf-spec
|
82
|
-
|
118
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
83
119
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 27
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
- 3
|
127
|
+
- 4
|
87
128
|
version: 0.3.4
|
88
129
|
type: :development
|
130
|
+
requirement: *id007
|
89
131
|
prerelease: false
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
132
|
+
- !ruby/object:Gem::Dependency
|
92
133
|
name: yard
|
93
|
-
|
134
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
94
135
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
hash: 7
|
140
|
+
segments:
|
141
|
+
- 0
|
142
|
+
- 6
|
143
|
+
- 0
|
98
144
|
version: 0.6.0
|
99
145
|
type: :development
|
146
|
+
requirement: *id008
|
147
|
+
prerelease: false
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: sxp
|
150
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
hash: 3
|
156
|
+
segments:
|
157
|
+
- 0
|
158
|
+
- 0
|
159
|
+
- 14
|
160
|
+
version: 0.0.14
|
161
|
+
type: :development
|
162
|
+
requirement: *id009
|
163
|
+
prerelease: false
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
name: rdf-spec
|
166
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
hash: 3
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
- 3
|
175
|
+
- 8
|
176
|
+
version: 0.3.8
|
177
|
+
type: :development
|
178
|
+
requirement: *id010
|
179
|
+
prerelease: false
|
180
|
+
- !ruby/object:Gem::Dependency
|
181
|
+
name: rspec
|
182
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
hash: 35
|
188
|
+
segments:
|
189
|
+
- 2
|
190
|
+
- 11
|
191
|
+
- 0
|
192
|
+
version: 2.11.0
|
193
|
+
type: :development
|
194
|
+
requirement: *id011
|
195
|
+
prerelease: false
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: rake
|
198
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
199
|
+
none: false
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
hash: 3
|
204
|
+
segments:
|
205
|
+
- 0
|
206
|
+
version: "0"
|
207
|
+
type: :development
|
208
|
+
requirement: *id012
|
100
209
|
prerelease: false
|
101
|
-
version_requirements: *70328228098080
|
102
210
|
description: RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.
|
103
211
|
email: public-rdf-ruby@w3.org
|
104
212
|
executables: []
|
213
|
+
|
105
214
|
extensions: []
|
215
|
+
|
106
216
|
extra_rdoc_files: []
|
107
|
-
|
217
|
+
|
218
|
+
files:
|
108
219
|
- AUTHORS
|
109
220
|
- README.markdown
|
110
221
|
- History
|
111
222
|
- UNLICENSE
|
112
223
|
- VERSION
|
224
|
+
- lib/ebnf.rb
|
113
225
|
- lib/rdf/ll1/lexer.rb
|
114
226
|
- lib/rdf/ll1/parser.rb
|
115
227
|
- lib/rdf/ll1/scanner.rb
|
@@ -121,29 +233,40 @@ files:
|
|
121
233
|
- lib/rdf/turtle/writer.rb
|
122
234
|
- lib/rdf/turtle.rb
|
123
235
|
homepage: http://github.com/ruby-rdf/rdf-turtle
|
124
|
-
licenses:
|
236
|
+
licenses:
|
125
237
|
- Public Domain
|
126
238
|
post_install_message:
|
127
239
|
rdoc_options: []
|
128
|
-
|
240
|
+
|
241
|
+
require_paths:
|
129
242
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
243
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
244
|
none: false
|
132
|
-
requirements:
|
133
|
-
- -
|
134
|
-
- !ruby/object:Gem::Version
|
245
|
+
requirements:
|
246
|
+
- - ">="
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
hash: 53
|
249
|
+
segments:
|
250
|
+
- 1
|
251
|
+
- 8
|
252
|
+
- 1
|
135
253
|
version: 1.8.1
|
136
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
255
|
none: false
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
256
|
+
requirements:
|
257
|
+
- - ">="
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
hash: 3
|
260
|
+
segments:
|
261
|
+
- 0
|
262
|
+
version: "0"
|
142
263
|
requirements: []
|
264
|
+
|
143
265
|
rubyforge_project: rdf-turtle
|
144
|
-
rubygems_version: 1.8.
|
266
|
+
rubygems_version: 1.8.24
|
145
267
|
signing_key:
|
146
268
|
specification_version: 3
|
147
269
|
summary: Turtle reader/writer for Ruby.
|
148
270
|
test_files: []
|
271
|
+
|
149
272
|
has_rdoc: false
|