rdf 3.1.9 → 3.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/rdf/cli.rb +3 -3
- data/lib/rdf/mixin/enumerable.rb +46 -28
- data/lib/rdf/mixin/mutable.rb +1 -1
- data/lib/rdf/model/dataset.rb +1 -1
- data/lib/rdf/model/graph.rb +14 -7
- data/lib/rdf/model/literal.rb +14 -14
- data/lib/rdf/model/literal/date.rb +5 -3
- data/lib/rdf/model/literal/datetime.rb +11 -7
- data/lib/rdf/model/literal/time.rb +7 -5
- data/lib/rdf/model/statement.rb +36 -23
- data/lib/rdf/model/term.rb +8 -0
- data/lib/rdf/model/uri.rb +11 -10
- data/lib/rdf/ntriples/writer.rb +2 -2
- data/lib/rdf/query/pattern.rb +7 -7
- data/lib/rdf/query/solution.rb +8 -6
- data/lib/rdf/query/solutions.rb +5 -3
- data/lib/rdf/repository.rb +29 -20
- data/lib/rdf/transaction.rb +9 -3
- data/lib/rdf/util/cache.rb +4 -3
- data/lib/rdf/util/logger.rb +1 -1
- data/lib/rdf/vocabulary.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5de713395026fd70491ac47ef4c5c89e63681bccf27d8b9e39fe21fcf63c1344
|
4
|
+
data.tar.gz: a2bc97b12d11858f4089fba2915f358ba28db0bb4704ce70e668f17c80e9a739
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 334cf936abb27e4c0a8fe225c4bd309b455ab96fcf1e79369abe3a763b28e922172b5d477a9a2112677f3ae21d8b3a0fdb9696d6d89bb6ce85bf49831464f611
|
7
|
+
data.tar.gz: 76d46e91f93f70e021f482b089fb4a5afebb955e835d89965e270688a46fb938a5b1e334d2c0e5d9992a149de97bb84c5f14e8f4da62019aaa7bec7fcb7f582e
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ This is a pure-Ruby library for working with [Resource Description Framework
|
|
7
7
|
|
8
8
|
[![Gem Version](https://badge.fury.io/rb/rdf.png)](https://badge.fury.io/rb/rdf)
|
9
9
|
[![Build Status](https://github.com/ruby-rdf/rdf/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf/actions?query=workflow%3ACI)
|
10
|
-
[![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf/badge.svg)](https://coveralls.io/github/ruby-rdf/rdf)
|
10
|
+
[![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf?branch=develop)
|
11
11
|
[![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
|
12
12
|
|
13
13
|
## Features
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.10
|
data/lib/rdf/cli.rb
CHANGED
@@ -333,7 +333,7 @@ module RDF
|
|
333
333
|
|
334
334
|
# Add format-specific reader options
|
335
335
|
reader.options.each do |cli_opt|
|
336
|
-
next if options.options.
|
336
|
+
next if options.options.key?(cli_opt.symbol)
|
337
337
|
on_args = cli_opt.on || []
|
338
338
|
on_args << cli_opt.description if cli_opt.description
|
339
339
|
options.on(*on_args) do |opt_arg|
|
@@ -355,7 +355,7 @@ module RDF
|
|
355
355
|
|
356
356
|
# Add format-specific writer options
|
357
357
|
writer.options.each do |cli_opt|
|
358
|
-
next if options.options.
|
358
|
+
next if options.options.key?(cli_opt.symbol)
|
359
359
|
on_args = cli_opt.on || []
|
360
360
|
on_args << cli_opt.description if cli_opt.description
|
361
361
|
options.on(*on_args) do |opt_arg|
|
@@ -419,7 +419,7 @@ module RDF
|
|
419
419
|
end
|
420
420
|
|
421
421
|
cli_opts.each do |cli_opt|
|
422
|
-
next if opts.
|
422
|
+
next if opts.key?(cli_opt.symbol)
|
423
423
|
on_args = cli_opt.on || []
|
424
424
|
on_args << cli_opt.description if cli_opt.description
|
425
425
|
options.on(*on_args) do |arg|
|
data/lib/rdf/mixin/enumerable.rb
CHANGED
@@ -12,15 +12,15 @@ module RDF
|
|
12
12
|
# enumerable.count
|
13
13
|
#
|
14
14
|
# @example Checking whether a specific statement exists
|
15
|
-
# enumerable.
|
16
|
-
# enumerable.
|
17
|
-
# enumerable.
|
15
|
+
# enumerable.statement?(RDF::Statement(subject, predicate, object))
|
16
|
+
# enumerable.triple?([subject, predicate, object])
|
17
|
+
# enumerable.quad?([subject, predicate, object, graph_name])
|
18
18
|
#
|
19
19
|
# @example Checking whether a specific value exists
|
20
|
-
# enumerable.
|
21
|
-
# enumerable.
|
22
|
-
# enumerable.
|
23
|
-
# enumerable.
|
20
|
+
# enumerable.subject?(RDF::URI("https://rubygems.org/gems/rdf"))
|
21
|
+
# enumerable.predicate?(RDF::RDFS.label)
|
22
|
+
# enumerable.object?(RDF::Literal("A Ruby library for working with Resource Description Framework (RDF) data.", language: :en))
|
23
|
+
# enumerable.graph?(RDF::URI("http://ar.to/#self"))
|
24
24
|
#
|
25
25
|
# @example Enumerating all statements
|
26
26
|
# enumerable.each_statement do |statement|
|
@@ -127,14 +127,20 @@ module RDF
|
|
127
127
|
end
|
128
128
|
|
129
129
|
##
|
130
|
-
#
|
130
|
+
# @overload statement?
|
131
|
+
# Returns `false` indicating this is not an RDF::Statemenet.
|
132
|
+
# @return [Boolean]
|
133
|
+
# @see RDF::Value#statement?
|
134
|
+
# @overload statement?(statement)
|
135
|
+
# Returns `true` if `self` contains the given RDF statement.
|
131
136
|
#
|
132
|
-
#
|
133
|
-
#
|
134
|
-
def
|
135
|
-
!enum_statement.find { |s| s.eql?(statement) }.nil?
|
137
|
+
# @param [RDF::Statement] statement
|
138
|
+
# @return [Boolean]
|
139
|
+
def statement?(statement = nil)
|
140
|
+
statement && !enum_statement.find { |s| s.eql?(statement) }.nil?
|
136
141
|
end
|
137
|
-
alias_method :
|
142
|
+
alias_method :has_statement?, :statement?
|
143
|
+
alias_method :include?, :statement?
|
138
144
|
|
139
145
|
##
|
140
146
|
# Iterates the given block for each RDF statement.
|
@@ -194,9 +200,10 @@ module RDF
|
|
194
200
|
#
|
195
201
|
# @param [Array(RDF::Resource, RDF::URI, RDF::Term)] triple
|
196
202
|
# @return [Boolean]
|
197
|
-
def
|
203
|
+
def triple?(triple)
|
198
204
|
triples.include?(triple)
|
199
205
|
end
|
206
|
+
alias_method :has_triple?, :triple?
|
200
207
|
|
201
208
|
##
|
202
209
|
# Iterates the given block for each RDF triple.
|
@@ -255,9 +262,10 @@ module RDF
|
|
255
262
|
#
|
256
263
|
# @param [Array(RDF::Resource, RDF::URI, RDF::Term, RDF::Resource)] quad
|
257
264
|
# @return [Boolean]
|
258
|
-
def
|
265
|
+
def quad?(quad)
|
259
266
|
quads.include?(quad)
|
260
267
|
end
|
268
|
+
alias_method :has_quad?, :quad?
|
261
269
|
|
262
270
|
##
|
263
271
|
# Iterates the given block for each RDF quad.
|
@@ -321,9 +329,10 @@ module RDF
|
|
321
329
|
#
|
322
330
|
# @param [RDF::Resource] value
|
323
331
|
# @return [Boolean]
|
324
|
-
def
|
332
|
+
def subject?(value)
|
325
333
|
enum_subject.include?(value)
|
326
334
|
end
|
335
|
+
alias_method :has_subject?, :subject?
|
327
336
|
|
328
337
|
##
|
329
338
|
# Iterates the given block for each unique RDF subject term.
|
@@ -386,9 +395,10 @@ module RDF
|
|
386
395
|
#
|
387
396
|
# @param [RDF::URI] value
|
388
397
|
# @return [Boolean]
|
389
|
-
def
|
398
|
+
def predicate?(value)
|
390
399
|
enum_predicate.include?(value)
|
391
400
|
end
|
401
|
+
alias_method :has_predicate?, :predicate?
|
392
402
|
|
393
403
|
##
|
394
404
|
# Iterates the given block for each unique RDF predicate term.
|
@@ -451,9 +461,10 @@ module RDF
|
|
451
461
|
#
|
452
462
|
# @param [RDF::Term] value
|
453
463
|
# @return [Boolean]
|
454
|
-
def
|
464
|
+
def object?(value)
|
455
465
|
enum_object.include?(value)
|
456
466
|
end
|
467
|
+
alias_method :has_object?, :object?
|
457
468
|
|
458
469
|
##
|
459
470
|
# Iterates the given block for each unique RDF object term.
|
@@ -511,7 +522,7 @@ module RDF
|
|
511
522
|
def terms(unique: true)
|
512
523
|
unless unique
|
513
524
|
enum_statement.
|
514
|
-
map(&:
|
525
|
+
map(&:terms).
|
515
526
|
flatten.
|
516
527
|
compact
|
517
528
|
else
|
@@ -520,14 +531,20 @@ module RDF
|
|
520
531
|
end
|
521
532
|
|
522
533
|
##
|
523
|
-
#
|
534
|
+
# @overload term?
|
535
|
+
# Returns `false` indicating this is not an RDF::Statemenet.
|
536
|
+
# @see RDF::Value#statement?
|
537
|
+
# @return [Boolean]
|
538
|
+
# @overload term?(value)
|
539
|
+
# Returns `true` if `self` contains the given RDF subject term.
|
524
540
|
#
|
525
|
-
#
|
526
|
-
#
|
527
|
-
#
|
528
|
-
def
|
529
|
-
enum_term.include?(value)
|
541
|
+
# @param [RDF::Resource] value
|
542
|
+
# @return [Boolean]
|
543
|
+
# @since 2.0
|
544
|
+
def term?(value = nil)
|
545
|
+
value && enum_term.include?(value)
|
530
546
|
end
|
547
|
+
alias_method :has_term?, :term?
|
531
548
|
|
532
549
|
##
|
533
550
|
# Iterates the given block for each unique RDF term (subject, predicate, object, or graph_name).
|
@@ -551,8 +568,8 @@ module RDF
|
|
551
568
|
if block_given?
|
552
569
|
values = {}
|
553
570
|
each_statement do |statement|
|
554
|
-
statement.
|
555
|
-
unless
|
571
|
+
statement.terms.each do |value|
|
572
|
+
unless values.include?(value.hash)
|
556
573
|
values[value.hash] = true
|
557
574
|
yield value
|
558
575
|
end
|
@@ -595,9 +612,10 @@ module RDF
|
|
595
612
|
# @param [RDF::Resource, false] graph_name
|
596
613
|
# Use value `false` to query for the default graph_name
|
597
614
|
# @return [Boolean]
|
598
|
-
def
|
615
|
+
def graph?(graph_name)
|
599
616
|
enum_statement.any? {|s| s.graph_name == graph_name}
|
600
617
|
end
|
618
|
+
alias_method :has_graph?, :graph?
|
601
619
|
|
602
620
|
##
|
603
621
|
# Limits statements to be from a specific graph.
|
data/lib/rdf/mixin/mutable.rb
CHANGED
@@ -122,7 +122,7 @@ module RDF
|
|
122
122
|
|
123
123
|
statements.each do |statement|
|
124
124
|
if (statement = Statement.from(statement))
|
125
|
-
if statement.
|
125
|
+
if statement.object?
|
126
126
|
delete_insert([[statement.subject, statement.predicate, nil]], [statement])
|
127
127
|
else
|
128
128
|
delete([statement.subject, statement.predicate, nil])
|
data/lib/rdf/model/dataset.rb
CHANGED
data/lib/rdf/model/graph.rb
CHANGED
@@ -215,18 +215,25 @@ module RDF
|
|
215
215
|
end
|
216
216
|
|
217
217
|
##
|
218
|
-
#
|
218
|
+
# @overload statement?
|
219
|
+
# Returns `false` indicating this is not an RDF::Statemenet.
|
220
|
+
# @see RDF::Value#statement?
|
221
|
+
# @return [Boolean]
|
222
|
+
# @overload statement?(statement)
|
223
|
+
# Returns `true` if this graph contains the given RDF statement.
|
219
224
|
#
|
220
|
-
#
|
225
|
+
# A statement is in a graph if the statement if it has the same triples without regard to graph_name.
|
221
226
|
#
|
222
|
-
#
|
223
|
-
#
|
224
|
-
#
|
225
|
-
def
|
227
|
+
# @param [Statement] statement
|
228
|
+
# @return [Boolean]
|
229
|
+
# @see RDF::Enumerable#statement?
|
230
|
+
def statement?(statement = nil)
|
231
|
+
return false if statement.nil?
|
226
232
|
statement = statement.dup
|
227
233
|
statement.graph_name = graph_name
|
228
|
-
@data.
|
234
|
+
@data.statement?(statement)
|
229
235
|
end
|
236
|
+
alias_method :has_statement?, :statement?
|
230
237
|
|
231
238
|
##
|
232
239
|
# Enumerates each RDF statement in this graph.
|
data/lib/rdf/model/literal.rb
CHANGED
@@ -25,7 +25,7 @@ module RDF
|
|
25
25
|
#
|
26
26
|
# @example Creating a language-tagged literal (1)
|
27
27
|
# value = RDF::Literal.new("Hello!", language: :en)
|
28
|
-
# value.
|
28
|
+
# value.language? #=> true
|
29
29
|
# value.language #=> :en
|
30
30
|
#
|
31
31
|
# @example Creating a language-tagged literal (2)
|
@@ -35,12 +35,12 @@ module RDF
|
|
35
35
|
#
|
36
36
|
# @example Creating an explicitly datatyped literal
|
37
37
|
# value = RDF::Literal.new("2009-12-31", datatype: RDF::XSD.date)
|
38
|
-
# value.
|
38
|
+
# value.datatype? #=> true
|
39
39
|
# value.datatype #=> RDF::XSD.date
|
40
40
|
#
|
41
41
|
# @example Creating an implicitly datatyped literal
|
42
42
|
# value = RDF::Literal.new(Date.today)
|
43
|
-
# value.
|
43
|
+
# value.datatype? #=> true
|
44
44
|
# value.datatype #=> RDF::XSD.date
|
45
45
|
#
|
46
46
|
# @example Creating implicitly datatyped literals
|
@@ -225,7 +225,7 @@ module RDF
|
|
225
225
|
# * The arguments are simple literals or literals typed as xsd:string
|
226
226
|
# * The arguments are plain literals with identical language tags
|
227
227
|
# * The first argument is a plain literal with language tag and the second argument is a simple literal or literal typed as xsd:string
|
228
|
-
|
228
|
+
language? ?
|
229
229
|
(language == other.language || other.datatype == RDF::URI("http://www.w3.org/2001/XMLSchema#string")) :
|
230
230
|
other.datatype == RDF::URI("http://www.w3.org/2001/XMLSchema#string")
|
231
231
|
end
|
@@ -289,7 +289,7 @@ module RDF
|
|
289
289
|
case
|
290
290
|
when self.eql?(other)
|
291
291
|
true
|
292
|
-
when self.
|
292
|
+
when self.language? && self.language.to_s == other.language.to_s
|
293
293
|
# Literals with languages can compare if languages are identical
|
294
294
|
self.value_hash == other.value_hash && self.value == other.value
|
295
295
|
when self.simple? && other.simple?
|
@@ -335,10 +335,10 @@ module RDF
|
|
335
335
|
#
|
336
336
|
# @return [Boolean] `true` or `false`
|
337
337
|
# @see http://www.w3.org/TR/rdf-concepts/#dfn-plain-literal
|
338
|
-
def
|
338
|
+
def language?
|
339
339
|
datatype == RDF.langString
|
340
340
|
end
|
341
|
-
alias_method :
|
341
|
+
alias_method :has_language?, :language?
|
342
342
|
|
343
343
|
##
|
344
344
|
# Returns `true` if this is a datatyped literal.
|
@@ -347,12 +347,12 @@ module RDF
|
|
347
347
|
#
|
348
348
|
# @return [Boolean] `true` or `false`
|
349
349
|
# @see http://www.w3.org/TR/rdf-concepts/#dfn-typed-literal
|
350
|
-
def
|
350
|
+
def datatype?
|
351
351
|
!plain? && !language?
|
352
352
|
end
|
353
|
-
alias_method :
|
354
|
-
alias_method :typed?,
|
355
|
-
alias_method :datatyped?,
|
353
|
+
alias_method :has_datatype?, :datatype?
|
354
|
+
alias_method :typed?, :datatype?
|
355
|
+
alias_method :datatyped?, :datatype?
|
356
356
|
|
357
357
|
##
|
358
358
|
# Returns `true` if the value adheres to the defined grammar of the
|
@@ -386,16 +386,16 @@ module RDF
|
|
386
386
|
# This behavior is intuited from SPARQL data-r2/expr-equal/eq-2-2
|
387
387
|
# @return [Boolean]
|
388
388
|
def comperable_datatype?(other)
|
389
|
-
return false unless self.plain? || self.
|
389
|
+
return false unless self.plain? || self.language?
|
390
390
|
|
391
391
|
case other
|
392
392
|
when RDF::Literal::Numeric, RDF::Literal::Boolean,
|
393
393
|
RDF::Literal::Date, RDF::Literal::Time, RDF::Literal::DateTime
|
394
394
|
# Invald types can be compared without raising a TypeError if literal has a language (open-eq-08)
|
395
|
-
!other.valid? && self.
|
395
|
+
!other.valid? && self.language?
|
396
396
|
else
|
397
397
|
# An unknown datatype may not be used for comparison, unless it has a language? (open-eq-8)
|
398
|
-
self.
|
398
|
+
self.language?
|
399
399
|
end
|
400
400
|
end
|
401
401
|
|
@@ -51,11 +51,13 @@ module RDF; class Literal
|
|
51
51
|
#
|
52
52
|
# @return [Boolean]
|
53
53
|
# @since 1.1.6
|
54
|
-
def
|
54
|
+
def timezone?
|
55
55
|
md = self.to_s.match(GRAMMAR)
|
56
56
|
md && !!md[2]
|
57
57
|
end
|
58
|
-
alias_method :
|
58
|
+
alias_method :tz?, :timezone?
|
59
|
+
alias_method :has_tz?, :timezone?
|
60
|
+
alias_method :has_timezone?, :timezone?
|
59
61
|
|
60
62
|
##
|
61
63
|
# Returns the value as a string.
|
@@ -72,7 +74,7 @@ module RDF; class Literal
|
|
72
74
|
# @since 1.1.6
|
73
75
|
def humanize(lang = :en)
|
74
76
|
d = object.strftime("%A, %d %B %Y")
|
75
|
-
if
|
77
|
+
if timezone?
|
76
78
|
d += if self.tz == 'Z'
|
77
79
|
" UTC"
|
78
80
|
else
|
@@ -30,7 +30,7 @@ module RDF; class Literal
|
|
30
30
|
# @see http://www.w3.org/TR/xmlschema11-2/#dateTime
|
31
31
|
def canonicalize!
|
32
32
|
if self.valid?
|
33
|
-
@string = if
|
33
|
+
@string = if timezone?
|
34
34
|
@object.new_offset.new_offset.strftime(FORMAT[0..-4] + 'Z').sub('.000', '')
|
35
35
|
else
|
36
36
|
@object.strftime(FORMAT[0..-4]).sub('.000', '')
|
@@ -45,7 +45,7 @@ module RDF; class Literal
|
|
45
45
|
# @return [RDF::Literal]
|
46
46
|
# @see http://www.w3.org/TR/sparql11-query/#func-tz
|
47
47
|
def tz
|
48
|
-
zone =
|
48
|
+
zone = timezone? ? object.zone : ""
|
49
49
|
zone = "Z" if zone == "+00:00"
|
50
50
|
RDF::Literal(zone)
|
51
51
|
end
|
@@ -85,21 +85,25 @@ module RDF; class Literal
|
|
85
85
|
#
|
86
86
|
# @return [Boolean]
|
87
87
|
# @since 1.1.6
|
88
|
-
def
|
88
|
+
def milliseconds?
|
89
89
|
self.format("%L").to_i > 0
|
90
90
|
end
|
91
|
-
alias_method :
|
91
|
+
alias_method :has_milliseconds?, :milliseconds?
|
92
|
+
alias_method :has_ms?, :milliseconds?
|
93
|
+
alias_method :ms?, :milliseconds?
|
92
94
|
|
93
95
|
##
|
94
96
|
# Does the literal representation include a timezone? Note that this is only possible if initialized using a string, or `:lexical` option.
|
95
97
|
#
|
96
98
|
# @return [Boolean]
|
97
99
|
# @since 1.1.6
|
98
|
-
def
|
100
|
+
def timezone?
|
99
101
|
md = self.to_s.match(GRAMMAR)
|
100
102
|
md && !!md[2]
|
101
103
|
end
|
102
|
-
alias_method :
|
104
|
+
alias_method :tz?, :timezone?
|
105
|
+
alias_method :has_tz?, :timezone?
|
106
|
+
alias_method :has_timezone?, :timezone?
|
103
107
|
|
104
108
|
##
|
105
109
|
# Returns the `timezone` of the literal. If the
|
@@ -118,7 +122,7 @@ module RDF; class Literal
|
|
118
122
|
# @since 1.1.6
|
119
123
|
def humanize(lang = :en)
|
120
124
|
d = object.strftime("%r on %A, %d %B %Y")
|
121
|
-
if
|
125
|
+
if timezone?
|
122
126
|
zone = if self.tz == 'Z'
|
123
127
|
"UTC"
|
124
128
|
else
|
@@ -42,7 +42,7 @@ module RDF; class Literal
|
|
42
42
|
# @see http://www.w3.org/TR/xmlschema11-2/#time
|
43
43
|
def canonicalize!
|
44
44
|
if self.valid?
|
45
|
-
@string = if
|
45
|
+
@string = if timezone?
|
46
46
|
@object.new_offset.new_offset.strftime(FORMAT[0..-4] + 'Z').sub('.000', '')
|
47
47
|
else
|
48
48
|
@object.strftime(FORMAT[0..-4]).sub('.000', '')
|
@@ -57,7 +57,7 @@ module RDF; class Literal
|
|
57
57
|
# @return [RDF::Literal]
|
58
58
|
# @see http://www.w3.org/TR/sparql11-query/#func-tz
|
59
59
|
def tz
|
60
|
-
zone =
|
60
|
+
zone = timezone? ? object.zone : ""
|
61
61
|
zone = "Z" if zone == "+00:00"
|
62
62
|
RDF::Literal(zone)
|
63
63
|
end
|
@@ -79,11 +79,13 @@ module RDF; class Literal
|
|
79
79
|
#
|
80
80
|
# @return [Boolean]
|
81
81
|
# @since 1.1.6
|
82
|
-
def
|
82
|
+
def timezone?
|
83
83
|
md = self.to_s.match(GRAMMAR)
|
84
84
|
md && !!md[2]
|
85
85
|
end
|
86
|
-
alias_method :
|
86
|
+
alias_method :tz?, :timezone?
|
87
|
+
alias_method :has_tz?, :timezone?
|
88
|
+
alias_method :has_timezone?, :timezone?
|
87
89
|
|
88
90
|
##
|
89
91
|
# Returns the value as a string.
|
@@ -101,7 +103,7 @@ module RDF; class Literal
|
|
101
103
|
# @since 1.1.6
|
102
104
|
def humanize(lang = :en)
|
103
105
|
t = object.strftime("%r")
|
104
|
-
if
|
106
|
+
if timezone?
|
105
107
|
t += if self.tz == 'Z'
|
106
108
|
" UTC"
|
107
109
|
else
|
data/lib/rdf/model/statement.rb
CHANGED
@@ -96,7 +96,7 @@ module RDF
|
|
96
96
|
@predicate = predicate
|
97
97
|
@object = object
|
98
98
|
end
|
99
|
-
@id = @options.delete(:id) if @options.
|
99
|
+
@id = @options.delete(:id) if @options.key?(:id)
|
100
100
|
@graph_name = @options.delete(:graph_name)
|
101
101
|
initialize!
|
102
102
|
end
|
@@ -149,10 +149,10 @@ module RDF
|
|
149
149
|
#
|
150
150
|
# @return [Boolean]
|
151
151
|
def variable?
|
152
|
-
!(
|
153
|
-
|
154
|
-
|
155
|
-
(
|
152
|
+
!(subject? && subject.constant? &&
|
153
|
+
predicate? && predicate.constant? &&
|
154
|
+
object? && object.constant? &&
|
155
|
+
(graph? ? graph_name.constant? : true))
|
156
156
|
end
|
157
157
|
|
158
158
|
##
|
@@ -172,10 +172,10 @@ module RDF
|
|
172
172
|
##
|
173
173
|
# @return [Boolean]
|
174
174
|
def valid?
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
(
|
175
|
+
subject? && subject.resource? && subject.valid? &&
|
176
|
+
predicate? && predicate.uri? && predicate.valid? &&
|
177
|
+
object? && object.term? && object.valid? &&
|
178
|
+
(graph? ? (graph_name.resource? && graph_name.valid?) : true)
|
179
179
|
end
|
180
180
|
|
181
181
|
##
|
@@ -216,31 +216,37 @@ module RDF
|
|
216
216
|
|
217
217
|
##
|
218
218
|
# @return [Boolean]
|
219
|
-
def
|
219
|
+
def graph?
|
220
220
|
!!graph_name
|
221
221
|
end
|
222
|
-
alias_method :
|
222
|
+
alias_method :name?, :graph?
|
223
|
+
alias_method :has_graph?, :graph?
|
224
|
+
alias_method :has_name?, :graph?
|
223
225
|
|
224
226
|
##
|
225
227
|
# @return [Boolean]
|
226
|
-
def
|
228
|
+
def subject?
|
227
229
|
!!subject
|
228
230
|
end
|
231
|
+
alias_method :has_subject?, :subject?
|
229
232
|
|
230
233
|
##
|
231
234
|
# @return [Boolean]
|
232
|
-
def
|
235
|
+
def predicate?
|
233
236
|
!!predicate
|
234
237
|
end
|
238
|
+
alias_method :has_predicate?, :predicate?
|
235
239
|
|
236
240
|
##
|
237
241
|
# @return [Boolean]
|
238
|
-
def
|
242
|
+
def object?
|
239
243
|
!!object
|
240
244
|
end
|
245
|
+
alias_method :has_object?, :object?
|
241
246
|
|
242
247
|
##
|
243
|
-
# Returns `true` if any resource of this statement is a blank node
|
248
|
+
# Returns `true` if any resource of this statement is a blank node
|
249
|
+
# or has an embedded statement including a blank node.
|
244
250
|
#
|
245
251
|
# @return [Boolean]
|
246
252
|
# @since 2.0
|
@@ -312,10 +318,10 @@ module RDF
|
|
312
318
|
# @see RDF::Literal#eql?
|
313
319
|
# @see RDF::Query::Variable#eql?
|
314
320
|
def ===(other)
|
315
|
-
return false if
|
316
|
-
return false if
|
317
|
-
return false if
|
318
|
-
return false if
|
321
|
+
return false if object? && !object.eql?(other.object)
|
322
|
+
return false if predicate? && !predicate.eql?(other.predicate)
|
323
|
+
return false if subject? && !subject.eql?(other.subject)
|
324
|
+
return false if graph? && !graph_name.eql?(other.graph_name)
|
319
325
|
return true
|
320
326
|
end
|
321
327
|
|
@@ -359,6 +365,13 @@ module RDF
|
|
359
365
|
end
|
360
366
|
alias_method :to_a, :to_triple
|
361
367
|
|
368
|
+
##
|
369
|
+
# Returns an array of all the non-nil non-statement terms.
|
370
|
+
# @return [Array(RDF::Term)]
|
371
|
+
def terms
|
372
|
+
to_quad.map {|t| t.respond_to?(:terms) ? t.terms : t}.flatten.compact
|
373
|
+
end
|
374
|
+
|
362
375
|
##
|
363
376
|
# Canonicalizes each unfrozen term in the statement
|
364
377
|
#
|
@@ -366,10 +379,10 @@ module RDF
|
|
366
379
|
# @since 1.0.8
|
367
380
|
# @raise [ArgumentError] if any element cannot be canonicalized.
|
368
381
|
def canonicalize!
|
369
|
-
self.subject.canonicalize! if
|
370
|
-
self.predicate.canonicalize! if
|
371
|
-
self.object.canonicalize! if
|
372
|
-
self.graph_name.canonicalize! if
|
382
|
+
self.subject.canonicalize! if subject? && !self.subject.frozen?
|
383
|
+
self.predicate.canonicalize! if predicate? && !self.predicate.frozen?
|
384
|
+
self.object.canonicalize! if object? && !self.object.frozen?
|
385
|
+
self.graph_name.canonicalize! if graph? && !self.graph_name.frozen?
|
373
386
|
self.validate!
|
374
387
|
@hash = nil
|
375
388
|
self
|
data/lib/rdf/model/term.rb
CHANGED
data/lib/rdf/model/uri.rb
CHANGED
@@ -226,13 +226,13 @@ module RDF
|
|
226
226
|
@value.dup.force_encoding(Encoding::UTF_8) if @value.encoding != Encoding::UTF_8
|
227
227
|
@value.freeze
|
228
228
|
else
|
229
|
-
%
|
229
|
+
%i(
|
230
230
|
scheme
|
231
231
|
user password userinfo
|
232
232
|
host port authority
|
233
233
|
path query fragment
|
234
|
-
).
|
235
|
-
if options.
|
234
|
+
).each do |meth|
|
235
|
+
if options.key?(meth)
|
236
236
|
self.send("#{meth}=".to_sym, options[meth])
|
237
237
|
else
|
238
238
|
self.send(meth)
|
@@ -416,7 +416,7 @@ module RDF
|
|
416
416
|
# @see http://tools.ietf.org/html/rfc3986#section-5.2.2
|
417
417
|
# @see http://tools.ietf.org/html/rfc3986#section-5.2.3
|
418
418
|
def join(*uris)
|
419
|
-
joined_parts = object.dup.delete_if {|k, v|
|
419
|
+
joined_parts = object.dup.delete_if {|k, v| %i(user password host port).include?(k)}
|
420
420
|
|
421
421
|
uris.each do |uri|
|
422
422
|
uri = RDF::URI.new(uri) unless uri.is_a?(RDF::URI)
|
@@ -580,7 +580,7 @@ module RDF
|
|
580
580
|
else
|
581
581
|
RDF::URI.new(
|
582
582
|
**object.merge(path: '/').
|
583
|
-
keep_if {|k, v|
|
583
|
+
keep_if {|k, v| %i(scheme authority path).include?(k)})
|
584
584
|
end
|
585
585
|
end
|
586
586
|
|
@@ -588,13 +588,14 @@ module RDF
|
|
588
588
|
# Returns `true` if this URI is hierarchical and it's path component isn't equal to `/`.
|
589
589
|
#
|
590
590
|
# @example
|
591
|
-
# RDF::URI('http://example.org/').
|
592
|
-
# RDF::URI('http://example.org/path/').
|
591
|
+
# RDF::URI('http://example.org/').parent? #=> false
|
592
|
+
# RDF::URI('http://example.org/path/').parent? #=> true
|
593
593
|
#
|
594
594
|
# @return [Boolean] `true` or `false`
|
595
|
-
def
|
595
|
+
def parent?
|
596
596
|
!root?
|
597
597
|
end
|
598
|
+
alias_method :has_parent?, :parent?
|
598
599
|
|
599
600
|
##
|
600
601
|
# Returns a copy of this URI with the path component ascended to the
|
@@ -1122,7 +1123,7 @@ module RDF
|
|
1122
1123
|
# @param [String, #to_s] value
|
1123
1124
|
# @return [RDF::URI] self
|
1124
1125
|
def authority=(value)
|
1125
|
-
object.delete_if {|k, v|
|
1126
|
+
object.delete_if {|k, v| %i(user password host port userinfo).include?(k)}
|
1126
1127
|
object[:authority] = (value.to_s.dup.force_encoding(Encoding::UTF_8) if value)
|
1127
1128
|
user; password; userinfo; host; port
|
1128
1129
|
@value = nil
|
@@ -1152,7 +1153,7 @@ module RDF
|
|
1152
1153
|
# @param [String, #to_s] value
|
1153
1154
|
# @return [RDF::URI] self
|
1154
1155
|
def userinfo=(value)
|
1155
|
-
object.delete_if {|k, v|
|
1156
|
+
object.delete_if {|k, v| %i(user password authority).include?(k)}
|
1156
1157
|
object[:userinfo] = (value.to_s.dup.force_encoding(Encoding::UTF_8) if value)
|
1157
1158
|
user; password; authority
|
1158
1159
|
@value = nil
|
data/lib/rdf/ntriples/writer.rb
CHANGED
@@ -309,8 +309,8 @@ module RDF::NTriples
|
|
309
309
|
when RDF::Literal
|
310
310
|
# Note, escaping here is more robust than in Term
|
311
311
|
text = quoted(escaped(literal.value))
|
312
|
-
text << "@#{literal.language}" if literal.
|
313
|
-
text << "^^<#{uri_for(literal.datatype)}>" if literal.
|
312
|
+
text << "@#{literal.language}" if literal.language?
|
313
|
+
text << "^^<#{uri_for(literal.datatype)}>" if literal.datatype?
|
314
314
|
text
|
315
315
|
else
|
316
316
|
quoted(escaped(literal.to_s))
|
data/lib/rdf/query/pattern.rb
CHANGED
@@ -85,13 +85,13 @@ module RDF; class Query
|
|
85
85
|
#
|
86
86
|
# @return [Boolean] `true` or `false`
|
87
87
|
# @since 0.3.0
|
88
|
-
def
|
88
|
+
def variables?
|
89
89
|
subject && subject.variable? ||
|
90
90
|
predicate && predicate.variable? ||
|
91
91
|
object && object.variable? ||
|
92
92
|
graph_name && graph_name.variable?
|
93
93
|
end
|
94
|
-
alias_method :
|
94
|
+
alias_method :has_variables?, :variables?
|
95
95
|
|
96
96
|
##
|
97
97
|
# Returns `true` if this is an optional pattern.
|
@@ -111,10 +111,10 @@ module RDF; class Query
|
|
111
111
|
#
|
112
112
|
# @return [Boolean] `true` or `false`
|
113
113
|
def valid?
|
114
|
-
(
|
115
|
-
(
|
116
|
-
(
|
117
|
-
(
|
114
|
+
(subject? ? (subject.resource? || subject.variable?) && subject.valid? : true) &&
|
115
|
+
(predicate? ? (predicate.uri? || predicate.variable?) && predicate.valid? : true) &&
|
116
|
+
(object? ? (object.term? || object.variable?) && object.valid? : true) &&
|
117
|
+
(graph? ? (graph_name.resource? || graph_name.variable?) && graph_name.valid? : true)
|
118
118
|
rescue NoMethodError
|
119
119
|
false
|
120
120
|
end
|
@@ -248,7 +248,7 @@ module RDF; class Query
|
|
248
248
|
# @param [RDF::Statement] statement
|
249
249
|
# @return [Array<RDF::Term>]
|
250
250
|
def var_values(var, statement)
|
251
|
-
|
251
|
+
%i(subject predicate object graph_name).map do |position|
|
252
252
|
po = self.send(position)
|
253
253
|
so = statement.send(position)
|
254
254
|
po.var_values(var, so) if po.respond_to?(:var_values)
|
data/lib/rdf/query/solution.rb
CHANGED
@@ -121,9 +121,11 @@ class RDF::Query
|
|
121
121
|
# an array of variables to check
|
122
122
|
# @return [Boolean] `true` or `false`
|
123
123
|
# @since 0.3.0
|
124
|
-
def
|
124
|
+
def variable?(variables)
|
125
125
|
variables.any? { |variable| bound?(variable) }
|
126
126
|
end
|
127
|
+
alias_method :variables?, :variable?
|
128
|
+
alias_method :has_variables?, :variable?
|
127
129
|
|
128
130
|
##
|
129
131
|
# Enumerates over every variable in this solution.
|
@@ -253,7 +255,7 @@ class RDF::Query
|
|
253
255
|
# @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_algCompatibleMapping
|
254
256
|
def compatible?(other)
|
255
257
|
@bindings.all? do |k, v|
|
256
|
-
!other.to_h.
|
258
|
+
!other.to_h.key?(k) || other[k].eql?(v)
|
257
259
|
end
|
258
260
|
end
|
259
261
|
|
@@ -267,7 +269,7 @@ class RDF::Query
|
|
267
269
|
# @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_algMinus
|
268
270
|
def disjoint?(other)
|
269
271
|
@bindings.none? do |k, v|
|
270
|
-
v && other.to_h.
|
272
|
+
v && other.to_h.key?(k) && other[k].eql?(v)
|
271
273
|
end
|
272
274
|
end
|
273
275
|
|
@@ -281,7 +283,7 @@ class RDF::Query
|
|
281
283
|
# @return [Boolean]
|
282
284
|
def isomorphic_with?(other)
|
283
285
|
@bindings.all? do |k, v|
|
284
|
-
!other.to_h.
|
286
|
+
!other.to_h.key?(k) || other[k].eql?(v)
|
285
287
|
end
|
286
288
|
end
|
287
289
|
|
@@ -332,7 +334,7 @@ class RDF::Query
|
|
332
334
|
# @param [Symbol] name
|
333
335
|
# @return [RDF::Term]
|
334
336
|
def method_missing(name, *args, &block)
|
335
|
-
if args.empty? && @bindings.
|
337
|
+
if args.empty? && @bindings.key?(name.to_sym)
|
336
338
|
@bindings[name.to_sym]
|
337
339
|
else
|
338
340
|
super # raises NoMethodError
|
@@ -342,7 +344,7 @@ class RDF::Query
|
|
342
344
|
##
|
343
345
|
# @return [Boolean]
|
344
346
|
def respond_to_missing?(name, include_private = false)
|
345
|
-
@bindings.
|
347
|
+
@bindings.key?(name.to_sym) || super
|
346
348
|
end
|
347
349
|
|
348
350
|
##
|
data/lib/rdf/query/solutions.rb
CHANGED
@@ -84,11 +84,13 @@ module RDF; class Query
|
|
84
84
|
# @param [Array<Symbol, #to_sym>] variables
|
85
85
|
# an array of variables to check
|
86
86
|
# @return [Boolean] `true` or `false`
|
87
|
-
# @see RDF::Query::Solution#
|
87
|
+
# @see RDF::Query::Solution#variable?
|
88
88
|
# @see RDF::Query#execute
|
89
|
-
def
|
90
|
-
self.any? { |solution| solution.
|
89
|
+
def variable?(variables)
|
90
|
+
self.any? { |solution| solution.variables?(variables) }
|
91
91
|
end
|
92
|
+
alias_method :variables?, :variable?
|
93
|
+
alias_method :have_variables?, :variable?
|
92
94
|
alias_method :has_variables?, :have_variables?
|
93
95
|
|
94
96
|
##
|
data/lib/rdf/repository.rb
CHANGED
@@ -20,7 +20,7 @@ module RDF
|
|
20
20
|
# repository.count
|
21
21
|
#
|
22
22
|
# @example Checking whether a repository contains a specific statement
|
23
|
-
# repository.
|
23
|
+
# repository.statement?(statement)
|
24
24
|
#
|
25
25
|
# @example Enumerating statements in a repository
|
26
26
|
# repository.each_statement { |statement| statement.inspect! }
|
@@ -69,7 +69,7 @@ module RDF
|
|
69
69
|
#
|
70
70
|
# @example Transational read from a repository
|
71
71
|
# repository.transaction do |tx|
|
72
|
-
# tx.
|
72
|
+
# tx.statement?(statement)
|
73
73
|
# tx.query([:s, :p, :o])
|
74
74
|
# end
|
75
75
|
#
|
@@ -288,10 +288,11 @@ module RDF
|
|
288
288
|
|
289
289
|
##
|
290
290
|
# @private
|
291
|
-
# @see RDF::Enumerable#
|
292
|
-
def
|
293
|
-
@data.
|
291
|
+
# @see RDF::Enumerable#graph?
|
292
|
+
def graph?(graph)
|
293
|
+
@data.key?(graph)
|
294
294
|
end
|
295
|
+
alias_method :has_graph?, :graph?
|
295
296
|
|
296
297
|
##
|
297
298
|
# @private
|
@@ -312,12 +313,19 @@ module RDF
|
|
312
313
|
enum_graph
|
313
314
|
end
|
314
315
|
|
316
|
+
|
315
317
|
##
|
316
|
-
# @
|
317
|
-
#
|
318
|
-
|
319
|
-
|
318
|
+
# @overload statement?
|
319
|
+
# Returns `false` indicating this is not an RDF::Statemenet.
|
320
|
+
# @return [Boolean]
|
321
|
+
# @see RDF::Value#statement?
|
322
|
+
# @overload statement?(statement)
|
323
|
+
# @private
|
324
|
+
# @see RDF::Enumerable#statement?
|
325
|
+
def statement?(statement = nil)
|
326
|
+
statement && statement_in?(@data, statement)
|
320
327
|
end
|
328
|
+
alias_method :has_statement?, :statement?
|
321
329
|
|
322
330
|
##
|
323
331
|
# @private
|
@@ -389,7 +397,7 @@ module RDF
|
|
389
397
|
predicate = pattern.predicate
|
390
398
|
object = pattern.object
|
391
399
|
|
392
|
-
cs = snapshot.
|
400
|
+
cs = snapshot.key?(graph_name) ? { graph_name => snapshot[graph_name] } : snapshot
|
393
401
|
|
394
402
|
cs.each do |c, ss|
|
395
403
|
next unless graph_name.nil? ||
|
@@ -403,7 +411,7 @@ module RDF
|
|
403
411
|
ss.keys.select {|s| s.statement? && subject.eql?(s)}.inject({}) do |memo, st|
|
404
412
|
memo.merge(st => ss[st])
|
405
413
|
end
|
406
|
-
elsif ss.
|
414
|
+
elsif ss.key?(subject)
|
407
415
|
{ subject => ss[subject] }
|
408
416
|
else
|
409
417
|
[]
|
@@ -411,7 +419,7 @@ module RDF
|
|
411
419
|
ss.each do |s, ps|
|
412
420
|
ps = if predicate.nil? || predicate.is_a?(RDF::Query::Variable)
|
413
421
|
ps
|
414
|
-
elsif ps.
|
422
|
+
elsif ps.key?(predicate)
|
415
423
|
{ predicate => ps[predicate] }
|
416
424
|
else
|
417
425
|
[]
|
@@ -468,16 +476,17 @@ module RDF
|
|
468
476
|
|
469
477
|
##
|
470
478
|
# @private
|
471
|
-
# @see #
|
472
|
-
def
|
479
|
+
# @see #statement?
|
480
|
+
def statement_in?(data, statement)
|
473
481
|
s, p, o, g = statement.to_quad
|
474
482
|
g ||= DEFAULT_GRAPH
|
475
483
|
|
476
|
-
data.
|
477
|
-
data[g].
|
478
|
-
data[g][s].
|
479
|
-
data[g][s][p].
|
484
|
+
data.key?(g) &&
|
485
|
+
data[g].key?(s) &&
|
486
|
+
data[g][s].key?(p) &&
|
487
|
+
data[g][s][p].key?(o)
|
480
488
|
end
|
489
|
+
alias_method :has_statement_in?, :statement_in?
|
481
490
|
|
482
491
|
##
|
483
492
|
# @private
|
@@ -485,7 +494,7 @@ module RDF
|
|
485
494
|
def insert_to(data, statement)
|
486
495
|
raise ArgumentError, "Statement #{statement.inspect} is incomplete" if statement.incomplete?
|
487
496
|
|
488
|
-
unless
|
497
|
+
unless statement_in?(data, statement)
|
489
498
|
s, p, o, c = statement.to_quad
|
490
499
|
c ||= DEFAULT_GRAPH
|
491
500
|
|
@@ -504,7 +513,7 @@ module RDF
|
|
504
513
|
# @private
|
505
514
|
# @return [Hamster::Hash] a new, updated hamster hash
|
506
515
|
def delete_from(data, statement)
|
507
|
-
if
|
516
|
+
if statement_in?(data, statement)
|
508
517
|
s, p, o, g = statement.to_quad
|
509
518
|
g = DEFAULT_GRAPH unless supports?(:graph_name)
|
510
519
|
g ||= DEFAULT_GRAPH
|
data/lib/rdf/transaction.rb
CHANGED
@@ -207,10 +207,16 @@ module RDF
|
|
207
207
|
end
|
208
208
|
|
209
209
|
##
|
210
|
-
# @
|
211
|
-
|
212
|
-
|
210
|
+
# @overload statement?
|
211
|
+
# Returns `false` indicating this is not an RDF::Statemenet.
|
212
|
+
# @return [Boolean]
|
213
|
+
# @see RDF::Value#statement?
|
214
|
+
# @overload statement?(statement)
|
215
|
+
# @see RDF::Enumerable#statement?
|
216
|
+
def statement?(statement = nil)
|
217
|
+
statement && read_target.has_statement?(statement)
|
213
218
|
end
|
219
|
+
alias_method :has_statement?, :statement?
|
214
220
|
|
215
221
|
##
|
216
222
|
# Returns a developer-friendly representation of this transaction.
|
data/lib/rdf/util/cache.rb
CHANGED
@@ -53,9 +53,10 @@ module RDF; module Util
|
|
53
53
|
|
54
54
|
##
|
55
55
|
# @return [Boolean]
|
56
|
-
def
|
56
|
+
def capacity?
|
57
57
|
@capacity.equal?(-1) || @capacity > @cache.size
|
58
58
|
end
|
59
|
+
alias_method :has_capacity?, :capacity?
|
59
60
|
|
60
61
|
##
|
61
62
|
# This implementation relies on `ObjectSpace#_id2ref` and performs
|
@@ -80,7 +81,7 @@ module RDF; module Util
|
|
80
81
|
# @param [Object] value
|
81
82
|
# @return [Object]
|
82
83
|
def []=(key, value)
|
83
|
-
if
|
84
|
+
if capacity?
|
84
85
|
id = value.__id__
|
85
86
|
@cache[key] = id
|
86
87
|
@index[id] = key
|
@@ -133,7 +134,7 @@ module RDF; module Util
|
|
133
134
|
# @param [Object] value
|
134
135
|
# @return [Object]
|
135
136
|
def []=(key, value)
|
136
|
-
if
|
137
|
+
if capacity?
|
137
138
|
@cache[key] = WeakRef.new(value)
|
138
139
|
end
|
139
140
|
value
|
data/lib/rdf/util/logger.rb
CHANGED
@@ -285,7 +285,7 @@ module RDF; module Util
|
|
285
285
|
|
286
286
|
def respond_to_missing?(name, include_private = false)
|
287
287
|
return true if
|
288
|
-
|
288
|
+
%i(fatal error warn info debug level sev_threshold)
|
289
289
|
.include?(name.to_sym)
|
290
290
|
super
|
291
291
|
end
|
data/lib/rdf/vocabulary.rb
CHANGED
@@ -430,7 +430,7 @@ module RDF
|
|
430
430
|
# @param [#to_s] property
|
431
431
|
# @return [RDF::URI]
|
432
432
|
def [](property)
|
433
|
-
if props.
|
433
|
+
if props.key?(property.to_sym)
|
434
434
|
props[property.to_sym]
|
435
435
|
else
|
436
436
|
Term.intern([to_s, property.to_s].join(''), vocab: self, attributes: {})
|
@@ -508,7 +508,7 @@ module RDF
|
|
508
508
|
#
|
509
509
|
# @return [String]
|
510
510
|
def to_s
|
511
|
-
@@uris.
|
511
|
+
@@uris.key?(self) ? @@uris[self].to_s : super
|
512
512
|
end
|
513
513
|
|
514
514
|
##
|
@@ -1153,7 +1153,7 @@ module RDF
|
|
1153
1153
|
:onProperty, :someValuesFrom
|
1154
1154
|
self.restriction?
|
1155
1155
|
when :broader, :exactMatch, :hasTopConcept, :inScheme, :member, :narrower, :related
|
1156
|
-
@attributes.
|
1156
|
+
@attributes.key?(method)
|
1157
1157
|
else
|
1158
1158
|
super
|
1159
1159
|
end
|
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.1.10
|
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-02-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: link_header
|
@@ -303,7 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
303
303
|
- !ruby/object:Gem::Version
|
304
304
|
version: '0'
|
305
305
|
requirements: []
|
306
|
-
rubygems_version: 3.
|
306
|
+
rubygems_version: 3.2.3
|
307
307
|
signing_key:
|
308
308
|
specification_version: 4
|
309
309
|
summary: A Ruby library for working with Resource Description Framework (RDF) data.
|