rdf 0.2.3 → 0.3.0.pre

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 (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