rdf 3.3.1 → 3.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/VERSION +1 -1
- data/lib/rdf/mixin/enumerable.rb +2 -1
- data/lib/rdf/mixin/queryable.rb +2 -0
- data/lib/rdf/mixin/writable.rb +3 -2
- data/lib/rdf/model/dataset.rb +2 -1
- data/lib/rdf/model/graph.rb +3 -2
- data/lib/rdf/model/literal.rb +11 -1
- data/lib/rdf/model/statement.rb +11 -2
- data/lib/rdf/model/uri.rb +14 -13
- data/lib/rdf/model/value.rb +5 -4
- data/lib/rdf/nquads.rb +2 -1
- data/lib/rdf/ntriples/reader.rb +34 -14
- data/lib/rdf/ntriples/writer.rb +13 -0
- data/lib/rdf/ntriples.rb +5 -1
- data/lib/rdf/query/pattern.rb +2 -2
- data/lib/rdf/query/variable.rb +2 -0
- data/lib/rdf/query.rb +6 -9
- data/lib/rdf/repository.rb +3 -0
- data/lib/rdf/vocab/rdfv.rb +10 -0
- data/lib/rdf/writer.rb +20 -3
- metadata +40 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9b8e26b43854ef02542acbc81b88426f3b5989df1156e010bfb5250f3fb31c6
|
4
|
+
data.tar.gz: 7a4303eccec6cd20b29bcfcba87a9cffb36c3db7f7045bbd375264922e2a4a66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31e5f916ecc25dddf44f6b6057311b784afa1a593b406e6ba1944481c3f5a2ac8f4de752a86d779d415e21c3292064c363bb9369c86ba8d401b0aebade755195
|
7
|
+
data.tar.gz: 68d96d55bc4a4ad89472b212db1b6e64a03f30936b0cc7cbc8e802505a133117c1fcf0a311f1a0f6b5c4e91255841f95cd7d4ef2963db665bb648d900aa2e05b
|
data/README.md
CHANGED
@@ -265,9 +265,15 @@ A separate [SPARQL][SPARQL doc] gem builds on basic BGP support to provide full
|
|
265
265
|
foaf[:name] #=> RDF::URI("http://xmlns.com/foaf/0.1/name")
|
266
266
|
foaf['mbox'] #=> RDF::URI("http://xmlns.com/foaf/0.1/mbox")
|
267
267
|
|
268
|
+
## RDF-star CG
|
269
|
+
|
270
|
+
[RDF.rb][] includes provisional support for [RDF-star][] with an N-Triples/N-Quads syntax for quoted triples in the _subject_ or _object_ position.
|
271
|
+
|
272
|
+
Support for RDF-star quoted triples is now deprecated, use RDF 1.2 triple terms instead.
|
273
|
+
|
268
274
|
## RDF 1.2
|
269
275
|
|
270
|
-
[RDF.rb][] includes provisional support for [RDF 1.2][] with an N-Triples/N-Quads syntax for
|
276
|
+
[RDF.rb][] includes provisional support for [RDF 1.2][] with an N-Triples/N-Quads syntax for triple terms in the _object_ position.
|
271
277
|
[RDF.rb][] includes provisional support for [RDF 1.2][] directional language-tagged strings, which are literals of type `rdf:dirLangString` having both a `language` and `direction`.
|
272
278
|
|
273
279
|
Internally, an `RDF::Statement` is treated as another resource, along with `RDF::URI` and `RDF::Node`, which allows an `RDF::Statement` to have a `#subject` or `#object` which is also an `RDF::Statement`.
|
@@ -394,6 +400,9 @@ from BNode identity (i.e., they each entail the other)
|
|
394
400
|
* {RDF::RDFV} - RDF Vocabulary (RDFV)
|
395
401
|
* {RDF::XSD} - XML Schema (XSD)
|
396
402
|
|
403
|
+
## Change Log
|
404
|
+
|
405
|
+
See [Release Notes on GitHub](https://github.com/ruby-rdf/rdf/releases)
|
397
406
|
|
398
407
|
## Dependencies
|
399
408
|
|
@@ -498,6 +507,7 @@ see <https://unlicense.org/> or the accompanying {file:UNLICENSE} file.
|
|
498
507
|
[SPARQL doc]: https://ruby-rdf.github.io/sparql
|
499
508
|
[RDF 1.0]: https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/
|
500
509
|
[RDF 1.1]: https://www.w3.org/TR/rdf11-concepts/
|
510
|
+
[RDF-star]: https://www.w3.org/2021/12/rdf-star.html
|
501
511
|
[RDF 1.2]: https://www.w3.org/TR/rdf12-concepts/
|
502
512
|
[SPARQL 1.1]: https://www.w3.org/TR/sparql11-query/
|
503
513
|
[RDF.rb]: https://ruby-rdf.github.io/
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.
|
1
|
+
3.3.2
|
data/lib/rdf/mixin/enumerable.rb
CHANGED
@@ -83,7 +83,8 @@ module RDF
|
|
83
83
|
# * `:literal_equality' preserves [term-equality](https://www.w3.org/TR/rdf11-concepts/#dfn-literal-term-equality) for literals. Literals are equal only if their lexical values and datatypes are equal, character by character. Literals may be "inlined" to value-space for efficiency only if `:literal_equality` is `false`.
|
84
84
|
# * `:validity` allows a concrete Enumerable implementation to indicate that it does or does not support valididty checking. By default implementations are assumed to support validity checking.
|
85
85
|
# * `:skolemize` supports [Skolemization](https://www.w3.org/wiki/BnodeSkolemization) of an `Enumerable`. Implementations supporting this feature must implement a `#skolemize` method, taking a base URI used for minting URIs for BNodes as stable identifiers and a `#deskolemize` method, also taking a base URI used for turning URIs having that prefix back into the same BNodes which were originally skolemized.
|
86
|
-
# * `:
|
86
|
+
# * `:rdf_full` supports RDF 1.2 Full profile, including support for embedded Triple Terms.
|
87
|
+
# * `:quoted_triples` supports RDF-star quoted triples.
|
87
88
|
# * `:base_direction` supports RDF 1.2 directional language-tagged strings.
|
88
89
|
#
|
89
90
|
# @param [Symbol, #to_sym] feature
|
data/lib/rdf/mixin/queryable.rb
CHANGED
@@ -146,6 +146,8 @@ module RDF
|
|
146
146
|
#
|
147
147
|
# Patterns may also have embedded patterns as either a subject or object, recursively.
|
148
148
|
#
|
149
|
+
# Patterns with a variable `graph_name` do not match the default graph.
|
150
|
+
#
|
149
151
|
# When matching, match an embedded pattern against embedded statements, recursively. (see {RDF::Query::Pattern#eql?})
|
150
152
|
#
|
151
153
|
# @param [RDF::Query::Pattern] pattern
|
data/lib/rdf/mixin/writable.rb
CHANGED
@@ -127,10 +127,11 @@ module RDF
|
|
127
127
|
def insert_statements(statements)
|
128
128
|
each = statements.respond_to?(:each_statement) ? :each_statement : :each
|
129
129
|
statements.__send__(each) do |statement|
|
130
|
-
|
130
|
+
# FIXME: quoted triples are now deprecated
|
131
|
+
if statement.embedded? && respond_to?(:supports?) && !(supports?(:quoted_triples) || supports?(:rdf_full))
|
131
132
|
raise ArgumentError, "Writable does not support quoted triples"
|
132
133
|
end
|
133
|
-
if statement.object && statement.object.literal? && statement.object.direction? && !supports?(:base_direction)
|
134
|
+
if statement.object && statement.object.literal? && statement.object.direction? && respond_to?(:supports?) && !supports?(:base_direction)
|
134
135
|
raise ArgumentError, "Writable does not support directional languaged-tagged strings"
|
135
136
|
end
|
136
137
|
insert_statement(statement)
|
data/lib/rdf/model/dataset.rb
CHANGED
@@ -104,7 +104,8 @@ module RDF
|
|
104
104
|
# @private
|
105
105
|
# @see RDF::Enumerable#supports?
|
106
106
|
def supports?(feature)
|
107
|
-
|
107
|
+
# FIXME: quoted triples are now deprecated
|
108
|
+
return true if %i(graph_name quoted_triples rdf_full).include?(feature)
|
108
109
|
super
|
109
110
|
end
|
110
111
|
|
data/lib/rdf/model/graph.rb
CHANGED
@@ -305,8 +305,9 @@ module RDF
|
|
305
305
|
# @private
|
306
306
|
# @see RDF::Mutable#insert
|
307
307
|
def insert_statement(statement)
|
308
|
-
|
309
|
-
|
308
|
+
# FIXME: quoted triples are now deprecated
|
309
|
+
if statement.embedded? && !(@data.supports?(:quoted_triples) || @data.supports?(:rdf_full))
|
310
|
+
raise ArgumentError, "Graph does not support the RDF Full profile"
|
310
311
|
end
|
311
312
|
if statement.object && statement.object.literal? && statement.object.direction? && !@data.supports?(:base_direction)
|
312
313
|
raise ArgumentError, "Graph does not support directional languaged-tagged strings"
|
data/lib/rdf/model/literal.rb
CHANGED
@@ -194,7 +194,7 @@ module RDF
|
|
194
194
|
@string = @string.encode(Encoding::UTF_8).freeze if instance_variable_defined?(:@string)
|
195
195
|
@object = @string if instance_variable_defined?(:@string) && @object.is_a?(String)
|
196
196
|
@language = language.to_s.downcase.to_sym if language
|
197
|
-
@direction = direction.to_s.
|
197
|
+
@direction = direction.to_s.to_sym if direction
|
198
198
|
@datatype = RDF::URI(datatype).freeze if datatype
|
199
199
|
@datatype ||= self.class.const_get(:DATATYPE) if self.class.const_defined?(:DATATYPE)
|
200
200
|
@datatype ||= if instance_variable_defined?(:@language) && @language &&
|
@@ -451,6 +451,16 @@ module RDF
|
|
451
451
|
false
|
452
452
|
end
|
453
453
|
|
454
|
+
##
|
455
|
+
# Returns `true` if this is a language-tagged literal in the English
|
456
|
+
# language.
|
457
|
+
#
|
458
|
+
# @return [Boolean] `true` or `false`
|
459
|
+
# @since 3.3.2
|
460
|
+
def english?
|
461
|
+
/\Aen(?:-[A-Za-z]{2})?\z/ === language.to_s
|
462
|
+
end
|
463
|
+
|
454
464
|
##
|
455
465
|
# Validates the value using {RDF::Value#valid?}, raising an error if the value is
|
456
466
|
# invalid.
|
data/lib/rdf/model/statement.rb
CHANGED
@@ -71,7 +71,8 @@ module RDF
|
|
71
71
|
# @option options [RDF::Term] :graph_name (nil)
|
72
72
|
# Note, in RDF 1.1, a graph name MUST be an {Resource}.
|
73
73
|
# @option options [Boolean] :inferred used as a marker to record that this statement was inferred based on semantic relationships (T-Box).
|
74
|
-
# @option options [Boolean] :
|
74
|
+
# @option options [Boolean] :tripleTerm used as a marker to record that this statement appears as the object of another RDF::Statement.
|
75
|
+
# @option options [Boolean] :quoted used as a marker to record that this statement quoted and appears as the subject or object of another RDF::Statement (deprecated).
|
75
76
|
# @return [RDF::Statement]
|
76
77
|
#
|
77
78
|
# @overload initialize(subject, predicate, object, **options)
|
@@ -84,7 +85,8 @@ module RDF
|
|
84
85
|
# @option options [RDF::Term] :graph_name (nil)
|
85
86
|
# Note, in RDF 1.1, a graph name MUST be an {Resource}.
|
86
87
|
# @option options [Boolean] :inferred used as a marker to record that this statement was inferred based on semantic relationships (T-Box).
|
87
|
-
# @option options [Boolean] :
|
88
|
+
# @option options [Boolean] :tripleTerm used as a marker to record that this statement appears as the object of another RDF::Statement.
|
89
|
+
# @option options [Boolean] :quoted used as a marker to record that this statement quoted and appears as the subject or object of another RDF::Statement (deprecated).
|
88
90
|
# @return [RDF::Statement]
|
89
91
|
def initialize(subject = nil, predicate = nil, object = nil, options = {})
|
90
92
|
if subject.is_a?(Hash)
|
@@ -211,6 +213,13 @@ module RDF
|
|
211
213
|
|
212
214
|
##
|
213
215
|
# @return [Boolean]
|
216
|
+
def tripleTerm?
|
217
|
+
!!@options[:tripleTerm]
|
218
|
+
end
|
219
|
+
|
220
|
+
##
|
221
|
+
# @return [Boolean]
|
222
|
+
# @deprecated Quoted triples are now deprecated
|
214
223
|
def quoted?
|
215
224
|
!!@options[:quoted]
|
216
225
|
end
|
data/lib/rdf/model/uri.rb
CHANGED
@@ -70,10 +70,10 @@ module RDF
|
|
70
70
|
IUSERINFO = Regexp.compile("(?:(?:#{IUNRESERVED})|(?:#{PCT_ENCODED})|(?:#{SUB_DELIMS})|:)*").freeze
|
71
71
|
IAUTHORITY = Regexp.compile("(?:#{IUSERINFO}@)?#{IHOST}(?::#{PORT})?").freeze
|
72
72
|
|
73
|
-
IRELATIVE_PART = Regexp.compile("
|
74
|
-
IRELATIVE_REF = Regexp.compile("
|
73
|
+
IRELATIVE_PART = Regexp.compile("//#{IAUTHORITY}(?:#{IPATH_ABEMPTY})|(?:#{IPATH_ABSOLUTE})|(?:#{IPATH_NOSCHEME})|(?:#{IPATH_EMPTY})").freeze
|
74
|
+
IRELATIVE_REF = Regexp.compile("^(?:#{IRELATIVE_PART})(?:\\?#{IQUERY})?(?:\\##{IFRAGMENT})?$").freeze
|
75
75
|
|
76
|
-
IHIER_PART = Regexp.compile("
|
76
|
+
IHIER_PART = Regexp.compile("//#{IAUTHORITY}(?:#{IPATH_ABEMPTY})|(?:#{IPATH_ABSOLUTE})|(?:#{IPATH_ROOTLESS})|(?:#{IPATH_EMPTY})").freeze
|
77
77
|
IRI = Regexp.compile("^#{SCHEME}:(?:#{IHIER_PART})(?:\\?#{IQUERY})?(?:\\##{IFRAGMENT})?$").freeze
|
78
78
|
|
79
79
|
# Split an IRI into it's component parts
|
@@ -1240,17 +1240,18 @@ module RDF
|
|
1240
1240
|
query.to_s.split('&').
|
1241
1241
|
inject(return_type == Hash ? {} : []) do |memo,kv|
|
1242
1242
|
k,v = kv.to_s.split('=', 2)
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1243
|
+
unless k.to_s.empty?
|
1244
|
+
k = CGI.unescape(k)
|
1245
|
+
v = CGI.unescape(v) if v
|
1246
|
+
if return_type == Hash
|
1247
|
+
case memo[k]
|
1248
|
+
when nil then memo[k] = v
|
1249
|
+
when Array then memo[k] << v
|
1250
|
+
else memo[k] = [memo[k], v]
|
1251
|
+
end
|
1252
|
+
else
|
1253
|
+
memo << [k, v].compact
|
1251
1254
|
end
|
1252
|
-
else
|
1253
|
-
memo << [k, v].compact
|
1254
1255
|
end
|
1255
1256
|
memo
|
1256
1257
|
end
|
data/lib/rdf/model/value.rb
CHANGED
@@ -197,19 +197,20 @@ module RDF
|
|
197
197
|
alias_method :validate, :validate!
|
198
198
|
|
199
199
|
##
|
200
|
-
# Returns `true` if this Value starts with the given
|
200
|
+
# Returns `true` if this Value starts with any of the given strings.
|
201
201
|
#
|
202
202
|
# @example
|
203
203
|
# RDF::URI('http://example.org/').start_with?('http') #=> true
|
204
204
|
# RDF::Node('_:foo').start_with?('_:bar') #=> false
|
205
205
|
# RDF::Litera('Apple').start_with?('Orange') #=> false
|
206
|
+
# RDF::Litera('Apple').start_with?('Orange', 'Apple') #=> true
|
206
207
|
#
|
207
|
-
# @param [
|
208
|
+
# @param [Array<#to_s>] *args Any number of strings to check against.
|
208
209
|
# @return [Boolean] `true` or `false`
|
209
210
|
# @see String#start_with?
|
210
211
|
# @since 0.3.0
|
211
|
-
def start_with?(
|
212
|
-
to_s.start_with?(
|
212
|
+
def start_with?(*args)
|
213
|
+
to_s.start_with?(*args.map(&:to_s))
|
213
214
|
end
|
214
215
|
alias_method :starts_with?, :start_with?
|
215
216
|
|
data/lib/rdf/nquads.rb
CHANGED
@@ -71,9 +71,10 @@ module RDF
|
|
71
71
|
|
72
72
|
begin
|
73
73
|
unless blank? || read_comment
|
74
|
+
# FIXME: quoted triples are now deprecated
|
74
75
|
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
75
76
|
predicate = read_uriref(intern: true) || fail_predicate
|
76
|
-
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
77
|
+
object = read_uriref || read_node || read_literal || read_tripleTerm || read_quotedTriple || fail_object
|
77
78
|
graph_name = read_uriref || read_node
|
78
79
|
if validate? && !read_eos
|
79
80
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
data/lib/rdf/ntriples/reader.rb
CHANGED
@@ -51,14 +51,14 @@ module RDF::NTriples
|
|
51
51
|
# @see http://www.w3.org/TR/turtle/
|
52
52
|
##
|
53
53
|
# Unicode regular expressions.
|
54
|
-
U_CHARS1
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
U_CHARS2
|
61
|
-
IRI_RANGE
|
54
|
+
U_CHARS1 = Regexp.compile(<<-EOS.gsub(/\s+/, ''))
|
55
|
+
[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|
|
56
|
+
[\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|
|
57
|
+
[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|
|
58
|
+
[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u{10000}-\\u{EFFFF}]
|
59
|
+
EOS
|
60
|
+
U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]").freeze
|
61
|
+
IRI_RANGE = Regexp.compile("[[^<>\"{}\|\^`\\\\]&&[^\\x00-\\x20]]").freeze
|
62
62
|
|
63
63
|
PN_CHARS_BASE = /[A-Z]|[a-z]|#{U_CHARS1}/.freeze
|
64
64
|
PN_CHARS_U = /_|#{PN_CHARS_BASE}/.freeze
|
@@ -70,8 +70,11 @@ module RDF::NTriples
|
|
70
70
|
LANG_DIR = /@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*(?:--[a-zA-Z]+)?)/.freeze
|
71
71
|
STRING_LITERAL_QUOTE = /"((?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*)"/.freeze
|
72
72
|
|
73
|
-
|
74
|
-
|
73
|
+
TT_START = /^<<\(/.freeze
|
74
|
+
TT_END = /^\s*\)>>/.freeze
|
75
|
+
|
76
|
+
QT_START = /^<</.freeze
|
77
|
+
QT_END = /^\s*>>/.freeze
|
75
78
|
|
76
79
|
# @see http://www.w3.org/TR/rdf-testcases/#ntrip_grammar
|
77
80
|
COMMENT = /^#\s*(.*)$/.freeze
|
@@ -208,7 +211,7 @@ module RDF::NTriples
|
|
208
211
|
begin
|
209
212
|
read_statement
|
210
213
|
rescue RDF::ReaderError
|
211
|
-
value = read_uriref || read_node || read_literal || read_quotedTriple
|
214
|
+
value = read_uriref || read_node || read_literal || read_tripleTerm || read_quotedTriple
|
212
215
|
log_recover
|
213
216
|
value
|
214
217
|
end
|
@@ -226,7 +229,7 @@ module RDF::NTriples
|
|
226
229
|
unless blank? || read_comment
|
227
230
|
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
228
231
|
predicate = read_uriref(intern: true) || fail_predicate
|
229
|
-
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
232
|
+
object = read_uriref || read_node || read_literal || read_tripleTerm || read_quotedTriple || fail_object
|
230
233
|
|
231
234
|
if validate? && !read_eos
|
232
235
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
@@ -242,12 +245,29 @@ module RDF::NTriples
|
|
242
245
|
|
243
246
|
##
|
244
247
|
# @return [RDF::Statement]
|
248
|
+
def read_tripleTerm
|
249
|
+
if @options[:rdfstar] && match(TT_START)
|
250
|
+
subject = read_uriref || read_node || fail_subject
|
251
|
+
predicate = read_uriref(intern: true) || fail_predicate
|
252
|
+
object = read_uriref || read_node || read_literal || read_tripleTerm || fail_object
|
253
|
+
if !match(TT_END)
|
254
|
+
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
255
|
+
end
|
256
|
+
RDF::Statement.new(subject, predicate, object, tripleTerm: true)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# @return [RDF::Statement]
|
262
|
+
# @deprecated Quoted triples are now deprecated
|
245
263
|
def read_quotedTriple
|
246
|
-
if @options[:rdfstar] && match(
|
264
|
+
if @options[:rdfstar] && !match(TT_START) && match(QT_START)
|
265
|
+
warn "[DEPRECATION] RDF-star quoted triples are deprecated and will be removed in a future version.\n" +
|
266
|
+
"Called from #{Gem.location_of_caller.join(':')}"
|
247
267
|
subject = read_uriref || read_node || read_quotedTriple || fail_subject
|
248
268
|
predicate = read_uriref(intern: true) || fail_predicate
|
249
269
|
object = read_uriref || read_node || read_literal || read_quotedTriple || fail_object
|
250
|
-
if !match(
|
270
|
+
if !match(QT_END)
|
251
271
|
log_error("Expected end of statement (found: #{current_line.inspect})", lineno: lineno, exception: RDF::ReaderError)
|
252
272
|
end
|
253
273
|
RDF::Statement.new(subject, predicate, object, quoted: true)
|
data/lib/rdf/ntriples/writer.rb
CHANGED
@@ -223,15 +223,28 @@ module RDF::NTriples
|
|
223
223
|
format_triple(*statement.to_triple, **options)
|
224
224
|
end
|
225
225
|
|
226
|
+
##
|
227
|
+
# Returns the N-Triples representation of an RDF 1.2 triple term.
|
228
|
+
#
|
229
|
+
# @param [RDF::Statement] statement
|
230
|
+
# @param [Hash{Symbol => Object}] options ({})
|
231
|
+
# @return [String]
|
232
|
+
def format_tripleTerm(statement, **options)
|
233
|
+
"<<(%s %s %s)>>" % statement.to_a.map { |value| format_term(value, **options) }
|
234
|
+
end
|
235
|
+
|
226
236
|
##
|
227
237
|
# Returns the N-Triples representation of an RDF-star quoted triple.
|
228
238
|
#
|
229
239
|
# @param [RDF::Statement] statement
|
230
240
|
# @param [Hash{Symbol => Object}] options ({})
|
231
241
|
# @return [String]
|
242
|
+
# @deprecated Quoted triples are now deprecated
|
232
243
|
def format_quotedTriple(statement, **options)
|
244
|
+
# FIXME: quoted triples are now deprecated
|
233
245
|
"<<%s %s %s>>" % statement.to_a.map { |value| format_term(value, **options) }
|
234
246
|
end
|
247
|
+
|
235
248
|
##
|
236
249
|
# Returns the N-Triples representation of a triple.
|
237
250
|
#
|
data/lib/rdf/ntriples.rb
CHANGED
@@ -15,7 +15,11 @@ module RDF
|
|
15
15
|
#
|
16
16
|
# <https://rubygems.org/gems/rdf> <http://purl.org/dc/terms/title> "rdf" .
|
17
17
|
#
|
18
|
-
# ##
|
18
|
+
# ## Triple terms
|
19
|
+
#
|
20
|
+
# Supports statements as resources using `<<(s p o)>>`.
|
21
|
+
|
22
|
+
# ## Quoted Triples (Deprecated)
|
19
23
|
#
|
20
24
|
# Supports statements as resources using `<<s p o>>`.
|
21
25
|
#
|
data/lib/rdf/query/pattern.rb
CHANGED
@@ -23,7 +23,7 @@ module RDF; class Query
|
|
23
23
|
# @option options [Variable, URI, Symbol, nil] :predicate (nil)
|
24
24
|
# @option options [Variable, Term, Symbol, nil] :object (nil)
|
25
25
|
# @option options [Variable, Resource, Symbol, nil, false] :graph_name (nil)
|
26
|
-
# A graph_name of nil matches any graph, a graph_name of false, matches only the default graph.
|
26
|
+
# A graph_name of nil matches any graph, a graph_name of false, matches only the default graph. (See {RDF::Query#initialize})
|
27
27
|
# @option options [Boolean] :optional (false)
|
28
28
|
#
|
29
29
|
# @overload initialize(subject, predicate, object, options = {})
|
@@ -32,7 +32,7 @@ module RDF; class Query
|
|
32
32
|
# @param [Variable, Termm, Symbol, nil] object
|
33
33
|
# @param [Hash{Symbol => Object}] options
|
34
34
|
# @option options [Variable, Resource, Symbol, nil, false] :graph_name (nil)
|
35
|
-
# A graph_name of nil matches any graph, a graph_name of false, matches only the default graph.
|
35
|
+
# A graph_name of nil matches any graph, a graph_name of false, matches only the default graph. (See {RDF::Query#initialize})
|
36
36
|
# @option options [Boolean] :optional (false)
|
37
37
|
#
|
38
38
|
# @note {Statement} treats symbols as interned {Node} instances, in a {Pattern}, they are treated as {Variable}.
|
data/lib/rdf/query/variable.rb
CHANGED
@@ -233,6 +233,8 @@ class RDF::Query
|
|
233
233
|
# Returns `true` if this variable is equivalent to a given `other`
|
234
234
|
# variable. Or, to another Term if bound, or to any other Term
|
235
235
|
#
|
236
|
+
# @note when comparing against the default graph in an {RDF::Dataset}, `other` will be `false` and not be equal to an unbound variable.
|
237
|
+
#
|
236
238
|
# @param [Object] other
|
237
239
|
# @return [Boolean] `true` or `false`
|
238
240
|
# @since 0.3.0
|
data/lib/rdf/query.rb
CHANGED
@@ -151,10 +151,9 @@ module RDF
|
|
151
151
|
# @option options [RDF::Query::Solutions] :solutions (Solutions.new)
|
152
152
|
# @option options [RDF::Resource, RDF::Query::Variable, false] :graph_name (nil)
|
153
153
|
# Default graph name for matching against queryable.
|
154
|
-
#
|
154
|
+
# Queries with a graph name match against a specifically named
|
155
155
|
# graphs if the name is an {RDF::Resource} or bound {RDF::Query::Variable}.
|
156
|
-
#
|
157
|
-
# or named graphs.
|
156
|
+
# Queries using an unbound variable as a graph name only match against named graphs, and will not match the default graph.
|
158
157
|
# The name of `false` will only match against the default graph.
|
159
158
|
# @option options [RDF::Resource, RDF::Query::Variable, false] :name (nil)
|
160
159
|
# Alias for `:graph_name`.
|
@@ -168,10 +167,9 @@ module RDF
|
|
168
167
|
# @param [RDF::Query::Solutions] solutions (Solutions.new)
|
169
168
|
# @param [RDF::Resource, RDF::Query::Variable, false] graph_name (false)
|
170
169
|
# Default graph name for matching against queryable.
|
171
|
-
#
|
170
|
+
# Queries with a graph name match against a specifically named
|
172
171
|
# graphs if the name is an {RDF::Resource} or bound {RDF::Query::Variable}.
|
173
|
-
#
|
174
|
-
# or named graphs.
|
172
|
+
# Queries using an unbound variable as a graph name only match against named graphs, and will not match the default graph.
|
175
173
|
# The name of `false` will only match against the default graph.
|
176
174
|
# @param [RDF::Resource, RDF::Query::Variable, false] name (false)
|
177
175
|
# Alias for `:graph_name`.
|
@@ -285,10 +283,9 @@ module RDF
|
|
285
283
|
# @param [RDF::Query::Solutions] solutions (Solutions.new)
|
286
284
|
# @param [RDF::Resource, RDF::Query::Variable, false] graph_name (nil)
|
287
285
|
# Default graph name for matching against queryable.
|
288
|
-
#
|
286
|
+
# Queries with a graph name match against a specifically named
|
289
287
|
# graphs if the name is an {RDF::Resource} or bound {RDF::Query::Variable}.
|
290
|
-
#
|
291
|
-
# or named graphs.
|
288
|
+
# Queries using an unbound variable as a graph name only match against named graphs, and will not match the default graph.
|
292
289
|
# The name of `false` will only match against the default graph.
|
293
290
|
# @param [RDF::Resource, RDF::Query::Variable, false] name (nil)
|
294
291
|
# Alias for `:graph_name`.
|
data/lib/rdf/repository.rb
CHANGED
@@ -182,6 +182,8 @@ module RDF
|
|
182
182
|
when :validity then @options.fetch(:with_validity, true)
|
183
183
|
when :literal_equality then true
|
184
184
|
when :atomic_write then false
|
185
|
+
when :rdf_full then false
|
186
|
+
# FIXME: quoted triples are now deprecated
|
185
187
|
when :quoted_triples then false
|
186
188
|
when :base_direction then false
|
187
189
|
when :snapshots then false
|
@@ -270,6 +272,7 @@ module RDF
|
|
270
272
|
when :validity then @options.fetch(:with_validity, true)
|
271
273
|
when :literal_equality then true
|
272
274
|
when :atomic_write then true
|
275
|
+
when :rdf_full then true
|
273
276
|
when :quoted_triples then true
|
274
277
|
when :base_direction then true
|
275
278
|
when :snapshots then true
|
data/lib/rdf/vocab/rdfv.rb
CHANGED
@@ -72,6 +72,10 @@ module RDF
|
|
72
72
|
# # @return [RDF::Vocabulary::Term]
|
73
73
|
# # @attr_reader :value
|
74
74
|
#
|
75
|
+
# # Reification predicate
|
76
|
+
# # @return [RDF::Vocabulary::Term]
|
77
|
+
# # @attr_reader :reifies
|
78
|
+
#
|
75
79
|
# # The datatype of RDF literals storing fragments of HTML content.
|
76
80
|
# # @return [RDF::Vocabulary::Term]
|
77
81
|
# # @attr_reader :HTML
|
@@ -253,6 +257,12 @@ module RDF
|
|
253
257
|
range: "http://www.w3.org/2000/01/rdf-schema#Resource".freeze,
|
254
258
|
isDefinedBy: %(http://www.w3.org/1999/02/22-rdf-syntax-ns#).freeze,
|
255
259
|
type: "http://www.w3.org/1999/02/22-rdf-syntax-ns#Property".freeze
|
260
|
+
property :reifies,
|
261
|
+
comment: %(Property relating to a Triple Term.).freeze,
|
262
|
+
domain: "http://www.w3.org/2000/01/rdf-schema#Resource".freeze,
|
263
|
+
label: "reifies".freeze,
|
264
|
+
isDefinedBy: %(http://www.w3.org/1999/02/22-rdf-syntax-ns#).freeze,
|
265
|
+
type: "http://www.w3.org/1999/02/22-rdf-syntax-ns#Property".freeze
|
256
266
|
|
257
267
|
# Datatype definitions
|
258
268
|
term :HTML,
|
data/lib/rdf/writer.rb
CHANGED
@@ -518,7 +518,8 @@ module RDF
|
|
518
518
|
when RDF::Literal then format_literal(term, **options)
|
519
519
|
when RDF::URI then format_uri(term, **options)
|
520
520
|
when RDF::Node then format_node(term, **options)
|
521
|
-
|
521
|
+
# FIXME: quoted triples are now deprecated
|
522
|
+
when RDF::Statement then term.tripleTerm? ? format_tripleTerm(term, **options) : format_quotedTriple(term, **options)
|
522
523
|
else nil
|
523
524
|
end
|
524
525
|
end
|
@@ -566,7 +567,7 @@ module RDF
|
|
566
567
|
end
|
567
568
|
|
568
569
|
##
|
569
|
-
# Formats a referenced triple.
|
570
|
+
# Formats a referenced triple term.
|
570
571
|
#
|
571
572
|
# @example
|
572
573
|
# <<<s> <p> <o>>> <p> <o> .
|
@@ -576,8 +577,24 @@ module RDF
|
|
576
577
|
# @return [String]
|
577
578
|
# @raise [NotImplementedError] unless implemented in subclass
|
578
579
|
# @abstract
|
580
|
+
def format_tripleTerm(value, **options)
|
581
|
+
raise NotImplementedError.new("#{self.class}#format_tripleTerm") # override in subclasses
|
582
|
+
end
|
583
|
+
|
584
|
+
##
|
585
|
+
# Formats a referenced quoted triple.
|
586
|
+
#
|
587
|
+
# @example
|
588
|
+
# <<<s> <p> <o>>> <p> <o> .
|
589
|
+
#
|
590
|
+
# @param [RDF::Statement] value
|
591
|
+
# @param [Hash{Symbol => Object}] options = ({})
|
592
|
+
# @return [String]
|
593
|
+
# @raise [NotImplementedError] unless implemented in subclass
|
594
|
+
# @abstract
|
595
|
+
# @deprecated Quoted Triples are now deprecated in favor of Triple Terms
|
579
596
|
def format_quotedTriple(value, **options)
|
580
|
-
raise NotImplementedError.new("#{self.class}#
|
597
|
+
raise NotImplementedError.new("#{self.class}#format_quotedTriple") # override in subclasses
|
581
598
|
end
|
582
599
|
|
583
600
|
protected
|
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.3.
|
4
|
+
version: 3.3.2
|
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:
|
13
|
+
date: 2024-07-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: link_header
|
@@ -46,6 +46,40 @@ dependencies:
|
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0.2'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: bigdecimal
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.1'
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 3.1.5
|
59
|
+
type: :runtime
|
60
|
+
prerelease: false
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - "~>"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3.1'
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.1.5
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: base64
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
49
83
|
- !ruby/object:Gem::Dependency
|
50
84
|
name: rdf-spec
|
51
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,14 +156,14 @@ dependencies:
|
|
122
156
|
requirements:
|
123
157
|
- - "~>"
|
124
158
|
- !ruby/object:Gem::Version
|
125
|
-
version: '3.
|
159
|
+
version: '3.13'
|
126
160
|
type: :development
|
127
161
|
prerelease: false
|
128
162
|
version_requirements: !ruby/object:Gem::Requirement
|
129
163
|
requirements:
|
130
164
|
- - "~>"
|
131
165
|
- !ruby/object:Gem::Version
|
132
|
-
version: '3.
|
166
|
+
version: '3.13'
|
133
167
|
- !ruby/object:Gem::Dependency
|
134
168
|
name: rspec-its
|
135
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,14 +184,14 @@ dependencies:
|
|
150
184
|
requirements:
|
151
185
|
- - "~>"
|
152
186
|
- !ruby/object:Gem::Version
|
153
|
-
version: '3.
|
187
|
+
version: '3.23'
|
154
188
|
type: :development
|
155
189
|
prerelease: false
|
156
190
|
version_requirements: !ruby/object:Gem::Requirement
|
157
191
|
requirements:
|
158
192
|
- - "~>"
|
159
193
|
- !ruby/object:Gem::Version
|
160
|
-
version: '3.
|
194
|
+
version: '3.23'
|
161
195
|
- !ruby/object:Gem::Dependency
|
162
196
|
name: yard
|
163
197
|
requirement: !ruby/object:Gem::Requirement
|