rdf 2.1.1 → 2.2.0.pre.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/rdf.rb +2 -2
- data/lib/rdf/changeset.rb +2 -2
- data/lib/rdf/cli.rb +18 -12
- data/lib/rdf/format.rb +1 -1
- data/lib/rdf/mixin/enumerable.rb +22 -7
- data/lib/rdf/mixin/enumerator.rb +40 -4
- data/lib/rdf/mixin/queryable.rb +3 -3
- data/lib/rdf/model/dataset.rb +1 -1
- data/lib/rdf/model/graph.rb +4 -4
- data/lib/rdf/model/literal.rb +42 -20
- data/lib/rdf/model/literal/boolean.rb +5 -6
- data/lib/rdf/model/literal/date.rb +5 -6
- data/lib/rdf/model/literal/datetime.rb +3 -4
- data/lib/rdf/model/literal/decimal.rb +12 -8
- data/lib/rdf/model/literal/double.rb +5 -6
- data/lib/rdf/model/literal/integer.rb +6 -7
- data/lib/rdf/model/literal/time.rb +5 -6
- data/lib/rdf/model/literal/token.rb +6 -7
- data/lib/rdf/model/node.rb +1 -1
- data/lib/rdf/model/statement.rb +43 -15
- data/lib/rdf/model/uri.rb +23 -5
- data/lib/rdf/nquads.rb +2 -2
- data/lib/rdf/ntriples/reader.rb +13 -10
- data/lib/rdf/ntriples/writer.rb +18 -19
- data/lib/rdf/query.rb +33 -30
- data/lib/rdf/query/hash_pattern_normalizer.rb +2 -2
- data/lib/rdf/query/pattern.rb +5 -4
- data/lib/rdf/query/solution.rb +25 -13
- data/lib/rdf/query/variable.rb +20 -2
- data/lib/rdf/reader.rb +33 -22
- data/lib/rdf/repository.rb +2 -2
- data/lib/rdf/transaction.rb +1 -1
- data/lib/rdf/util/file.rb +34 -41
- data/lib/rdf/util/logger.rb +36 -36
- data/lib/rdf/util/uuid.rb +3 -2
- data/lib/rdf/vocab/writer.rb +4 -4
- data/lib/rdf/vocabulary.rb +10 -12
- data/lib/rdf/writer.rb +32 -22
- metadata +6 -6
@@ -11,12 +11,11 @@ module RDF; class Literal
|
|
11
11
|
FALSES = %w(false 0).freeze
|
12
12
|
|
13
13
|
##
|
14
|
-
# @param [Boolean] value
|
15
|
-
# @
|
16
|
-
def initialize(value,
|
17
|
-
@datatype = RDF::URI(
|
18
|
-
@string =
|
19
|
-
@string ||= value if value.is_a?(String)
|
14
|
+
# @param [String, Boolean] value
|
15
|
+
# @param (see Literal#initialize)
|
16
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
17
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
18
|
+
@string = lexical || (value if value.is_a?(String))
|
20
19
|
@object = case
|
21
20
|
when true.equal?(value) then true
|
22
21
|
when false.equal?(value) then false
|
@@ -10,12 +10,11 @@ module RDF; class Literal
|
|
10
10
|
FORMAT = '%Y-%m-%d'.freeze
|
11
11
|
|
12
12
|
##
|
13
|
-
# @param [Date] value
|
14
|
-
# @
|
15
|
-
def initialize(value,
|
16
|
-
@datatype = RDF::URI(
|
17
|
-
@string =
|
18
|
-
@string ||= value if value.is_a?(String)
|
13
|
+
# @param [String, Date, #to_date] value
|
14
|
+
# @param (see Literal#initialize)
|
15
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
16
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
17
|
+
@string = lexical || (value if value.is_a?(String))
|
19
18
|
@object = case
|
20
19
|
when value.is_a?(::Date) then value
|
21
20
|
when value.respond_to?(:to_date) then value.to_date
|
@@ -12,10 +12,9 @@ module RDF; class Literal
|
|
12
12
|
##
|
13
13
|
# @param [DateTime] value
|
14
14
|
# @option options [String] :lexical (nil)
|
15
|
-
def initialize(value,
|
16
|
-
@datatype = RDF::URI(
|
17
|
-
@string =
|
18
|
-
@string ||= value if value.is_a?(String)
|
15
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
16
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
17
|
+
@string = lexical || (value if value.is_a?(String))
|
19
18
|
@object = case
|
20
19
|
when value.is_a?(::DateTime) then value
|
21
20
|
when value.respond_to?(:to_datetime) then value.to_datetime
|
@@ -15,15 +15,19 @@ module RDF; class Literal
|
|
15
15
|
GRAMMAR = /^[\+\-]?\d+(\.\d*)?$/.freeze
|
16
16
|
|
17
17
|
##
|
18
|
-
# @param [
|
19
|
-
# @
|
20
|
-
def initialize(value,
|
21
|
-
@datatype = RDF::URI(
|
22
|
-
@string =
|
23
|
-
@string ||= value if value.is_a?(String)
|
18
|
+
# @param [String, BidDecimal, Numeric] value
|
19
|
+
# @param (see Literal#initialize)
|
20
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
21
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
22
|
+
@string = lexical || (value if value.is_a?(String))
|
24
23
|
@object = case
|
25
|
-
when value.is_a?(BigDecimal) then value
|
26
|
-
|
24
|
+
when value.is_a?(::BigDecimal) then value
|
25
|
+
when value.is_a?(::Float) then BigDecimal(value.to_s)
|
26
|
+
when value.is_a?(::Numeric) then BigDecimal(value)
|
27
|
+
else
|
28
|
+
value = value.to_s
|
29
|
+
value += "0" if value.end_with?(".") # Normalization required in Ruby 2.4
|
30
|
+
BigDecimal(value) rescue nil
|
27
31
|
end
|
28
32
|
end
|
29
33
|
|
@@ -15,12 +15,11 @@ module RDF; class Literal
|
|
15
15
|
GRAMMAR = /^(?:NaN|(?:[\+\-]?(?:INF|(?:\d+(\.\d*)?(e[\+\-]?\d+)?))))$/i.freeze
|
16
16
|
|
17
17
|
##
|
18
|
-
# @param [Float, #to_f] value
|
19
|
-
# @
|
20
|
-
def initialize(value,
|
21
|
-
@datatype = RDF::URI(
|
22
|
-
@string =
|
23
|
-
@string ||= value if value.is_a?(String)
|
18
|
+
# @param [String, Float, #to_f] value
|
19
|
+
# @param (see Literal#initialize)
|
20
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
21
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
22
|
+
@string = lexical || (value if value.is_a?(String))
|
24
23
|
@object = case
|
25
24
|
when value.is_a?(::String) then case value
|
26
25
|
when '+INF' then 1/0.0
|
@@ -16,15 +16,14 @@ module RDF; class Literal
|
|
16
16
|
GRAMMAR = /^[\+\-]?\d+$/.freeze
|
17
17
|
|
18
18
|
##
|
19
|
-
# @param [Integer, #to_i] value
|
20
|
-
# @
|
21
|
-
def initialize(value,
|
22
|
-
@datatype = RDF::URI(
|
23
|
-
@string =
|
24
|
-
@string ||= value if value.is_a?(String)
|
19
|
+
# @param [String, Integer, #to_i] value
|
20
|
+
# @param (see Literal#initialize)
|
21
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
22
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
23
|
+
@string = lexical || (value if value.is_a?(String))
|
25
24
|
@object = case
|
25
|
+
when value.is_a?(::Integer) then value
|
26
26
|
when value.respond_to?(:to_i) then value.to_i
|
27
|
-
when value.is_a?(::Integer) then value
|
28
27
|
else Integer(value.to_s) rescue nil
|
29
28
|
end
|
30
29
|
end
|
@@ -15,12 +15,11 @@ module RDF; class Literal
|
|
15
15
|
FORMAT = '%H:%M:%S%:z'.freeze
|
16
16
|
|
17
17
|
##
|
18
|
-
# @param [
|
19
|
-
# @
|
20
|
-
def initialize(value,
|
21
|
-
@datatype = RDF::URI(
|
22
|
-
@string =
|
23
|
-
@string ||= value if value.is_a?(String)
|
18
|
+
# @param [String, DateTime, #to_datetime] value
|
19
|
+
# @param (see Literal#initialize)
|
20
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
21
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
22
|
+
@string = lexical || (value if value.is_a?(String))
|
24
23
|
@object = case
|
25
24
|
when value.is_a?(::DateTime) then value
|
26
25
|
when value.respond_to?(:to_datetime) then value.to_datetime rescue ::DateTime.parse(value.to_s)
|
@@ -9,13 +9,12 @@ module RDF; class Literal
|
|
9
9
|
GRAMMAR = /\A[^\x0D\x0A\x09]+\z/i.freeze # FIXME
|
10
10
|
|
11
11
|
##
|
12
|
-
# @param [Symbol, #
|
13
|
-
# @
|
14
|
-
def initialize(value,
|
15
|
-
@datatype = RDF::URI(
|
16
|
-
@string =
|
17
|
-
@
|
18
|
-
@object = value.is_a?(Symbol) ? value : value.to_s
|
12
|
+
# @param [String, Symbol, #to_sym] value
|
13
|
+
# @param (see Literal#initialize)
|
14
|
+
def initialize(value, datatype: nil, lexical: nil, **options)
|
15
|
+
@datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
|
16
|
+
@string = lexical || (value if value.is_a?(String))
|
17
|
+
@object = value.is_a?(Symbol) ? value : value.to_sym
|
19
18
|
end
|
20
19
|
|
21
20
|
##
|
data/lib/rdf/model/node.rb
CHANGED
data/lib/rdf/model/statement.rb
CHANGED
@@ -31,11 +31,11 @@ module RDF
|
|
31
31
|
##
|
32
32
|
# @private
|
33
33
|
# @since 0.2.2
|
34
|
-
def self.from(statement,
|
34
|
+
def self.from(statement, graph_name: nil, **options)
|
35
35
|
case statement
|
36
36
|
when Array, Query::Pattern
|
37
|
-
graph_name
|
38
|
-
self.new(statement[0], statement[1], statement[2],
|
37
|
+
graph_name ||= statement[3] == false ? nil : statement[3]
|
38
|
+
self.new(statement[0], statement[1], statement[2], graph_name: graph_name, **options)
|
39
39
|
when Statement then statement
|
40
40
|
when Hash then self.new(options.merge(statement))
|
41
41
|
else raise ArgumentError, "expected RDF::Statement, Hash, or Array, but got #{statement.inspect}"
|
@@ -58,7 +58,7 @@ module RDF
|
|
58
58
|
attr_accessor :object
|
59
59
|
|
60
60
|
##
|
61
|
-
# @overload initialize(options
|
61
|
+
# @overload initialize(**options)
|
62
62
|
# @param [Hash{Symbol => Object}] options
|
63
63
|
# @option options [RDF::Term] :subject (nil)
|
64
64
|
# A symbol is converted to an interned {Node}.
|
@@ -70,11 +70,11 @@ module RDF
|
|
70
70
|
# @option options [Boolean] :inferred used as a marker to record that this statement was inferred based on semantic relationships (T-Box).
|
71
71
|
# @return [RDF::Statement]
|
72
72
|
#
|
73
|
-
# @overload initialize(subject, predicate, object, options
|
73
|
+
# @overload initialize(subject, predicate, object, **options)
|
74
74
|
# @param [RDF::Term] subject
|
75
75
|
# A symbol is converted to an interned {Node}.
|
76
|
-
# @param [RDF::URI]
|
77
|
-
# @param [RDF::Resource]
|
76
|
+
# @param [RDF::URI] predicate
|
77
|
+
# @param [RDF::Resource] object
|
78
78
|
# if not a {Resource}, it is coerced to {Literal} or {Node} depending on if it is a symbol or something other than a {Term}.
|
79
79
|
# @param [Hash{Symbol => Object}] options
|
80
80
|
# @option options [RDF::Term] :graph_name (nil)
|
@@ -244,7 +244,7 @@ module RDF
|
|
244
244
|
end
|
245
245
|
|
246
246
|
##
|
247
|
-
# Generates a
|
247
|
+
# Generates a Integer hash value as a quad.
|
248
248
|
def hash
|
249
249
|
@hash ||= to_quad.hash
|
250
250
|
end
|
@@ -337,9 +337,14 @@ module RDF
|
|
337
337
|
def to_triple
|
338
338
|
[subject, predicate, object]
|
339
339
|
end
|
340
|
+
alias_method :to_a, :to_triple
|
340
341
|
|
341
|
-
|
342
|
-
|
342
|
+
##
|
343
|
+
# @deprecated use {#to_a} or {#to_triple} instead
|
344
|
+
# @see #to_triple
|
345
|
+
def to_ary
|
346
|
+
to_triple
|
347
|
+
end
|
343
348
|
|
344
349
|
##
|
345
350
|
# Canonicalizes each unfrozen term in the statement
|
@@ -375,7 +380,7 @@ module RDF
|
|
375
380
|
# @param [Symbol] predicate_key
|
376
381
|
# @param [Symbol] object_key
|
377
382
|
# @return [Hash{Symbol => RDF::Term}]
|
378
|
-
def
|
383
|
+
def to_h(subject_key = :subject, predicate_key = :predicate, object_key = :object, graph_key = :graph_name)
|
379
384
|
{subject_key => subject, predicate_key => predicate, object_key => object, graph_key => graph_name}
|
380
385
|
end
|
381
386
|
|
@@ -392,17 +397,40 @@ module RDF
|
|
392
397
|
##
|
393
398
|
# Returns a graph containing this statement in reified form.
|
394
399
|
#
|
395
|
-
# @param
|
400
|
+
# @param [RDF::Term] subject (nil)
|
401
|
+
# Subject of reification.
|
402
|
+
# @param [RDF::Term] id (nil)
|
403
|
+
# Node identifier, when subject is anonymous
|
404
|
+
# @param [RDF::Term] graph_name (nil)
|
405
|
+
# Note, in RDF 1.1, a graph name MUST be an {Resource}.
|
396
406
|
# @return [RDF::Graph]
|
397
407
|
# @see http://www.w3.org/TR/rdf-primer/#reification
|
398
|
-
def reified(
|
399
|
-
RDF::Graph.new(graph_name:
|
400
|
-
subject =
|
408
|
+
def reified(subject: nil, id: nil, graph_name: nil)
|
409
|
+
RDF::Graph.new(graph_name: graph_name) do |graph|
|
410
|
+
subject = subject || RDF::Node.new(id)
|
401
411
|
graph << [subject, RDF.type, RDF[:Statement]]
|
402
412
|
graph << [subject, RDF.subject, self.subject]
|
403
413
|
graph << [subject, RDF.predicate, self.predicate]
|
404
414
|
graph << [subject, RDF.object, self.object]
|
405
415
|
end
|
406
416
|
end
|
417
|
+
|
418
|
+
protected
|
419
|
+
##
|
420
|
+
# @overload #to_hash
|
421
|
+
# Returns the terms of this statement as a `Hash`.
|
422
|
+
#
|
423
|
+
# @param (see #to_h)
|
424
|
+
# @return (see #to_h)
|
425
|
+
# @deprecated Use {#to_h} instead.
|
426
|
+
def method_missing(meth, *args)
|
427
|
+
case meth
|
428
|
+
when :to_hash
|
429
|
+
warn "[DEPRECATION] Statement#to_hash is deprecated, use Statement#to_h instead. Called from #{Gem.location_of_caller.join(':')}"
|
430
|
+
self.to_h
|
431
|
+
else
|
432
|
+
super
|
433
|
+
end
|
434
|
+
end
|
407
435
|
end
|
408
436
|
end
|
data/lib/rdf/model/uri.rb
CHANGED
@@ -143,6 +143,7 @@ module RDF
|
|
143
143
|
# @return [RDF::URI] an immutable, frozen URI object
|
144
144
|
def self.intern(*args)
|
145
145
|
str = args.first
|
146
|
+
args << {} unless args.last.is_a?(Hash) # FIXME: needed until #to_hash is removed to avoid DEPRECATION warning.
|
146
147
|
(cache[(str = str.to_s).to_sym] ||= self.new(*args)).freeze
|
147
148
|
end
|
148
149
|
|
@@ -200,10 +201,10 @@ module RDF
|
|
200
201
|
end
|
201
202
|
|
202
203
|
##
|
203
|
-
# @overload URI(uri, options
|
204
|
+
# @overload URI(uri, **options)
|
204
205
|
# @param [URI, String, #to_s] uri
|
205
206
|
#
|
206
|
-
# @overload URI(options
|
207
|
+
# @overload URI(**options)
|
207
208
|
# @param [Hash{Symbol => Object}] options
|
208
209
|
# @option [String, #to_s] :scheme The scheme component.
|
209
210
|
# @option [String, #to_s] :user The user component.
|
@@ -281,7 +282,7 @@ module RDF
|
|
281
282
|
#
|
282
283
|
# @return [Boolean] `true` or `false`
|
283
284
|
# @see http://en.wikipedia.org/wiki/URI_scheme
|
284
|
-
# @see
|
285
|
+
# @see NON_HIER_SCHEMES
|
285
286
|
# @since 1.0.10
|
286
287
|
def hier?
|
287
288
|
!NON_HIER_SCHEMES.include?(scheme)
|
@@ -807,7 +808,7 @@ module RDF
|
|
807
808
|
##
|
808
809
|
# Returns a hash code for this URI.
|
809
810
|
#
|
810
|
-
# @return [
|
811
|
+
# @return [Integer]
|
811
812
|
def hash
|
812
813
|
@hash ||= (value.hash * -1)
|
813
814
|
end
|
@@ -819,7 +820,7 @@ module RDF
|
|
819
820
|
def object
|
820
821
|
@object ||= parse(@value)
|
821
822
|
end
|
822
|
-
alias_method :
|
823
|
+
alias_method :to_h, :object
|
823
824
|
|
824
825
|
##{
|
825
826
|
# Parse a URI into it's components
|
@@ -1287,6 +1288,23 @@ module RDF
|
|
1287
1288
|
""
|
1288
1289
|
end
|
1289
1290
|
end
|
1291
|
+
|
1292
|
+
protected
|
1293
|
+
##
|
1294
|
+
# @overload #to_hash
|
1295
|
+
# Returns object representation of this URI, broken into components
|
1296
|
+
#
|
1297
|
+
# @return (see #object)
|
1298
|
+
# @deprecated Use {#to_h} instead.
|
1299
|
+
def method_missing(meth, *args)
|
1300
|
+
case meth
|
1301
|
+
when :to_hash
|
1302
|
+
warn "[DEPRECATION] URI#to_hash is deprecated, use URI#to_h instead. Called from #{Gem.location_of_caller.join(':')}"
|
1303
|
+
self.to_h
|
1304
|
+
else
|
1305
|
+
super
|
1306
|
+
end
|
1307
|
+
end
|
1290
1308
|
end
|
1291
1309
|
|
1292
1310
|
# RDF::IRI is a synonym for RDF::URI
|
data/lib/rdf/nquads.rb
CHANGED
@@ -106,7 +106,7 @@ module RDF
|
|
106
106
|
# @param [Hash{Symbol => Object}] options = ({})
|
107
107
|
# @return [String]
|
108
108
|
# @since 0.4.0
|
109
|
-
def format_statement(statement, options
|
109
|
+
def format_statement(statement, **options)
|
110
110
|
format_quad(*statement.to_quad, options)
|
111
111
|
end
|
112
112
|
|
@@ -119,7 +119,7 @@ module RDF
|
|
119
119
|
# @param [RDF::Term] graph_name
|
120
120
|
# @param [Hash{Symbol => Object}] options = ({})
|
121
121
|
# @return [String]
|
122
|
-
def format_quad(subject, predicate, object, graph_name, options
|
122
|
+
def format_quad(subject, predicate, object, graph_name, **options)
|
123
123
|
s = "%s %s %s " % [subject, predicate, object].map { |value| format_term(value, options) }
|
124
124
|
s += format_term(graph_name, options) + " " if graph_name
|
125
125
|
s + "."
|
data/lib/rdf/ntriples/reader.rb
CHANGED
@@ -91,8 +91,9 @@ module RDF::NTriples
|
|
91
91
|
# @param [String] input
|
92
92
|
# @param [{Symbol => Object}] options
|
93
93
|
# From {RDF::Reader#initialize}
|
94
|
+
# @option options [RDF::Util::Logger] :logger ([])
|
94
95
|
# @return [RDF::Term]
|
95
|
-
def self.unserialize(input, options
|
96
|
+
def self.unserialize(input, **options)
|
96
97
|
case input
|
97
98
|
when nil then nil
|
98
99
|
else self.new(input, {logger: []}.merge(options)).read_value
|
@@ -102,27 +103,27 @@ module RDF::NTriples
|
|
102
103
|
##
|
103
104
|
# (see unserialize)
|
104
105
|
# @return [RDF::Resource]
|
105
|
-
def self.parse_subject(input, options
|
106
|
+
def self.parse_subject(input, **options)
|
106
107
|
parse_uri(input, options) || parse_node(input, options)
|
107
108
|
end
|
108
109
|
|
109
110
|
##
|
110
111
|
# (see unserialize)
|
111
112
|
# @return [RDF::URI]
|
112
|
-
def self.parse_predicate(input, options
|
113
|
+
def self.parse_predicate(input, *options)
|
113
114
|
parse_uri(input, intern: true)
|
114
115
|
end
|
115
116
|
|
116
117
|
##
|
117
118
|
# (see unserialize)
|
118
|
-
def self.parse_object(input, options
|
119
|
+
def self.parse_object(input, **options)
|
119
120
|
parse_uri(input, options) || parse_node(input, options) || parse_literal(input, options)
|
120
121
|
end
|
121
122
|
|
122
123
|
##
|
123
124
|
# (see unserialize)
|
124
125
|
# @return [RDF::Node]
|
125
|
-
def self.parse_node(input, options
|
126
|
+
def self.parse_node(input, **options)
|
126
127
|
if input =~ NODEID
|
127
128
|
RDF::Node.new($1)
|
128
129
|
end
|
@@ -130,18 +131,19 @@ module RDF::NTriples
|
|
130
131
|
|
131
132
|
##
|
132
133
|
# (see unserialize)
|
134
|
+
# @param [Boolean] intern (false) Use Interned URI
|
133
135
|
# @return [RDF::URI]
|
134
|
-
def self.parse_uri(input,
|
136
|
+
def self.parse_uri(input, intern: false, **options)
|
135
137
|
if input =~ URIREF
|
136
138
|
uri_str = unescape($1)
|
137
|
-
RDF::URI.send(
|
139
|
+
RDF::URI.send(intern ? :intern : :new, unescape($1))
|
138
140
|
end
|
139
141
|
end
|
140
142
|
|
141
143
|
##
|
142
144
|
# (see unserialize)
|
143
145
|
# @return [RDF::Literal]
|
144
|
-
def self.parse_literal(input, options
|
146
|
+
def self.parse_literal(input, **options)
|
145
147
|
case input
|
146
148
|
when LITERAL_WITH_LANGUAGE
|
147
149
|
RDF::Literal.new(unescape($1), language: $4)
|
@@ -218,12 +220,13 @@ module RDF::NTriples
|
|
218
220
|
end
|
219
221
|
|
220
222
|
##
|
223
|
+
# @param [Boolean] intern (false) Use Interned Node
|
221
224
|
# @return [RDF::URI]
|
222
225
|
# @see http://www.w3.org/TR/rdf-testcases/#ntrip_grammar (uriref)
|
223
|
-
def read_uriref(
|
226
|
+
def read_uriref(intern: false, **options)
|
224
227
|
if uri_str = match(URIREF)
|
225
228
|
uri_str = self.class.unescape(uri_str)
|
226
|
-
uri = RDF::URI.send(intern? &&
|
229
|
+
uri = RDF::URI.send(intern? && intern ? :intern : :new, uri_str)
|
227
230
|
uri.validate! if validate?
|
228
231
|
uri.canonicalize! if canonicalize?
|
229
232
|
uri
|