rdf-n3 3.0.1 → 3.2.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +198 -76
  3. data/UNLICENSE +1 -1
  4. data/VERSION +1 -1
  5. data/lib/rdf/n3/algebra/builtin.rb +79 -0
  6. data/lib/rdf/n3/algebra/formula.rb +446 -0
  7. data/lib/rdf/n3/algebra/list/append.rb +42 -0
  8. data/lib/rdf/n3/algebra/list/first.rb +24 -0
  9. data/lib/rdf/n3/algebra/list/in.rb +48 -0
  10. data/lib/rdf/n3/algebra/list/iterate.rb +96 -0
  11. data/lib/rdf/n3/algebra/list/last.rb +24 -0
  12. data/lib/rdf/n3/algebra/list/length.rb +24 -0
  13. data/lib/rdf/n3/algebra/list/member.rb +44 -0
  14. data/lib/rdf/n3/algebra/list_operator.rb +96 -0
  15. data/lib/rdf/n3/algebra/log/conclusion.rb +65 -0
  16. data/lib/rdf/n3/algebra/log/conjunction.rb +36 -0
  17. data/lib/rdf/n3/algebra/log/content.rb +34 -0
  18. data/lib/rdf/n3/algebra/log/dtlit.rb +41 -0
  19. data/lib/rdf/n3/algebra/log/equal_to.rb +34 -0
  20. data/lib/rdf/n3/algebra/log/implies.rb +102 -0
  21. data/lib/rdf/n3/algebra/log/includes.rb +70 -0
  22. data/lib/rdf/n3/algebra/log/langlit.rb +41 -0
  23. data/lib/rdf/n3/algebra/log/n3_string.rb +34 -0
  24. data/lib/rdf/n3/algebra/log/not_equal_to.rb +23 -0
  25. data/lib/rdf/n3/algebra/log/not_includes.rb +27 -0
  26. data/lib/rdf/n3/algebra/log/output_string.rb +40 -0
  27. data/lib/rdf/n3/algebra/log/parsed_as_n3.rb +36 -0
  28. data/lib/rdf/n3/algebra/log/semantics.rb +40 -0
  29. data/lib/rdf/n3/algebra/math/absolute_value.rb +36 -0
  30. data/lib/rdf/n3/algebra/math/acos.rb +26 -0
  31. data/lib/rdf/n3/algebra/math/acosh.rb +26 -0
  32. data/lib/rdf/n3/algebra/math/asin.rb +26 -0
  33. data/lib/rdf/n3/algebra/math/asinh.rb +26 -0
  34. data/lib/rdf/n3/algebra/math/atan.rb +26 -0
  35. data/lib/rdf/n3/algebra/math/atanh.rb +26 -0
  36. data/lib/rdf/n3/algebra/math/ceiling.rb +28 -0
  37. data/lib/rdf/n3/algebra/math/cos.rb +40 -0
  38. data/lib/rdf/n3/algebra/math/cosh.rb +38 -0
  39. data/lib/rdf/n3/algebra/math/difference.rb +40 -0
  40. data/lib/rdf/n3/algebra/math/equal_to.rb +54 -0
  41. data/lib/rdf/n3/algebra/math/exponentiation.rb +35 -0
  42. data/lib/rdf/n3/algebra/math/floor.rb +28 -0
  43. data/lib/rdf/n3/algebra/math/greater_than.rb +41 -0
  44. data/lib/rdf/n3/algebra/math/less_than.rb +41 -0
  45. data/lib/rdf/n3/algebra/math/negation.rb +38 -0
  46. data/lib/rdf/n3/algebra/math/not_equal_to.rb +25 -0
  47. data/lib/rdf/n3/algebra/math/not_greater_than.rb +25 -0
  48. data/lib/rdf/n3/algebra/math/not_less_than.rb +25 -0
  49. data/lib/rdf/n3/algebra/math/product.rb +20 -0
  50. data/lib/rdf/n3/algebra/math/quotient.rb +36 -0
  51. data/lib/rdf/n3/algebra/math/remainder.rb +35 -0
  52. data/lib/rdf/n3/algebra/math/rounded.rb +26 -0
  53. data/lib/rdf/n3/algebra/math/sin.rb +40 -0
  54. data/lib/rdf/n3/algebra/math/sinh.rb +38 -0
  55. data/lib/rdf/n3/algebra/math/sum.rb +40 -0
  56. data/lib/rdf/n3/algebra/math/tan.rb +40 -0
  57. data/lib/rdf/n3/algebra/math/tanh.rb +38 -0
  58. data/lib/rdf/n3/algebra/not_implemented.rb +13 -0
  59. data/lib/rdf/n3/algebra/resource_operator.rb +122 -0
  60. data/lib/rdf/n3/algebra/str/concatenation.rb +27 -0
  61. data/lib/rdf/n3/algebra/str/contains.rb +33 -0
  62. data/lib/rdf/n3/algebra/str/contains_ignoring_case.rb +33 -0
  63. data/lib/rdf/n3/algebra/str/ends_with.rb +33 -0
  64. data/lib/rdf/n3/algebra/str/equal_ignoring_case.rb +34 -0
  65. data/lib/rdf/n3/algebra/str/format.rb +17 -0
  66. data/lib/rdf/n3/algebra/str/greater_than.rb +38 -0
  67. data/lib/rdf/n3/algebra/str/less_than.rb +33 -0
  68. data/lib/rdf/n3/algebra/str/matches.rb +37 -0
  69. data/lib/rdf/n3/algebra/str/not_equal_ignoring_case.rb +17 -0
  70. data/lib/rdf/n3/algebra/str/not_greater_than.rb +17 -0
  71. data/lib/rdf/n3/algebra/str/not_less_than.rb +17 -0
  72. data/lib/rdf/n3/algebra/str/not_matches.rb +18 -0
  73. data/lib/rdf/n3/algebra/str/replace.rb +35 -0
  74. data/lib/rdf/n3/algebra/str/scrape.rb +35 -0
  75. data/lib/rdf/n3/algebra/str/starts_with.rb +33 -0
  76. data/lib/rdf/n3/algebra/time/day.rb +35 -0
  77. data/lib/rdf/n3/algebra/time/day_of_week.rb +27 -0
  78. data/lib/rdf/n3/algebra/time/gm_time.rb +29 -0
  79. data/lib/rdf/n3/algebra/time/hour.rb +35 -0
  80. data/lib/rdf/n3/algebra/time/in_seconds.rb +59 -0
  81. data/lib/rdf/n3/algebra/time/local_time.rb +29 -0
  82. data/lib/rdf/n3/algebra/time/minute.rb +35 -0
  83. data/lib/rdf/n3/algebra/time/month.rb +35 -0
  84. data/lib/rdf/n3/algebra/time/second.rb +35 -0
  85. data/lib/rdf/n3/algebra/time/timezone.rb +36 -0
  86. data/lib/rdf/n3/algebra/time/year.rb +29 -0
  87. data/lib/rdf/n3/algebra.rb +210 -0
  88. data/lib/rdf/n3/extensions.rb +221 -0
  89. data/lib/rdf/n3/format.rb +66 -1
  90. data/lib/rdf/n3/list.rb +630 -0
  91. data/lib/rdf/n3/reader.rb +774 -497
  92. data/lib/rdf/n3/reasoner.rb +282 -0
  93. data/lib/rdf/n3/refinements.rb +178 -0
  94. data/lib/rdf/n3/repository.rb +332 -0
  95. data/lib/rdf/n3/terminals.rb +78 -0
  96. data/lib/rdf/n3/vocab.rb +36 -3
  97. data/lib/rdf/n3/writer.rb +461 -250
  98. data/lib/rdf/n3.rb +11 -8
  99. metadata +177 -49
  100. data/AUTHORS +0 -1
  101. data/History.markdown +0 -99
  102. data/lib/rdf/n3/patches/array_hacks.rb +0 -53
  103. data/lib/rdf/n3/reader/meta.rb +0 -641
  104. data/lib/rdf/n3/reader/parser.rb +0 -237
@@ -0,0 +1,332 @@
1
+ module RDF::N3
2
+ ##
3
+ # Sub-class of RDF::Repository which allows for native lists in different positions.
4
+ class Repository < RDF::Repository
5
+ DEFAULT_GRAPH = false
6
+
7
+ ##
8
+ # Initializes this repository instance.
9
+ #
10
+ # @param [URI, #to_s] uri (nil)
11
+ # @param [String, #to_s] title (nil)
12
+ # @param [Hash{Symbol => Object}] options
13
+ # @option options [Boolean] :with_graph_name (true)
14
+ # Indicates that the repository supports named graphs, otherwise,
15
+ # only the default graph is supported.
16
+ # @option options [Boolean] :with_validity (true)
17
+ # Indicates that the repository supports named validation.
18
+ # @option options [Boolean] :transaction_class (DEFAULT_TX_CLASS)
19
+ # Specifies the RDF::Transaction implementation to use in this Repository.
20
+ # @yield [repository]
21
+ # @yieldparam [Repository] repository
22
+ def initialize(uri: nil, title: nil, **options, &block)
23
+ @data = options.delete(:data) || {}
24
+ super do
25
+ if block_given?
26
+ case block.arity
27
+ when 1 then block.call(self)
28
+ else instance_eval(&block)
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ ##
35
+ # Returns `true` if this respository supports the given `feature`.
36
+ #
37
+ # This repository supports list_terms.
38
+ def supports?(feature)
39
+ case feature.to_sym
40
+ when :list_terms then true
41
+ when :rdfstar then true
42
+ when :snapshots then false
43
+ else super
44
+ end
45
+ end
46
+
47
+ ##
48
+ # Creates a query from the statements in this repository, turning blank nodes into non-distinguished variables. This can be used to determine if this repository is logically a subset of another repository.
49
+ #
50
+ # @return [RDF::Query]
51
+ def to_query
52
+ RDF::Query.new do |query|
53
+ each do |statement|
54
+ query.pattern RDF::Query::Pattern.from(statement, ndvars: true)
55
+ end
56
+ end
57
+ end
58
+
59
+ ##
60
+ # @private
61
+ # @see RDF::Countable#count
62
+ def count
63
+ count = 0
64
+ @data.each do |_, ss|
65
+ ss.each do |_, ps|
66
+ ps.each { |_, os| count += os.size }
67
+ end
68
+ end
69
+ count
70
+ end
71
+
72
+ ##
73
+ # @private
74
+ # @see RDF::Enumerable#has_graph?
75
+ def has_graph?(graph)
76
+ @data.has_key?(graph)
77
+ end
78
+
79
+ ##
80
+ # @private
81
+ # @see RDF::Enumerable#each_graph
82
+ def graph_names(options = nil, &block)
83
+ @data.keys.reject { |g| g == DEFAULT_GRAPH }.to_a
84
+ end
85
+
86
+ ##
87
+ # @private
88
+ # @see RDF::Enumerable#each_graph
89
+ def each_graph(&block)
90
+ if block_given?
91
+ @data.each_key do |gn|
92
+ yield RDF::Graph.new(graph_name: (gn == DEFAULT_GRAPH ? nil : gn), data: self)
93
+ end
94
+ end
95
+ enum_graph
96
+ end
97
+
98
+ ##
99
+ # @private
100
+ # @see RDF::Enumerable#has_statement?
101
+ def has_statement?(statement)
102
+ has_statement_in?(@data, statement)
103
+ end
104
+
105
+ ##
106
+ # @private
107
+ # @see RDF::Enumerable#each_statement
108
+ def each_statement(&block)
109
+ if block_given?
110
+ @data.each do |g, ss|
111
+ ss.each do |s, ps|
112
+ ps.each do |p, os|
113
+ os.each do |o, object_options|
114
+ yield RDF::Statement.new(s, p, o, object_options.merge(graph_name: g.equal?(DEFAULT_GRAPH) ? nil : g))
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ enum_statement
121
+ end
122
+ alias_method :each, :each_statement
123
+
124
+ ##
125
+ # Projects statements with lists expanded to first/rest chains
126
+ #
127
+ # @yield [RDF::Statement]
128
+ def each_expanded_statement(&block)
129
+ if block_given?
130
+ each_statement do |st|
131
+ if st.subject.list?
132
+ st.subject.each_statement(&block)
133
+ st.subject = st.subject.subject
134
+ end
135
+ if st.object.list?
136
+ st.object.each_statement(&block)
137
+ st.object = st.object.subject
138
+ end
139
+ block.call(st)
140
+ end
141
+ end
142
+ enum_for(:each_expanded_statement) unless block_given?
143
+ end
144
+
145
+ ##
146
+ # Returns the expanded statements for this repository
147
+ #
148
+ # @return [Array<RDF::Statement>]
149
+ def expanded_statements
150
+ each_expanded_statement.to_a
151
+ end
152
+
153
+ ##
154
+ # @see Mutable#apply_changeset
155
+ def apply_changeset(changeset)
156
+ data = @data
157
+ changeset.deletes.each do |del|
158
+ if del.constant?
159
+ data = delete_from(data, del)
160
+ else
161
+ # we need this condition to handle wildcard statements
162
+ query_pattern(del) { |stmt| data = delete_from(data, stmt) }
163
+ end
164
+ end
165
+ changeset.inserts.each { |ins| data = insert_to(data, ins) }
166
+ @data = data
167
+ end
168
+
169
+ ##
170
+ # @see RDF::Dataset#isolation_level
171
+ def isolation_level
172
+ :serializable
173
+ end
174
+
175
+ protected
176
+
177
+ ##
178
+ # Match elements with `eql?`, not `==`
179
+ #
180
+ # `graph_name` of `false` matches default graph. Unbound variable matches
181
+ # non-false graph name.
182
+ #
183
+ # Matches terms which are native lists.
184
+ #
185
+ # @private
186
+ # @see RDF::Queryable#query_pattern
187
+ def query_pattern(pattern, **options, &block)
188
+ if block_given?
189
+ graph_name = pattern.graph_name
190
+ subject = pattern.subject
191
+ predicate = pattern.predicate
192
+ object = pattern.object
193
+
194
+ cs = @data.has_key?(graph_name) ? { graph_name => @data[graph_name] } : @data
195
+
196
+ cs.each do |c, ss|
197
+ next unless graph_name.nil? ||
198
+ graph_name == DEFAULT_GRAPH && !c ||
199
+ graph_name.eql?(c)
200
+
201
+ ss = if subject.nil? || subject.is_a?(RDF::Query::Variable)
202
+ ss
203
+ elsif subject.is_a?(RDF::N3::List)
204
+ # Match subjects which are eql lists
205
+ ss.keys.select {|s| s.list? && subject.eql?(s)}.inject({}) do |memo, li|
206
+ memo.merge(li => ss[li])
207
+ end
208
+ elsif subject.is_a?(RDF::Query::Pattern)
209
+ # Match subjects which are statements matching this pattern
210
+ ss.keys.select {|s| s.statement? && subject.eql?(s)}.inject({}) do |memo, st|
211
+ memo.merge(st => ss[st])
212
+ end
213
+ elsif ss.has_key?(subject)
214
+ { subject => ss[subject] }
215
+ else
216
+ []
217
+ end
218
+ ss.each do |s, ps|
219
+ ps = if predicate.nil? || predicate.is_a?(RDF::Query::Variable)
220
+ ps
221
+ elsif predicate.is_a?(RDF::N3::List)
222
+ # Match predicates which are eql lists
223
+ ps.keys.select {|p| p.list? && predicate.eql?(p)}.inject({}) do |memo, li|
224
+ memo.merge(li => ps[li])
225
+ end
226
+ elsif ps.has_key?(predicate)
227
+ { predicate => ps[predicate] }
228
+ else
229
+ []
230
+ end
231
+ ps.each do |p, os|
232
+ os.each do |o, object_options|
233
+ next unless object.nil? || object.eql?(o)
234
+ yield RDF::Statement.new(s, p, o, object_options.merge(graph_name: c.equal?(DEFAULT_GRAPH) ? nil : c))
235
+ end
236
+ end
237
+ end
238
+ end
239
+ else
240
+ enum_for(:query_pattern, pattern, **options)
241
+ end
242
+ end
243
+
244
+ ##
245
+ # @private
246
+ # @see RDF::Mutable#insert
247
+ def insert_statement(statement)
248
+ @data = insert_to(@data, statement)
249
+ end
250
+
251
+ ##
252
+ # @private
253
+ # @see RDF::Mutable#delete
254
+ def delete_statement(statement)
255
+ @data = delete_from(@data, statement)
256
+ end
257
+
258
+ ##
259
+ # @private
260
+ # @see RDF::Mutable#clear
261
+ def clear_statements
262
+ @data = @data.clear
263
+ end
264
+
265
+ ##
266
+ # @private
267
+ # @return [Hash]
268
+ def data
269
+ @data
270
+ end
271
+
272
+ ##
273
+ # @private
274
+ # @return [Hash]
275
+ def data=(hash)
276
+ @data = hash
277
+ end
278
+
279
+ private
280
+
281
+ ##
282
+ # @private
283
+ # @see #has_statement
284
+ def has_statement_in?(data, statement)
285
+ s, p, o, g = statement.to_quad
286
+ g ||= DEFAULT_GRAPH
287
+
288
+ data.has_key?(g) &&
289
+ data[g].has_key?(s) &&
290
+ data[g][s].has_key?(p) &&
291
+ data[g][s][p].has_key?(o)
292
+ end
293
+
294
+ ##
295
+ # @private
296
+ # @return [Hash] a new, updated hash
297
+ def insert_to(data, statement)
298
+ raise ArgumentError, "Statement #{statement.inspect} is incomplete" if statement.incomplete?
299
+
300
+ s, p, o, c = statement.to_quad
301
+ c ||= DEFAULT_GRAPH
302
+ unless has_statement_in?(data, statement)
303
+ data = data.has_key?(c) ? data.dup : data.merge(c => {})
304
+ data[c] = data[c].has_key?(s) ? data[c].dup : data[c].merge(s => {})
305
+ data[c][s] = data[c][s].has_key?(p) ? data[c][s].dup : data[c][s].merge(p => {})
306
+ data[c][s][p] = data[c][s][p].merge(o => statement.options)
307
+ end
308
+
309
+ # If statement is inferred, make sure that it is marked as inferred in the dataset.
310
+ data[c][s][p][o][:inferred] = true if statement.options[:inferred]
311
+
312
+ data
313
+ end
314
+
315
+ ##
316
+ # @private
317
+ # @return [Hash] a new, updated hash
318
+ def delete_from(data, statement)
319
+ if has_statement_in?(data, statement)
320
+ s, p, o, g = statement.to_quad
321
+ g = DEFAULT_GRAPH unless supports?(:graph_name)
322
+ g ||= DEFAULT_GRAPH
323
+
324
+ os = data[g][s][p].dup.delete_if {|k,v| k == o}
325
+ ps = os.empty? ? data[g][s].dup.delete_if {|k,v| k == p} : data[g][s].merge(p => os)
326
+ ss = ps.empty? ? data[g].dup.delete_if {|k,v| k == s} : data[g].merge(s => ps)
327
+ return ss.empty? ? data.dup.delete_if {|k,v| k == g} : data.merge(g => ss)
328
+ end
329
+ data
330
+ end
331
+ end
332
+ end
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ module RDF::N3
3
+ module Terminals
4
+ # Definitions of token regular expressions used for lexical analysis
5
+ ##
6
+ # Unicode regular expressions for Ruby 1.9+ with the Oniguruma engine.
7
+ U_CHARS1 = Regexp.compile(<<-EOS.gsub(/\s+/, ''))
8
+ [\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|
9
+ [\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|
10
+ [\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|
11
+ [\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u{10000}-\\u{EFFFF}]
12
+ EOS
13
+ U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]", Regexp::FIXEDENCODING).freeze
14
+ IRI_RANGE = Regexp.compile("[[^<>\"{}|^`\\\\]&&[^\\x00-\\x20]]", Regexp::FIXEDENCODING).freeze
15
+
16
+ ESCAPE_CHAR4 = /\\u(?:[0-9A-Fa-f]{4,4})/u.freeze # \uXXXX
17
+ ESCAPE_CHAR8 = /\\U(?:[0-9A-Fa-f]{8,8})/u.freeze # \UXXXXXXXX
18
+ UCHAR = /#{ESCAPE_CHAR4}|#{ESCAPE_CHAR8}/n.freeze
19
+ # 170s
20
+ PERCENT = /%[0-9A-Fa-f]{2}/u.freeze
21
+ # 172s
22
+ PN_LOCAL_ESC = /\\[_~\.\-\!$\&'\(\)\*\+,;=\/\?\#@%]/u.freeze
23
+ # 169s
24
+ PLX = /#{PERCENT}|#{PN_LOCAL_ESC}/u.freeze
25
+ # 163s
26
+ PN_CHARS_BASE = /[A-Z]|[a-z]|#{U_CHARS1}/u.freeze
27
+ # 164s
28
+ PN_CHARS_U = /_|#{PN_CHARS_BASE}/u.freeze
29
+ # 166s
30
+ PN_CHARS = /-|[0-9]|#{PN_CHARS_U}|#{U_CHARS2}/u.freeze
31
+ PN_LOCAL_BODY = /(?:(?:\.|:|#{PN_CHARS}|#{PLX})*(?:#{PN_CHARS}|:|#{PLX}))?/u.freeze
32
+ PN_CHARS_BODY = /(?:(?:\.|#{PN_CHARS})*#{PN_CHARS})?/u.freeze
33
+ # 167s
34
+ PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/u.freeze
35
+ # 168s
36
+ PN_LOCAL = /(?:[0-9]|:|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/u.freeze
37
+ # 154s
38
+ EXPONENT = /[eE][+-]?[0-9]+/u.freeze
39
+ # 159s
40
+ ECHAR = /\\[tbnrf\\"']/u.freeze
41
+ # 18
42
+ IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/mu.freeze
43
+ # 139s
44
+ PNAME_NS = /#{PN_PREFIX}?:/u.freeze
45
+ # 140s
46
+ PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/u.freeze
47
+ # 141s
48
+ BLANK_NODE_LABEL = /_:(?:[0-9]|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/u.freeze
49
+ # 144s
50
+ # XXX: negative-lookahed for @is and @has
51
+ LANGTAG = /@(?!(?:is|has))(?:[a-zA-Z]+(?:-[a-zA-Z0-9]+)*)/u.freeze
52
+ # 19
53
+ INTEGER = /[+-]?[0-9]+/u.freeze
54
+ # 20
55
+ DECIMAL = /[+-]?(?:[0-9]*\.[0-9]+)/u.freeze
56
+ # 21
57
+ DOUBLE = /[+-]?(?:[0-9]+\.[0-9]*#{EXPONENT}|\.?[0-9]+#{EXPONENT})/u.freeze
58
+ # 22
59
+ STRING_LITERAL_SINGLE_QUOTE = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/u.freeze
60
+ # 23
61
+ STRING_LITERAL_QUOTE = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/u.freeze
62
+ # 24
63
+ STRING_LITERAL_LONG_SINGLE_QUOTE = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/um.freeze
64
+ # 25
65
+ STRING_LITERAL_LONG_QUOTE = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/um.freeze
66
+
67
+ # 28t
68
+ PREFIX = /@?prefix/ui.freeze
69
+ # 29t
70
+ BASE = /@?base/ui.freeze
71
+ QUICK_VAR_NAME = /\?#{PN_LOCAL}/.freeze
72
+
73
+ # 161s
74
+ WS = /(?:\s|(?:#[^\n\r]*))+/um.freeze
75
+ # 162s
76
+ ANON = /\[\s*\]/u.freeze
77
+ end
78
+ end
data/lib/rdf/n3/vocab.rb CHANGED
@@ -1,4 +1,37 @@
1
- module RDF
2
- class LOG < Vocabulary("http://www.w3.org/2000/10/swap/log#"); end
3
- class REI < Vocabulary("http://www.w3.org/2004/06/rei#"); end
1
+ module RDF::N3
2
+ # @!parse
3
+ # # Crypto namespace
4
+ # class Crypto < RDF::Vocabulary; end
5
+ const_set("Crypto", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/crypto#")))
6
+ RDF::Vocabulary.register(:crypto, Crypto)
7
+
8
+ # @!parse
9
+ # # Log namespace
10
+ # class Log < RDF::Vocabulary; end
11
+ const_set("Log", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/log#")))
12
+ RDF::Vocabulary.register(:log, Log)
13
+
14
+ # @!parse
15
+ # # Math namespace
16
+ # class Math < RDF::Vocabulary; end
17
+ const_set("Math", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/math#")))
18
+ RDF::Vocabulary.register(:math, Math)
19
+
20
+ # @!parse
21
+ # # Rei namespace
22
+ # class Rei < RDF::Vocabulary; end
23
+ const_set("Rei", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/reify#")))
24
+ RDF::Vocabulary.register(:rei, Rei)
25
+
26
+ # @!parse
27
+ # # Str namespace
28
+ # class Str < RDF::Vocabulary; end
29
+ const_set("Str", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/string#")))
30
+ RDF::Vocabulary.register(:string, Str)
31
+
32
+ # @!parse
33
+ # # Time namespace
34
+ # class Time < RDF::Vocabulary; end
35
+ const_set("Time", Class.new(RDF::Vocabulary("http://www.w3.org/2000/10/swap/time#")))
36
+ RDF::Vocabulary.register(:time, Time)
4
37
  end