rdf 0.2.3 → 0.3.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/AUTHORS +1 -0
  2. data/{CONTRIBUTORS → CREDITS} +3 -1
  3. data/README +17 -8
  4. data/VERSION +1 -1
  5. data/etc/doap.nt +28 -10
  6. data/lib/rdf/format.rb +55 -47
  7. data/lib/rdf/mixin/countable.rb +3 -6
  8. data/lib/rdf/mixin/enumerable.rb +69 -69
  9. data/lib/rdf/mixin/indexable.rb +26 -0
  10. data/lib/rdf/mixin/mutable.rb +2 -2
  11. data/lib/rdf/mixin/queryable.rb +50 -12
  12. data/lib/rdf/mixin/writable.rb +8 -19
  13. data/lib/rdf/model/literal/boolean.rb +42 -6
  14. data/lib/rdf/model/literal/date.rb +17 -5
  15. data/lib/rdf/model/literal/datetime.rb +18 -6
  16. data/lib/rdf/model/literal/decimal.rb +32 -5
  17. data/lib/rdf/model/literal/double.rb +32 -5
  18. data/lib/rdf/model/literal/integer.rb +16 -5
  19. data/lib/rdf/model/literal/time.rb +6 -6
  20. data/lib/rdf/model/literal/token.rb +5 -5
  21. data/lib/rdf/model/literal/xml.rb +5 -5
  22. data/lib/rdf/model/literal.rb +24 -11
  23. data/lib/rdf/model/node.rb +14 -13
  24. data/lib/rdf/model/uri.rb +315 -42
  25. data/lib/rdf/model/value.rb +1 -1
  26. data/lib/rdf/ntriples/reader.rb +23 -15
  27. data/lib/rdf/ntriples/writer.rb +1 -1
  28. data/lib/rdf/query/pattern.rb +131 -15
  29. data/lib/rdf/query/solution.rb +94 -29
  30. data/lib/rdf/query/solutions.rb +202 -0
  31. data/lib/rdf/query/variable.rb +42 -18
  32. data/lib/rdf/query.rb +210 -160
  33. data/lib/rdf/reader.rb +300 -112
  34. data/lib/rdf/repository.rb +88 -6
  35. data/lib/rdf/transaction.rb +161 -0
  36. data/lib/rdf/util/cache.rb +5 -0
  37. data/lib/rdf/util/file.rb +31 -0
  38. data/lib/rdf/util/uuid.rb +36 -0
  39. data/lib/rdf/util.rb +2 -0
  40. data/lib/rdf/version.rb +3 -3
  41. data/lib/rdf/vocab.rb +43 -35
  42. data/lib/rdf/writer.rb +105 -50
  43. data/lib/rdf.rb +29 -27
  44. metadata +26 -17
@@ -12,15 +12,15 @@ module RDF
12
12
  # enumerable.count
13
13
  #
14
14
  # @example Checking whether a specific statement exists
15
- # enumerable.has_statement?(RDF::Statement.new(subject, predicate, object))
15
+ # enumerable.has_statement?(RDF::Statement(subject, predicate, object))
16
16
  # enumerable.has_triple?([subject, predicate, object])
17
17
  # enumerable.has_quad?([subject, predicate, object, context])
18
18
  #
19
19
  # @example Checking whether a specific value exists
20
- # enumerable.has_subject?(RDF::URI.new("http://rdf.rubyforge.org/"))
20
+ # enumerable.has_subject?(RDF::URI("http://rdf.rubyforge.org/"))
21
21
  # enumerable.has_predicate?(RDF::DC.creator)
22
- # enumerable.has_object?(RDF::Literal.new("Hello!", :language => :en))
23
- # enumerable.has_context?(RDF::URI.new("http://rubyforge.org/"))
22
+ # enumerable.has_object?(RDF::Literal("Hello!", :language => :en))
23
+ # enumerable.has_context?(RDF::URI("http://rubyforge.org/"))
24
24
  #
25
25
  # @example Enumerating all statements
26
26
  # enumerable.each_statement do |statement|
@@ -65,7 +65,7 @@ module RDF
65
65
  # Returns all RDF statements.
66
66
  #
67
67
  # @param [Hash{Symbol => Boolean}] options
68
- # @return [Enumerator<Statement>]
68
+ # @return [Enumerator<RDF::Statement>]
69
69
  # @see #each_statement
70
70
  # @see #enum_statement
71
71
  def statements(options = {})
@@ -75,12 +75,11 @@ module RDF
75
75
  ##
76
76
  # Returns `true` if `self` contains the given RDF statement.
77
77
  #
78
- # @param [Statement] statement
78
+ # @param [RDF::Statement] statement
79
79
  # @return [Boolean]
80
80
  def has_statement?(statement)
81
81
  !enum_statement.find { |s| s.eql?(statement) }.nil?
82
82
  end
83
-
84
83
  alias_method :include?, :has_statement?
85
84
 
86
85
  ##
@@ -92,7 +91,9 @@ module RDF
92
91
  #
93
92
  # @overload each_statement
94
93
  # @yield [statement]
95
- # @yieldparam [Statement] statement
94
+ # each statement
95
+ # @yieldparam [RDF::Statement] statement
96
+ # @yieldreturn [void] ignored
96
97
  # @return [void]
97
98
  #
98
99
  # @overload each_statement
@@ -104,9 +105,8 @@ module RDF
104
105
  if block_given?
105
106
  # Invoke {#each} in the containing class:
106
107
  each(&block)
107
- else
108
- enum_statement
109
108
  end
109
+ enum_statement
110
110
  end
111
111
 
112
112
  ##
@@ -117,14 +117,13 @@ module RDF
117
117
  def enum_statement
118
118
  enum_for(:each_statement).extend(RDF::Queryable, RDF::Enumerable)
119
119
  end
120
-
121
120
  alias_method :enum_statements, :enum_statement
122
121
 
123
122
  ##
124
123
  # Returns all RDF triples.
125
124
  #
126
125
  # @param [Hash{Symbol => Boolean}] options
127
- # @return [Enumerator<Array(Resource, URI, Value)>]
126
+ # @return [Enumerator<Array(RDF::Resource, RDF::URI, RDF::Value)>]
128
127
  # @see #each_triple
129
128
  # @see #enum_triple
130
129
  def triples(options = {})
@@ -134,7 +133,7 @@ module RDF
134
133
  ##
135
134
  # Returns `true` if `self` contains the given RDF triple.
136
135
  #
137
- # @param [Array(Resource, URI, Value)] triple
136
+ # @param [Array(RDF::Resource, RDF::URI, RDF::Value)] triple
138
137
  # @return [Boolean]
139
138
  def has_triple?(triple)
140
139
  enum_triple.include?(triple)
@@ -149,9 +148,11 @@ module RDF
149
148
  #
150
149
  # @overload each_triple
151
150
  # @yield [subject, predicate, object]
152
- # @yieldparam [Resource] subject
153
- # @yieldparam [URI] predicate
154
- # @yieldparam [Value] object
151
+ # each triple
152
+ # @yieldparam [RDF::Resource] subject
153
+ # @yieldparam [RDF::URI] predicate
154
+ # @yieldparam [RDF::Value] object
155
+ # @yieldreturn [void] ignored
155
156
  # @return [void]
156
157
  #
157
158
  # @overload each_triple
@@ -164,9 +165,8 @@ module RDF
164
165
  each_statement do |statement|
165
166
  block.call(*statement.to_triple)
166
167
  end
167
- else
168
- enum_triple
169
168
  end
169
+ enum_triple
170
170
  end
171
171
 
172
172
  ##
@@ -177,14 +177,13 @@ module RDF
177
177
  def enum_triple
178
178
  enum_for(:each_triple)
179
179
  end
180
-
181
180
  alias_method :enum_triples, :enum_triple
182
181
 
183
182
  ##
184
183
  # Returns all RDF quads.
185
184
  #
186
185
  # @param [Hash{Symbol => Boolean}] options
187
- # @return [Enumerator<Array(Resource, URI, Value, Resource)>]
186
+ # @return [Enumerator<Array(RDF::Resource, RDF::URI, RDF::Value, RDF::Resource)>]
188
187
  # @see #each_quad
189
188
  # @see #enum_quad
190
189
  def quads(options = {})
@@ -194,7 +193,7 @@ module RDF
194
193
  ##
195
194
  # Returns `true` if `self` contains the given RDF quad.
196
195
  #
197
- # @param [Array(Resource, URI, Value, Resource)] quad
196
+ # @param [Array(RDF::Resource, RDF::URI, RDF::Value, RDF::Resource)] quad
198
197
  # @return [Boolean]
199
198
  def has_quad?(quad)
200
199
  enum_quad.include?(quad)
@@ -209,10 +208,12 @@ module RDF
209
208
  #
210
209
  # @overload each_quad
211
210
  # @yield [subject, predicate, object, context]
212
- # @yieldparam [Resource] subject
213
- # @yieldparam [URI] predicate
214
- # @yieldparam [Value] object
215
- # @yieldparam [Resource] context
211
+ # each quad
212
+ # @yieldparam [RDF::Resource] subject
213
+ # @yieldparam [RDF::URI] predicate
214
+ # @yieldparam [RDF::Value] object
215
+ # @yieldparam [RDF::Resource] context
216
+ # @yieldreturn [void] ignored
216
217
  # @return [void]
217
218
  #
218
219
  # @overload each_quad
@@ -225,9 +226,8 @@ module RDF
225
226
  each_statement do |statement|
226
227
  block.call(*statement.to_quad)
227
228
  end
228
- else
229
- enum_quad
230
229
  end
230
+ enum_quad
231
231
  end
232
232
 
233
233
  ##
@@ -238,15 +238,14 @@ module RDF
238
238
  def enum_quad
239
239
  enum_for(:each_quad)
240
240
  end
241
-
242
241
  alias_method :enum_quads, :enum_quad
243
242
 
244
243
  ##
245
- # Returns all unique RDF subjects.
244
+ # Returns all unique RDF subject terms.
246
245
  #
247
246
  # @param [Hash{Symbol => Boolean}] options
248
247
  # @option options [Boolean] :unique (true)
249
- # @return [Enumerator<Resource>]
248
+ # @return [Enumerator<RDF::Resource>]
250
249
  # @see #each_subject
251
250
  # @see #enum_subject
252
251
  def subjects(options = {})
@@ -258,16 +257,16 @@ module RDF
258
257
  end
259
258
 
260
259
  ##
261
- # Returns `true` if `self` contains the given RDF subject.
260
+ # Returns `true` if `self` contains the given RDF subject term.
262
261
  #
263
- # @param [Resource] value
262
+ # @param [RDF::Resource] value
264
263
  # @return [Boolean]
265
264
  def has_subject?(value)
266
265
  enum_subject.include?(value)
267
266
  end
268
267
 
269
268
  ##
270
- # Iterates the given block for each unique RDF subject.
269
+ # Iterates the given block for each unique RDF subject term.
271
270
  #
272
271
  # If no block was given, returns an enumerator.
273
272
  #
@@ -275,7 +274,9 @@ module RDF
275
274
  #
276
275
  # @overload each_subject
277
276
  # @yield [subject]
278
- # @yieldparam [Resource] subject
277
+ # each subject term
278
+ # @yieldparam [RDF::Resource] subject
279
+ # @yieldreturn [void] ignored
279
280
  # @return [void]
280
281
  #
281
282
  # @overload each_subject
@@ -293,9 +294,8 @@ module RDF
293
294
  block.call(value)
294
295
  end
295
296
  end
296
- else
297
- enum_subject
298
297
  end
298
+ enum_subject
299
299
  end
300
300
 
301
301
  ##
@@ -306,15 +306,14 @@ module RDF
306
306
  def enum_subject
307
307
  enum_for(:each_subject)
308
308
  end
309
-
310
309
  alias_method :enum_subjects, :enum_subject
311
310
 
312
311
  ##
313
- # Returns all unique RDF predicates.
312
+ # Returns all unique RDF predicate terms.
314
313
  #
315
314
  # @param [Hash{Symbol => Boolean}] options
316
315
  # @option options [Boolean] :unique (true)
317
- # @return [Enumerator<URI>]
316
+ # @return [Enumerator<RDF::URI>]
318
317
  # @see #each_predicate
319
318
  # @see #enum_predicate
320
319
  def predicates(options = {})
@@ -326,16 +325,16 @@ module RDF
326
325
  end
327
326
 
328
327
  ##
329
- # Returns `true` if `self` contains the given RDF predicate.
328
+ # Returns `true` if `self` contains the given RDF predicate term.
330
329
  #
331
- # @param [URI] value
330
+ # @param [RDF::URI] value
332
331
  # @return [Boolean]
333
332
  def has_predicate?(value)
334
333
  enum_predicate.include?(value)
335
334
  end
336
335
 
337
336
  ##
338
- # Iterates the given block for each unique RDF predicate.
337
+ # Iterates the given block for each unique RDF predicate term.
339
338
  #
340
339
  # If no block was given, returns an enumerator.
341
340
  #
@@ -343,7 +342,9 @@ module RDF
343
342
  #
344
343
  # @overload each_predicate
345
344
  # @yield [predicate]
346
- # @yieldparam [URI] predicate
345
+ # each predicate term
346
+ # @yieldparam [RDF::URI] predicate
347
+ # @yieldreturn [void] ignored
347
348
  # @return [void]
348
349
  #
349
350
  # @overload each_predicate
@@ -361,9 +362,8 @@ module RDF
361
362
  block.call(value)
362
363
  end
363
364
  end
364
- else
365
- enum_predicate
366
365
  end
366
+ enum_predicate
367
367
  end
368
368
 
369
369
  ##
@@ -374,15 +374,14 @@ module RDF
374
374
  def enum_predicate
375
375
  enum_for(:each_predicate)
376
376
  end
377
-
378
377
  alias_method :enum_predicates, :enum_predicate
379
378
 
380
379
  ##
381
- # Returns all unique RDF objects.
380
+ # Returns all unique RDF object terms.
382
381
  #
383
382
  # @param [Hash{Symbol => Boolean}] options
384
383
  # @option options [Boolean] :unique (true)
385
- # @return [Enumerator<Value>]
384
+ # @return [Enumerator<RDF::Value>]
386
385
  # @see #each_object
387
386
  # @see #enum_object
388
387
  def objects(options = {})
@@ -394,16 +393,16 @@ module RDF
394
393
  end
395
394
 
396
395
  ##
397
- # Returns `true` if `self` contains the given RDF object.
396
+ # Returns `true` if `self` contains the given RDF object term.
398
397
  #
399
- # @param [Value] value
398
+ # @param [RDF::Value] value
400
399
  # @return [Boolean]
401
400
  def has_object?(value)
402
401
  enum_object.include?(value)
403
402
  end
404
403
 
405
404
  ##
406
- # Iterates the given block for each unique RDF object.
405
+ # Iterates the given block for each unique RDF object term.
407
406
  #
408
407
  # If no block was given, returns an enumerator.
409
408
  #
@@ -411,7 +410,9 @@ module RDF
411
410
  #
412
411
  # @overload each_object
413
412
  # @yield [object]
414
- # @yieldparam [Value] object
413
+ # each object term
414
+ # @yieldparam [RDF::Value] object
415
+ # @yieldreturn [void] ignored
415
416
  # @return [void]
416
417
  #
417
418
  # @overload each_object
@@ -429,9 +430,8 @@ module RDF
429
430
  block.call(value)
430
431
  end
431
432
  end
432
- else
433
- enum_object
434
433
  end
434
+ enum_object
435
435
  end
436
436
 
437
437
  ##
@@ -442,7 +442,6 @@ module RDF
442
442
  def enum_object
443
443
  enum_for(:each_object)
444
444
  end
445
-
446
445
  alias_method :enum_objects, :enum_object
447
446
 
448
447
  ##
@@ -450,7 +449,7 @@ module RDF
450
449
  #
451
450
  # @param [Hash{Symbol => Boolean}] options
452
451
  # @option options [Boolean] :unique (true)
453
- # @return [Enumerator<Resource>]
452
+ # @return [Enumerator<RDF::Resource>]
454
453
  # @see #each_context
455
454
  # @see #enum_context
456
455
  def contexts(options = {})
@@ -464,7 +463,7 @@ module RDF
464
463
  ##
465
464
  # Returns `true` if `self` contains the given RDF context.
466
465
  #
467
- # @param [Resource] value
466
+ # @param [RDF::Resource] value
468
467
  # @return [Boolean]
469
468
  def has_context?(value)
470
469
  enum_context.include?(value)
@@ -479,7 +478,9 @@ module RDF
479
478
  #
480
479
  # @overload each_context
481
480
  # @yield [context]
482
- # @yieldparam [Resource] context
481
+ # each context term
482
+ # @yieldparam [RDF::Resource] context
483
+ # @yieldreturn [void] ignored
483
484
  # @return [void]
484
485
  #
485
486
  # @overload each_context
@@ -497,9 +498,8 @@ module RDF
497
498
  block.call(value)
498
499
  end
499
500
  end
500
- else
501
- enum_context
502
501
  end
502
+ enum_context
503
503
  end
504
504
 
505
505
  ##
@@ -510,7 +510,6 @@ module RDF
510
510
  def enum_context
511
511
  enum_for(:each_context)
512
512
  end
513
-
514
513
  alias_method :enum_contexts, :enum_context
515
514
 
516
515
  ##
@@ -522,7 +521,9 @@ module RDF
522
521
  #
523
522
  # @overload each_graph
524
523
  # @yield [graph]
525
- # @yieldparam [RDF::Graph] graph
524
+ # each graph
525
+ # @yieldparam [RDF::Graph] graph
526
+ # @yieldreturn [void] ignored
526
527
  # @return [void]
527
528
  #
528
529
  # @overload each_graph
@@ -537,9 +538,8 @@ module RDF
537
538
  each_context do |context|
538
539
  block.call(RDF::Graph.new(context, :data => self))
539
540
  end
540
- else
541
- enum_graph
542
541
  end
542
+ enum_graph
543
543
  end
544
544
 
545
545
  ##
@@ -551,7 +551,6 @@ module RDF
551
551
  def enum_graph
552
552
  enum_for(:each_graph)
553
553
  end
554
-
555
554
  alias_method :enum_graphs, :enum_graph
556
555
 
557
556
  ##
@@ -578,12 +577,13 @@ module RDF
578
577
  end
579
578
 
580
579
  ##
581
- # Returns all RDF objects indexed by their subjects and predicates.
580
+ # Returns all RDF object terms indexed by their subject and predicate
581
+ # terms.
582
582
  #
583
583
  # The return value is a `Hash` instance that has the structure:
584
584
  # `{subject => {predicate => [*objects]}}`.
585
585
  #
586
- # @return [Hash{Resource => Hash{URI => Array<Value>}}]
586
+ # @return [Hash]
587
587
  def to_hash
588
588
  result = {}
589
589
  each_statement do |statement|
@@ -613,5 +613,5 @@ module RDF
613
613
  def dump(*args)
614
614
  RDF::Writer.for(*args).dump(self)
615
615
  end
616
- end
617
- end
616
+ end # Enumerable
617
+ end # RDF
@@ -0,0 +1,26 @@
1
+ module RDF
2
+ ##
3
+ # A mixin that can be used to mark RDF repository implementations as
4
+ # indexable.
5
+ #
6
+ # @since 0.3.0
7
+ module Indexable
8
+ ##
9
+ # Returns `true` if `self` is indexed at present.
10
+ #
11
+ # @abstract
12
+ # @return [Boolean]
13
+ def indexed?
14
+ false
15
+ end
16
+
17
+ ##
18
+ # Indexes `self`.
19
+ #
20
+ # @abstract
21
+ # @return [void]
22
+ def index!
23
+ raise NotImplementedError, "#{self.class}#index!"
24
+ end
25
+ end # Indexable
26
+ end # RDF
@@ -95,7 +95,7 @@ module RDF
95
95
  raise TypeError.new("#{self} is immutable") if immutable?
96
96
 
97
97
  statements.each do |statement|
98
- if (statement = create_statement(statement))
98
+ if (statement = Statement.from(statement))
99
99
  delete([statement.subject, statement.predicate, nil])
100
100
  insert(statement) if statement.has_object?
101
101
  end
@@ -118,7 +118,7 @@ module RDF
118
118
  when value.respond_to?(:each_statement)
119
119
  delete_statements(value)
120
120
  nil
121
- when (statement = create_statement(value)).valid?
121
+ when (statement = Statement.from(value)).valid?
122
122
  statement
123
123
  else
124
124
  delete_statements(query(value))
@@ -22,21 +22,28 @@ module RDF
22
22
  #
23
23
  # @param [Query, Statement, Array(Value), Hash] pattern
24
24
  # @yield [statement]
25
- # @yieldparam [RDF::Statement]
26
- # @return [Enumerator<RDF::Statement>]
25
+ # @yieldparam [RDF::Statement] statement
26
+ # @return [Enumerator]
27
27
  # @see RDF::Queryable#query_pattern
28
28
  def query(pattern, &block)
29
- raise TypeError.new("#{self} is not readable") if respond_to?(:readable?) && !readable?
29
+ raise TypeError, "#{self} is not readable" if respond_to?(:readable?) && !readable?
30
30
 
31
31
  case pattern
32
+ # A basic graph pattern (BGP) query:
32
33
  when Query
33
- pattern.execute(self, &block)
34
+ if block_given?
35
+ query_execute(pattern, &block)
36
+ return self
37
+ else
38
+ return enum_for(:query_execute, pattern)
39
+ end
40
+
41
+ # A simple triple pattern query:
34
42
  else
35
43
  pattern = Query::Pattern.from(pattern)
36
-
37
44
  if block_given?
38
45
  query_pattern(pattern, &block)
39
- return nil
46
+ return self
40
47
  else
41
48
  enum = enum_for(:query_pattern, pattern)
42
49
  enum.extend(RDF::Queryable, RDF::Enumerable, RDF::Countable)
@@ -48,25 +55,56 @@ module RDF
48
55
  end
49
56
  end
50
57
 
58
+ ##
59
+ # Queries `self` using the given basic graph pattern (BGP) query,
60
+ # yielding each matched solution to the given block.
61
+ #
62
+ # Since RDF.rb 0.3.0, repository implementations can override this
63
+ # method in order to provide for storage-specific optimized graph
64
+ # pattern query execution.
65
+ #
66
+ # @param [RDF::Query] query
67
+ # the query to execute
68
+ # @yield [solution]
69
+ # @yieldparam [RDF::Query::Solution] solution
70
+ # @yieldreturn [void] ignored
71
+ # @return [void] ignored
72
+ # @see RDF::Queryable#query
73
+ # @see RDF::Query#execute
74
+ # @since 0.3.0
75
+ def query_execute(query, &block)
76
+ # By default, we let RDF.rb's built-in `RDF::Query#execute` handle BGP
77
+ # query execution by breaking down the query into its constituent
78
+ # triple patterns and invoking `RDF::Query::Pattern#execute` on each
79
+ # pattern.
80
+ query.execute(self, &block)
81
+ end
82
+ protected :query_execute
83
+
51
84
  ##
52
85
  # Queries `self` for RDF statements matching the given `pattern`,
53
86
  # yielding each matched statement to the given block.
54
87
  #
55
- # Since RDF.rb 0.2.0, this is the preferred method that subclasses of
56
- # `RDF::Repository` should override in order to provide an optimized
57
- # query implementation.
88
+ # Since RDF.rb 0.2.0, repository implementations should override this
89
+ # method in order to provide for storage-specific optimized triple
90
+ # pattern matching.
58
91
  #
59
92
  # @param [RDF::Query::Pattern] pattern
93
+ # the query pattern to match
60
94
  # @yield [statement]
61
- # @yieldparam [RDF::Statement]
62
- # @return [void]
95
+ # @yieldparam [RDF::Statement] statement
96
+ # @yieldreturn [void] ignored
97
+ # @return [void] ignored
63
98
  # @see RDF::Queryable#query
99
+ # @see RDF::Query::Pattern#execute
64
100
  # @since 0.2.0
65
101
  def query_pattern(pattern, &block)
102
+ # By default, we let Ruby's built-in `Enumerable#grep` handle the
103
+ # matching of statements by iterating over all statements and calling
104
+ # `RDF::Query::Pattern#===` on each statement.
66
105
  # @see http://ruby-doc.org/core/classes/Enumerable.html#M003121
67
106
  grep(pattern, &block)
68
107
  end
69
-
70
108
  protected :query_pattern
71
109
 
72
110
  ##
@@ -6,7 +6,7 @@ module RDF
6
6
  ##
7
7
  # Returns `true` if `self` is writable.
8
8
  #
9
- # @return [Boolean]
9
+ # @return [Boolean] `true` or `false`
10
10
  # @see RDF::Readable#readable?
11
11
  def writable?
12
12
  true
@@ -16,7 +16,7 @@ module RDF
16
16
  # Inserts RDF data into `self`.
17
17
  #
18
18
  # @param [RDF::Enumerable, RDF::Statement, #to_rdf] data
19
- # @return [Writable]
19
+ # @return [RDF::Writable] `self`
20
20
  def <<(data)
21
21
  case data
22
22
  when RDF::Reader
@@ -31,7 +31,7 @@ module RDF
31
31
  when data.respond_to?(:to_rdf) && !data.equal?(rdf = data.to_rdf)
32
32
  self << rdf
33
33
  else
34
- insert_statement(create_statement(data))
34
+ insert_statement(Statement.from(data))
35
35
  end
36
36
  end
37
37
 
@@ -42,14 +42,14 @@ module RDF
42
42
  # Inserts RDF statements into `self`.
43
43
  #
44
44
  # @param [Array<RDF::Statement>] statements
45
- # @return [Writable]
45
+ # @return [RDF::Writable] `self`
46
46
  def insert(*statements)
47
47
  statements.map! do |value|
48
48
  case
49
49
  when value.respond_to?(:each_statement)
50
50
  insert_statements(value)
51
51
  nil
52
- when (statement = create_statement(value)).valid?
52
+ when (statement = Statement.from(value)).valid?
53
53
  statement
54
54
  else
55
55
  raise ArgumentError.new("not a valid statement: #{value.inspect}")
@@ -60,7 +60,6 @@ module RDF
60
60
 
61
61
  return self
62
62
  end
63
-
64
63
  alias_method :insert!, :insert
65
64
 
66
65
  protected
@@ -119,6 +118,7 @@ module RDF
119
118
  #
120
119
  # @param [RDF::Enumerable] statements
121
120
  # @return [void]
121
+ # @since 0.1.6
122
122
  def insert_statements(statements)
123
123
  each = statements.respond_to?(:each_statement) ? :each_statement : :each
124
124
  statements.__send__(each) do |statement|
@@ -141,18 +141,7 @@ module RDF
141
141
  raise NotImplementedError.new("#{self.class}#insert_statement")
142
142
  end
143
143
 
144
- ##
145
- # Transforms various input into an `RDF::Statement` instance.
146
- #
147
- # @param [RDF::Statement, Hash, Array, #to_a] statement
148
- # @return [RDF::Statement]
149
- # @deprecated
150
- def create_statement(statement)
151
- Statement.from(statement)
152
- end
153
-
154
144
  protected :insert_statements
155
145
  protected :insert_statement
156
- protected :create_statement
157
- end
158
- end
146
+ end # Writable
147
+ end # RDF