rdf 3.1.15 → 3.2.1
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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/VERSION +1 -1
- data/lib/rdf/model/literal/double.rb +1 -0
- data/lib/rdf/model/literal.rb +6 -12
- data/lib/rdf/model/uri.rb +13 -5
- data/lib/rdf/nquads.rb +2 -2
- data/lib/rdf/ntriples/reader.rb +6 -6
- data/lib/rdf/ntriples/writer.rb +1 -1
- data/lib/rdf/reader.rb +1 -1
- data/lib/rdf/repository.rb +14 -94
- data/lib/rdf/transaction.rb +76 -2
- data/lib/rdf/util/file.rb +2 -2
- data/lib/rdf/util/logger.rb +8 -5
- data/lib/rdf/vocabulary.rb +8 -7
- data/lib/rdf/writer.rb +2 -2
- metadata +20 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: deb163eb0095fba5da13f3f9a03a8543cb244e4525a495f2585d49c98e72fffc
|
4
|
+
data.tar.gz: e146b2eeaf881c53cf4291362698440febbb6f45fb793c3369fc374a8909c97d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 568557c3d23702f3fb8f842d8b64a19f116403c1d21a1da6164b6ce83a8d8297556ac5d74e508916d9be6ff215de777d553591760db9ab79479d161e89a3d6a8
|
7
|
+
data.tar.gz: 7d90c6165c87710add8ed7b9359fdd38b617b1efac9c928885b88c78769d0b0a7a1898418b6a9c3d2d6e97a9eb7de61ae48047b9053e430eeb053b3ee5a75968
|
data/README.md
CHANGED
@@ -398,16 +398,16 @@ from BNode identity (i.e., they each entail the other)
|
|
398
398
|
|
399
399
|
## Dependencies
|
400
400
|
|
401
|
-
* [Ruby](https://ruby-lang.org/) (>= 2.
|
401
|
+
* [Ruby](https://ruby-lang.org/) (>= 2.6)
|
402
402
|
* [LinkHeader][] (>= 0.0.8)
|
403
|
-
* Soft dependency on [RestClient][] (>= 1
|
403
|
+
* Soft dependency on [RestClient][] (>= 2.1)
|
404
404
|
|
405
405
|
## Installation
|
406
406
|
|
407
407
|
The recommended installation method is via [RubyGems](https://rubygems.org/).
|
408
408
|
To install the latest official release of RDF.rb, do:
|
409
409
|
|
410
|
-
% [sudo] gem install rdf # Ruby 2+
|
410
|
+
% [sudo] gem install rdf # Ruby 2.6+
|
411
411
|
|
412
412
|
## Download
|
413
413
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1
|
1
|
+
3.2.1
|
@@ -43,6 +43,7 @@ module RDF; class Literal
|
|
43
43
|
# Can't use simple %f transformation due to special requirements from
|
44
44
|
# N3 tests in representation
|
45
45
|
@string = case
|
46
|
+
when @object.nil? then 'NaN'
|
46
47
|
when @object.nan? then 'NaN'
|
47
48
|
when @object.infinite? then @object.to_s[0...-'inity'.length].upcase
|
48
49
|
when @object.zero? then '0.0E0'
|
data/lib/rdf/model/literal.rb
CHANGED
@@ -166,12 +166,12 @@ module RDF
|
|
166
166
|
@object = value.freeze
|
167
167
|
@string = lexical if lexical
|
168
168
|
@string = value if !defined?(@string) && value.is_a?(String)
|
169
|
-
@string = @string.encode(Encoding::UTF_8).freeze if
|
170
|
-
@object = @string if
|
169
|
+
@string = @string.encode(Encoding::UTF_8).freeze if instance_variable_defined?(:@string)
|
170
|
+
@object = @string if instance_variable_defined?(:@string) && @object.is_a?(String)
|
171
171
|
@language = language.to_s.downcase.to_sym if language
|
172
172
|
@datatype = RDF::URI(datatype).freeze if datatype
|
173
173
|
@datatype ||= self.class.const_get(:DATATYPE) if self.class.const_defined?(:DATATYPE)
|
174
|
-
@datatype ||= @language ? RDF.langString : RDF::URI("http://www.w3.org/2001/XMLSchema#string")
|
174
|
+
@datatype ||= instance_variable_defined?(:@language) && @language ? RDF.langString : RDF::URI("http://www.w3.org/2001/XMLSchema#string")
|
175
175
|
end
|
176
176
|
|
177
177
|
##
|
@@ -179,7 +179,7 @@ module RDF
|
|
179
179
|
#
|
180
180
|
# @return [String]
|
181
181
|
def value
|
182
|
-
@string || to_s
|
182
|
+
instance_variable_defined?(:@string) && @string || to_s
|
183
183
|
end
|
184
184
|
|
185
185
|
##
|
@@ -431,12 +431,10 @@ module RDF
|
|
431
431
|
end
|
432
432
|
|
433
433
|
##
|
434
|
-
# Returns `true` if the
|
435
|
-
# return false instead of raise a type error.
|
434
|
+
# Returns `true` if the literals are comperable.
|
436
435
|
#
|
437
436
|
# Used for <=> operator.
|
438
437
|
#
|
439
|
-
# This behavior is intuited from SPARQL data-r2/expr-equal/eq-2-2
|
440
438
|
# @return [Boolean]
|
441
439
|
def comperable_datatype2?(other)
|
442
440
|
case self
|
@@ -445,13 +443,9 @@ module RDF
|
|
445
443
|
when RDF::Literal::Numeric, RDF::Literal::Boolean
|
446
444
|
true
|
447
445
|
else
|
448
|
-
|
449
|
-
self.language? || other.language? ||
|
450
|
-
self.datatype == other.datatype
|
446
|
+
false
|
451
447
|
end
|
452
448
|
else
|
453
|
-
self.plain? || other.plain? ||
|
454
|
-
self.language? || other.language? ||
|
455
449
|
self.datatype == other.datatype
|
456
450
|
end
|
457
451
|
end
|
data/lib/rdf/model/uri.rb
CHANGED
@@ -621,16 +621,22 @@ module RDF
|
|
621
621
|
end
|
622
622
|
|
623
623
|
##
|
624
|
-
# Returns a qualified name (QName) for this URI based on available vocabularies, if possible.
|
624
|
+
# Returns a qualified name (QName) as a tuple of `[prefix, suffix]` for this URI based on available vocabularies, if possible.
|
625
625
|
#
|
626
626
|
# @example
|
627
627
|
# RDF::URI('http://www.w3.org/2000/01/rdf-schema#').qname #=> [:rdfs, nil]
|
628
628
|
# RDF::URI('http://www.w3.org/2000/01/rdf-schema#label').qname #=> [:rdfs, :label]
|
629
629
|
# RDF::RDFS.label.qname #=> [:rdfs, :label]
|
630
630
|
#
|
631
|
+
# @param [Hash{Symbol => String}] prefixes
|
632
|
+
# Explicit set of prefixes to look for matches, defaults to loaded vocabularies.
|
631
633
|
# @return [Array(Symbol, Symbol)] or `nil` if no QName found
|
632
|
-
def qname
|
633
|
-
if
|
634
|
+
def qname(prefixes: nil)
|
635
|
+
if prefixes
|
636
|
+
prefixes.each do |prefix, uri|
|
637
|
+
return [prefix, self.to_s[uri.length..-1].to_sym] if self.start_with?(uri)
|
638
|
+
end
|
639
|
+
elsif self.to_s =~ %r([:/#]([^:/#]*)$)
|
634
640
|
local_name = $1
|
635
641
|
vocab_uri = local_name.empty? ? self.to_s : self.to_s[0...-(local_name.length)]
|
636
642
|
Vocabulary.each do |vocab|
|
@@ -655,9 +661,11 @@ module RDF
|
|
655
661
|
##
|
656
662
|
# Returns a string version of the QName or the full IRI
|
657
663
|
#
|
664
|
+
# @param [Hash{Symbol => String}] prefixes
|
665
|
+
# Explicit set of prefixes to look for matches, defaults to loaded vocabularies.
|
658
666
|
# @return [String] or `nil`
|
659
|
-
def pname
|
660
|
-
(q = self.qname) ? q.join(":") : to_s
|
667
|
+
def pname(prefixes: nil)
|
668
|
+
(q = self.qname(prefixes: prefixes)) ? q.join(":") : to_s
|
661
669
|
end
|
662
670
|
|
663
671
|
##
|
data/lib/rdf/nquads.rb
CHANGED
@@ -69,9 +69,9 @@ module RDF
|
|
69
69
|
|
70
70
|
begin
|
71
71
|
unless blank? || read_comment
|
72
|
-
subject = read_uriref || read_node ||
|
72
|
+
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
73
73
|
predicate = read_uriref(intern: true) || fail_predicate
|
74
|
-
object = read_uriref || read_node || read_literal ||
|
74
|
+
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
75
75
|
graph_name = read_uriref || read_node
|
76
76
|
if validate? && !read_eos
|
77
77
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
data/lib/rdf/ntriples/reader.rb
CHANGED
@@ -213,7 +213,7 @@ module RDF::NTriples
|
|
213
213
|
begin
|
214
214
|
read_statement
|
215
215
|
rescue RDF::ReaderError
|
216
|
-
value = read_uriref || read_node || read_literal ||
|
216
|
+
value = read_uriref || read_node || read_literal || read_quotedTriple
|
217
217
|
log_recover
|
218
218
|
value
|
219
219
|
end
|
@@ -229,9 +229,9 @@ module RDF::NTriples
|
|
229
229
|
|
230
230
|
begin
|
231
231
|
unless blank? || read_comment
|
232
|
-
subject = read_uriref || read_node ||
|
232
|
+
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
233
233
|
predicate = read_uriref(intern: true) || fail_predicate
|
234
|
-
object = read_uriref || read_node || read_literal ||
|
234
|
+
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
235
235
|
|
236
236
|
if validate? && !read_eos
|
237
237
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
@@ -247,11 +247,11 @@ module RDF::NTriples
|
|
247
247
|
|
248
248
|
##
|
249
249
|
# @return [RDF::Statement]
|
250
|
-
def
|
250
|
+
def read_quotedTriple
|
251
251
|
if @options[:rdfstar] && match(ST_START)
|
252
|
-
subject = read_uriref || read_node ||
|
252
|
+
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
253
253
|
predicate = read_uriref(intern: true) || fail_predicate
|
254
|
-
object = read_uriref || read_node || read_literal ||
|
254
|
+
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
255
255
|
if !match(ST_END)
|
256
256
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
257
257
|
end
|
data/lib/rdf/ntriples/writer.rb
CHANGED
@@ -227,7 +227,7 @@ module RDF::NTriples
|
|
227
227
|
# @param [RDF::Statement] statement
|
228
228
|
# @param [Hash{Symbol => Object}] options ({})
|
229
229
|
# @return [String]
|
230
|
-
def
|
230
|
+
def format_quotedTriple(statement, **options)
|
231
231
|
"<<%s %s %s>>" % statement.to_a.map { |value| format_term(value, **options) }
|
232
232
|
end
|
233
233
|
##
|
data/lib/rdf/reader.rb
CHANGED
@@ -647,7 +647,7 @@ module RDF
|
|
647
647
|
##
|
648
648
|
# @return [String]
|
649
649
|
def readline
|
650
|
-
@line = @line_rest || @input.readline
|
650
|
+
@line = instance_variable_defined?(:@line_rest) && @line_rest || @input.readline
|
651
651
|
@line, @line_rest = @line.split("\r", 2)
|
652
652
|
@line = String.new if @line.nil? # not frozen
|
653
653
|
@line.chomp!
|
data/lib/rdf/repository.rb
CHANGED
@@ -243,17 +243,16 @@ module RDF
|
|
243
243
|
#
|
244
244
|
# @see RDF::Repository
|
245
245
|
module Implementation
|
246
|
-
require 'hamster'
|
247
246
|
DEFAULT_GRAPH = false
|
248
247
|
|
249
248
|
##
|
250
249
|
# @private
|
251
250
|
def self.extend_object(obj)
|
252
251
|
obj.instance_variable_set(:@data, obj.options.delete(:data) ||
|
253
|
-
|
252
|
+
Hash.new)
|
254
253
|
obj.instance_variable_set(:@tx_class,
|
255
254
|
obj.options.delete(:transaction_class) ||
|
256
|
-
SerializedTransaction)
|
255
|
+
RDF::Transaction::SerializedTransaction)
|
257
256
|
super
|
258
257
|
end
|
259
258
|
|
@@ -263,7 +262,6 @@ module RDF
|
|
263
262
|
def supports?(feature)
|
264
263
|
case feature.to_sym
|
265
264
|
when :graph_name then @options[:with_graph_name]
|
266
|
-
when :inference then false # forward-chaining inference
|
267
265
|
when :validity then @options.fetch(:with_validity, true)
|
268
266
|
when :literal_equality then true
|
269
267
|
when :atomic_write then true
|
@@ -381,7 +379,7 @@ module RDF
|
|
381
379
|
##
|
382
380
|
# @see RDF::Dataset#isolation_level
|
383
381
|
def isolation_level
|
384
|
-
:
|
382
|
+
:snapshot
|
385
383
|
end
|
386
384
|
|
387
385
|
##
|
@@ -471,7 +469,7 @@ module RDF
|
|
471
469
|
# @private
|
472
470
|
# @see RDF::Mutable#clear
|
473
471
|
def clear_statements
|
474
|
-
@data = @data.
|
472
|
+
@data = @data.class.new
|
475
473
|
end
|
476
474
|
|
477
475
|
##
|
@@ -513,14 +511,11 @@ module RDF
|
|
513
511
|
unless statement_in?(data, statement)
|
514
512
|
s, p, o, c = statement.to_quad
|
515
513
|
c ||= DEFAULT_GRAPH
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
end
|
522
|
-
end
|
523
|
-
end
|
514
|
+
|
515
|
+
data = data.has_key?(c) ? data.dup : data.merge(c => {})
|
516
|
+
data[c] = data[c].has_key?(s) ? data[c].dup : data[c].merge(s => {})
|
517
|
+
data[c][s] = data[c][s].has_key?(p) ? data[c][s].dup : data[c][s].merge(p => {})
|
518
|
+
data[c][s][p] = data[c][s][p].merge(o => statement.options)
|
524
519
|
end
|
525
520
|
data
|
526
521
|
end
|
@@ -529,93 +524,18 @@ module RDF
|
|
529
524
|
# @private
|
530
525
|
# @return [Hamster::Hash] a new, updated hamster hash
|
531
526
|
def delete_from(data, statement)
|
532
|
-
if
|
527
|
+
if has_statement_in?(data, statement)
|
533
528
|
s, p, o, g = statement.to_quad
|
534
529
|
g = DEFAULT_GRAPH unless supports?(:graph_name)
|
535
530
|
g ||= DEFAULT_GRAPH
|
536
531
|
|
537
|
-
os = data[g][s][p].
|
538
|
-
ps = os.empty? ? data[g][s].
|
539
|
-
ss = ps.empty? ? data[g].
|
540
|
-
return ss.empty? ? data.
|
532
|
+
os = data[g][s][p].dup.delete_if {|k,v| k == o}
|
533
|
+
ps = os.empty? ? data[g][s].dup.delete_if {|k,v| k == p} : data[g][s].merge(p => os)
|
534
|
+
ss = ps.empty? ? data[g].dup.delete_if {|k,v| k == s} : data[g].merge(s => ps)
|
535
|
+
return ss.empty? ? data.dup.delete_if {|k,v| k == g} : data.merge(g => ss)
|
541
536
|
end
|
542
537
|
data
|
543
538
|
end
|
544
|
-
|
545
|
-
##
|
546
|
-
# A transaction for the Hamster-based `RDF::Repository::Implementation`
|
547
|
-
# with full serializability.
|
548
|
-
#
|
549
|
-
# @todo refactor me!
|
550
|
-
# @see RDF::Transaction
|
551
|
-
class SerializedTransaction < Transaction
|
552
|
-
##
|
553
|
-
# @see Transaction#initialize
|
554
|
-
def initialize(*args, **options, &block)
|
555
|
-
super(*args, **options, &block)
|
556
|
-
@base_snapshot = @snapshot
|
557
|
-
end
|
558
|
-
|
559
|
-
##
|
560
|
-
# Inserts the statement to the transaction's working snapshot.
|
561
|
-
#
|
562
|
-
# @see Transaction#insert_statement
|
563
|
-
def insert_statement(statement)
|
564
|
-
@snapshot = @snapshot.class
|
565
|
-
.new(data: @snapshot.send(:insert_to,
|
566
|
-
@snapshot.send(:data),
|
567
|
-
process_statement(statement)))
|
568
|
-
end
|
569
|
-
|
570
|
-
##
|
571
|
-
# Deletes the statement from the transaction's working snapshot.
|
572
|
-
#
|
573
|
-
# @see Transaction#insert_statement
|
574
|
-
def delete_statement(statement)
|
575
|
-
@snapshot = @snapshot.class
|
576
|
-
.new(data: @snapshot.send(:delete_from,
|
577
|
-
@snapshot.send(:data),
|
578
|
-
process_statement(statement)))
|
579
|
-
end
|
580
|
-
|
581
|
-
##
|
582
|
-
# @see RDF::Dataset#isolation_level
|
583
|
-
def isolation_level
|
584
|
-
:serializable
|
585
|
-
end
|
586
|
-
|
587
|
-
##
|
588
|
-
# @note this is a simple object equality check.
|
589
|
-
#
|
590
|
-
# @see RDF::Transaction#mutated?
|
591
|
-
def mutated?
|
592
|
-
!@snapshot.send(:data).equal?(repository.send(:data))
|
593
|
-
end
|
594
|
-
|
595
|
-
##
|
596
|
-
# Replaces repository data with the transaction's snapshot in a safely
|
597
|
-
# serializable fashion.
|
598
|
-
#
|
599
|
-
# @note this transaction uses a pessimistic merge strategy which
|
600
|
-
# fails the transaction if any data has changed in the repository
|
601
|
-
# since transaction start time. However, the specific guarantee is
|
602
|
-
# softer: multiple concurrent conflicting transactions will not
|
603
|
-
# succeed. We may choose to implement a less pessimistic merge
|
604
|
-
# strategy as a non-breaking change.
|
605
|
-
#
|
606
|
-
# @raise [TransactionError] when the transaction can't be merged.
|
607
|
-
# @see Transaction#execute
|
608
|
-
def execute
|
609
|
-
raise TransactionError, 'Cannot execute a rolled back transaction. ' \
|
610
|
-
'Open a new one instead.' if @rolledback
|
611
|
-
|
612
|
-
raise TransactionError, 'Error merging transaction. Repository' \
|
613
|
-
'has changed during transaction time.' unless
|
614
|
-
repository.send(:data).equal? @base_snapshot.send(:data)
|
615
|
-
|
616
|
-
repository.send(:data=, @snapshot.send(:data))
|
617
|
-
end
|
618
|
-
end
|
619
539
|
end # Implementation
|
620
540
|
end # Repository
|
621
541
|
end # RDF
|
data/lib/rdf/transaction.rb
CHANGED
@@ -247,7 +247,7 @@ module RDF
|
|
247
247
|
# @raise [TransactionError] if the transaction can't be applied
|
248
248
|
def execute
|
249
249
|
raise TransactionError, 'Cannot execute a rolled back transaction. ' \
|
250
|
-
'Open a new one instead.' if @rolledback
|
250
|
+
'Open a new one instead.' if instance_variable_defined?(:@rolledback) && @rolledback
|
251
251
|
@changes.apply(@repository)
|
252
252
|
end
|
253
253
|
|
@@ -322,7 +322,81 @@ module RDF
|
|
322
322
|
end
|
323
323
|
|
324
324
|
public
|
325
|
-
|
325
|
+
|
326
|
+
##
|
327
|
+
# A transaction with full serializability.
|
328
|
+
#
|
329
|
+
# @todo refactor me!
|
330
|
+
# @see RDF::Transaction
|
331
|
+
class SerializedTransaction < Transaction
|
332
|
+
##
|
333
|
+
# @see Transaction#initialize
|
334
|
+
def initialize(*args, **options, &block)
|
335
|
+
super(*args, **options, &block)
|
336
|
+
@base_snapshot = @snapshot
|
337
|
+
end
|
338
|
+
|
339
|
+
##
|
340
|
+
# Inserts the statement to the transaction's working snapshot.
|
341
|
+
#
|
342
|
+
# @see Transaction#insert_statement
|
343
|
+
def insert_statement(statement)
|
344
|
+
@snapshot = @snapshot.class
|
345
|
+
.new(data: @snapshot.send(:insert_to,
|
346
|
+
@snapshot.send(:data),
|
347
|
+
process_statement(statement)))
|
348
|
+
end
|
349
|
+
|
350
|
+
##
|
351
|
+
# Deletes the statement from the transaction's working snapshot.
|
352
|
+
#
|
353
|
+
# @see Transaction#insert_statement
|
354
|
+
def delete_statement(statement)
|
355
|
+
@snapshot = @snapshot.class
|
356
|
+
.new(data: @snapshot.send(:delete_from,
|
357
|
+
@snapshot.send(:data),
|
358
|
+
process_statement(statement)))
|
359
|
+
end
|
360
|
+
|
361
|
+
##
|
362
|
+
# @see RDF::Dataset#isolation_level
|
363
|
+
def isolation_level
|
364
|
+
:serializable
|
365
|
+
end
|
366
|
+
|
367
|
+
##
|
368
|
+
# @note this is a simple object equality check.
|
369
|
+
#
|
370
|
+
# @see RDF::Transaction#mutated?
|
371
|
+
def mutated?
|
372
|
+
!@snapshot.send(:data).equal?(repository.send(:data))
|
373
|
+
end
|
374
|
+
|
375
|
+
##
|
376
|
+
# Replaces repository data with the transaction's snapshot in a safely
|
377
|
+
# serializable fashion.
|
378
|
+
#
|
379
|
+
# @note this transaction uses a pessimistic merge strategy which
|
380
|
+
# fails the transaction if any data has changed in the repository
|
381
|
+
# since transaction start time. However, the specific guarantee is
|
382
|
+
# softer: multiple concurrent conflicting transactions will not
|
383
|
+
# succeed. We may choose to implement a less pessimistic merge
|
384
|
+
# strategy as a non-breaking change.
|
385
|
+
#
|
386
|
+
# @raise [TransactionError] when the transaction can't be merged.
|
387
|
+
# @see Transaction#execute
|
388
|
+
def execute
|
389
|
+
raise TransactionError, 'Cannot execute a rolled back transaction. ' \
|
390
|
+
'Open a new one instead.' if instance_variable_defined?(:@rolledback) && @rolledback
|
391
|
+
|
392
|
+
raise TransactionError, 'Error merging transaction. Repository' \
|
393
|
+
'has changed during transaction time.' unless
|
394
|
+
repository.send(:data).equal? @base_snapshot.send(:data)
|
395
|
+
|
396
|
+
repository.send(:data=, @snapshot.send(:data))
|
397
|
+
end
|
398
|
+
end # SerializedTransaction
|
399
|
+
|
326
400
|
##
|
327
401
|
# An error class for transaction failures.
|
328
402
|
#
|
data/lib/rdf/util/file.rb
CHANGED
@@ -98,7 +98,7 @@ module RDF; module Util
|
|
98
98
|
headers: response.headers
|
99
99
|
}
|
100
100
|
|
101
|
-
|
101
|
+
RemoteDocument.new(response.body, document_options)
|
102
102
|
when 300..399
|
103
103
|
# Document base is redirected location
|
104
104
|
# Location may be relative
|
@@ -215,7 +215,7 @@ module RDF; module Util
|
|
215
215
|
headers: response.headers
|
216
216
|
}
|
217
217
|
|
218
|
-
|
218
|
+
RemoteDocument.new(response.body, document_options)
|
219
219
|
else
|
220
220
|
raise IOError, "<#{base_uri}>: #{response.status}"
|
221
221
|
end
|
data/lib/rdf/util/logger.rb
CHANGED
@@ -17,17 +17,20 @@ module RDF; module Util
|
|
17
17
|
# @param [Hash{Symbol => Object}] options
|
18
18
|
# @option options [Logger, #<<] :logger
|
19
19
|
# @return [Logger, #write, #<<]
|
20
|
-
def logger(**options)
|
21
|
-
|
22
|
-
|
20
|
+
def logger(logger: nil, **options)
|
21
|
+
# Guard against undefined instance variables, which may be a warning if used.
|
22
|
+
@options = {} unless instance_variable_defined?(:@options) || frozen?
|
23
|
+
logger ||= @logger if instance_variable_defined?(:@logger)
|
24
|
+
logger = @options[:logger] if logger.nil? && instance_variable_defined?(:@options) && @options
|
23
25
|
if logger.nil?
|
24
26
|
# Unless otherwise specified, use $stderr
|
25
|
-
logger =
|
27
|
+
logger = IOWrapper.new($stderr)
|
26
28
|
|
27
29
|
# Reset log_statistics so that it's not inherited across different instances
|
28
30
|
logger.log_statistics.clear if logger.respond_to?(:log_statistics)
|
29
31
|
end
|
30
|
-
logger =
|
32
|
+
logger = ::Logger.new(::File.open(::File::NULL, "w")) unless logger # Incase false was used, which is frozen
|
33
|
+
@options[:logger] ||= logger if instance_variable_defined?(:@options)
|
31
34
|
logger.extend(LoggerBehavior) unless logger.is_a?(LoggerBehavior)
|
32
35
|
logger
|
33
36
|
end
|
data/lib/rdf/vocabulary.rb
CHANGED
@@ -70,7 +70,7 @@ module RDF
|
|
70
70
|
# @return [Enumerator]
|
71
71
|
def each(&block)
|
72
72
|
if self.equal?(Vocabulary)
|
73
|
-
if @vocabs
|
73
|
+
if instance_variable_defined?(:@vocabs) && @vocabs
|
74
74
|
@vocabs.select(&:name).each(&block)
|
75
75
|
else
|
76
76
|
# This is needed since all vocabulary classes are defined using
|
@@ -356,7 +356,7 @@ module RDF
|
|
356
356
|
def ontology(*args)
|
357
357
|
case args.length
|
358
358
|
when 0
|
359
|
-
@ontology
|
359
|
+
@ontology if instance_variable_defined?(:@ontology)
|
360
360
|
else
|
361
361
|
uri, options = args
|
362
362
|
URI.cache.delete(uri.to_s.to_sym) # Clear any previous entry
|
@@ -507,7 +507,7 @@ module RDF
|
|
507
507
|
end
|
508
508
|
|
509
509
|
# Also include the ontology, if it's not also a property
|
510
|
-
@ontology.each_statement(&block) if
|
510
|
+
@ontology.each_statement(&block) if self.ontology && self.ontology != self
|
511
511
|
end
|
512
512
|
|
513
513
|
##
|
@@ -574,6 +574,7 @@ module RDF
|
|
574
574
|
term_defs
|
575
575
|
end
|
576
576
|
|
577
|
+
#require 'byebug'; byebug
|
577
578
|
# Pass over embedded_defs with anonymous references, once
|
578
579
|
embedded_defs.each do |term, attributes|
|
579
580
|
attributes.each do |ak, avs|
|
@@ -1234,16 +1235,16 @@ module RDF
|
|
1234
1235
|
values = values.map do |value|
|
1235
1236
|
if value.is_a?(Literal) && %w(: comment definition notation note editorialNote).include?(k.to_s)
|
1236
1237
|
"%(#{value.to_s.gsub('(', '\(').gsub(')', '\)')}).freeze"
|
1237
|
-
|
1238
|
-
|
1238
|
+
elsif value.node? && value.is_a?(RDF::Vocabulary::Term)
|
1239
|
+
"#{value.to_ruby(indent: indent + " ")}.freeze"
|
1239
1240
|
elsif value.is_a?(RDF::Term)
|
1240
1241
|
"#{value.to_s.inspect}.freeze"
|
1241
1242
|
elsif value.is_a?(RDF::List)
|
1242
1243
|
list_elements = value.map do |u|
|
1243
1244
|
if u.uri?
|
1244
1245
|
"#{u.to_s.inspect}.freeze"
|
1245
|
-
|
1246
|
-
|
1246
|
+
elsif u.node? && u.respond_to?(:to_ruby)
|
1247
|
+
u.to_ruby(indent: indent + " ")
|
1247
1248
|
else
|
1248
1249
|
"#{u.to_s.inspect}.freeze"
|
1249
1250
|
end
|
data/lib/rdf/writer.rb
CHANGED
@@ -516,7 +516,7 @@ module RDF
|
|
516
516
|
when RDF::Literal then format_literal(term, **options)
|
517
517
|
when RDF::URI then format_uri(term, **options)
|
518
518
|
when RDF::Node then format_node(term, **options)
|
519
|
-
when RDF::Statement then
|
519
|
+
when RDF::Statement then format_quotedTriple(term, **options)
|
520
520
|
else nil
|
521
521
|
end
|
522
522
|
end
|
@@ -574,7 +574,7 @@ module RDF
|
|
574
574
|
# @return [String]
|
575
575
|
# @raise [NotImplementedError] unless implemented in subclass
|
576
576
|
# @abstract
|
577
|
-
def
|
577
|
+
def format_quotedTriple(value, **options)
|
578
578
|
raise NotImplementedError.new("#{self.class}#format_statement") # override in subclasses
|
579
579
|
end
|
580
580
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1
|
4
|
+
version: 3.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-12-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: link_header
|
@@ -32,76 +32,62 @@ dependencies:
|
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 0.0.8
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: hamster
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '3.0'
|
42
|
-
type: :runtime
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '3.0'
|
49
35
|
- !ruby/object:Gem::Dependency
|
50
36
|
name: rdf-spec
|
51
37
|
requirement: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
39
|
- - "~>"
|
54
40
|
- !ruby/object:Gem::Version
|
55
|
-
version: '3.
|
41
|
+
version: '3.2'
|
56
42
|
type: :development
|
57
43
|
prerelease: false
|
58
44
|
version_requirements: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
46
|
- - "~>"
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version: '3.
|
48
|
+
version: '3.2'
|
63
49
|
- !ruby/object:Gem::Dependency
|
64
50
|
name: rdf-turtle
|
65
51
|
requirement: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
53
|
- - "~>"
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
55
|
+
version: '3.2'
|
70
56
|
type: :development
|
71
57
|
prerelease: false
|
72
58
|
version_requirements: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
60
|
- - "~>"
|
75
61
|
- !ruby/object:Gem::Version
|
76
|
-
version: '3.
|
62
|
+
version: '3.2'
|
77
63
|
- !ruby/object:Gem::Dependency
|
78
64
|
name: rdf-vocab
|
79
65
|
requirement: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
67
|
- - "~>"
|
82
68
|
- !ruby/object:Gem::Version
|
83
|
-
version: '3.
|
69
|
+
version: '3.2'
|
84
70
|
type: :development
|
85
71
|
prerelease: false
|
86
72
|
version_requirements: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
74
|
- - "~>"
|
89
75
|
- !ruby/object:Gem::Version
|
90
|
-
version: '3.
|
76
|
+
version: '3.2'
|
91
77
|
- !ruby/object:Gem::Dependency
|
92
78
|
name: rdf-xsd
|
93
79
|
requirement: !ruby/object:Gem::Requirement
|
94
80
|
requirements:
|
95
81
|
- - "~>"
|
96
82
|
- !ruby/object:Gem::Version
|
97
|
-
version: '3.
|
83
|
+
version: '3.2'
|
98
84
|
type: :development
|
99
85
|
prerelease: false
|
100
86
|
version_requirements: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
88
|
- - "~>"
|
103
89
|
- !ruby/object:Gem::Version
|
104
|
-
version: '3.
|
90
|
+
version: '3.2'
|
105
91
|
- !ruby/object:Gem::Dependency
|
106
92
|
name: rest-client
|
107
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,14 +108,14 @@ dependencies:
|
|
122
108
|
requirements:
|
123
109
|
- - "~>"
|
124
110
|
- !ruby/object:Gem::Version
|
125
|
-
version: '3.
|
111
|
+
version: '3.10'
|
126
112
|
type: :development
|
127
113
|
prerelease: false
|
128
114
|
version_requirements: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
116
|
- - "~>"
|
131
117
|
- !ruby/object:Gem::Version
|
132
|
-
version: '3.
|
118
|
+
version: '3.10'
|
133
119
|
- !ruby/object:Gem::Dependency
|
134
120
|
name: rspec-its
|
135
121
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,14 +136,14 @@ dependencies:
|
|
150
136
|
requirements:
|
151
137
|
- - "~>"
|
152
138
|
- !ruby/object:Gem::Version
|
153
|
-
version: '3.
|
139
|
+
version: '3.14'
|
154
140
|
type: :development
|
155
141
|
prerelease: false
|
156
142
|
version_requirements: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - "~>"
|
159
145
|
- !ruby/object:Gem::Version
|
160
|
-
version: '3.
|
146
|
+
version: '3.14'
|
161
147
|
- !ruby/object:Gem::Dependency
|
162
148
|
name: yard
|
163
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,28 +164,28 @@ dependencies:
|
|
178
164
|
requirements:
|
179
165
|
- - "~>"
|
180
166
|
- !ruby/object:Gem::Version
|
181
|
-
version: '1.
|
167
|
+
version: '1.8'
|
182
168
|
type: :development
|
183
169
|
prerelease: false
|
184
170
|
version_requirements: !ruby/object:Gem::Requirement
|
185
171
|
requirements:
|
186
172
|
- - "~>"
|
187
173
|
- !ruby/object:Gem::Version
|
188
|
-
version: '1.
|
174
|
+
version: '1.8'
|
189
175
|
- !ruby/object:Gem::Dependency
|
190
176
|
name: faraday_middleware
|
191
177
|
requirement: !ruby/object:Gem::Requirement
|
192
178
|
requirements:
|
193
179
|
- - "~>"
|
194
180
|
- !ruby/object:Gem::Version
|
195
|
-
version: '1.
|
181
|
+
version: '1.2'
|
196
182
|
type: :development
|
197
183
|
prerelease: false
|
198
184
|
version_requirements: !ruby/object:Gem::Requirement
|
199
185
|
requirements:
|
200
186
|
- - "~>"
|
201
187
|
- !ruby/object:Gem::Version
|
202
|
-
version: '1.
|
188
|
+
version: '1.2'
|
203
189
|
description: RDF.rb is a pure-Ruby library for working with Resource Description Framework
|
204
190
|
(RDF) data.
|
205
191
|
email: public-rdf-ruby@w3.org
|
@@ -296,14 +282,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
296
282
|
requirements:
|
297
283
|
- - ">="
|
298
284
|
- !ruby/object:Gem::Version
|
299
|
-
version: '2.
|
285
|
+
version: '2.6'
|
300
286
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
301
287
|
requirements:
|
302
288
|
- - ">="
|
303
289
|
- !ruby/object:Gem::Version
|
304
290
|
version: '0'
|
305
291
|
requirements: []
|
306
|
-
rubygems_version: 3.
|
292
|
+
rubygems_version: 3.3.3
|
307
293
|
signing_key:
|
308
294
|
specification_version: 4
|
309
295
|
summary: A Ruby library for working with Resource Description Framework (RDF) data.
|