rdf 1.1.17.1 → 1.99.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README +9 -9
- data/VERSION +1 -1
- data/lib/rdf/cli.rb +10 -10
- data/lib/rdf/format.rb +9 -9
- data/lib/rdf/mixin/enumerable.rb +66 -38
- data/lib/rdf/mixin/mutable.rb +11 -5
- data/lib/rdf/mixin/queryable.rb +2 -2
- data/lib/rdf/model/graph.rb +60 -40
- data/lib/rdf/model/list.rb +9 -9
- data/lib/rdf/model/literal/boolean.rb +1 -1
- data/lib/rdf/model/literal/date.rb +1 -1
- data/lib/rdf/model/literal/datetime.rb +5 -5
- data/lib/rdf/model/literal/decimal.rb +1 -1
- data/lib/rdf/model/literal/double.rb +3 -1
- data/lib/rdf/model/literal/integer.rb +1 -1
- data/lib/rdf/model/literal/time.rb +5 -5
- data/lib/rdf/model/literal/token.rb +1 -1
- data/lib/rdf/model/literal.rb +40 -6
- data/lib/rdf/model/node.rb +1 -1
- data/lib/rdf/model/statement.rb +88 -30
- data/lib/rdf/model/term.rb +10 -1
- data/lib/rdf/model/uri.rb +24 -25
- data/lib/rdf/nquads.rb +13 -22
- data/lib/rdf/ntriples/format.rb +4 -5
- data/lib/rdf/ntriples/reader.rb +10 -10
- data/lib/rdf/ntriples/writer.rb +6 -6
- data/lib/rdf/query/pattern.rb +49 -35
- data/lib/rdf/query/solution.rb +1 -1
- data/lib/rdf/query/solutions.rb +4 -4
- data/lib/rdf/query.rb +81 -40
- data/lib/rdf/reader.rb +22 -5
- data/lib/rdf/repository.rb +86 -37
- data/lib/rdf/transaction.rb +41 -20
- data/lib/rdf/util/file.rb +35 -18
- data/lib/rdf/vocab/schema.rb +5129 -5127
- data/lib/rdf/vocabulary.rb +43 -60
- data/lib/rdf/writer.rb +22 -12
- data/lib/rdf.rb +19 -4
- metadata +19 -5
data/lib/rdf/vocabulary.rb
CHANGED
@@ -12,45 +12,17 @@ module RDF
|
|
12
12
|
# The following vocabularies are pre-defined for your convenience:
|
13
13
|
#
|
14
14
|
# * {RDF} - Resource Description Framework (RDF)
|
15
|
-
# * {RDF::CC} - Creative Commons (CC)
|
16
|
-
# * {RDF::CERT} - W3 Authentication Certificate (CERT)
|
17
|
-
# * {RDF::DC} - Dublin Core (DC)
|
18
|
-
# * {RDF::DC11} - Dublin Core 1.1 (DC11) _deprecated_
|
19
|
-
# * {RDF::DOAP} - Description of a Project (DOAP)
|
20
|
-
# * {RDF::EXIF} - Exchangeable Image File Format (EXIF)
|
21
|
-
# * {RDF::FOAF} - Friend of a Friend (FOAF)
|
22
|
-
# * {RDF::GEO} - WGS84 Geo Positioning (GEO)
|
23
|
-
# * {RDF::GR} - Good Relations
|
24
|
-
# * {RDF::HT} - Hypertext Transfer Protocol (HTTP)
|
25
|
-
# * {RDF::ICAL} - iCal
|
26
|
-
# * {RDF::MA} - W3C Meda Annotations
|
27
|
-
# * {RDF::OG} - FaceBook OpenGraph
|
28
15
|
# * {RDF::OWL} - Web Ontology Language (OWL)
|
29
|
-
# * {RDF::PROV} - W3C Provenance Ontology
|
30
16
|
# * {RDF::RDFS} - RDF Schema (RDFS)
|
31
|
-
# * {RDF::RSA} - W3 RSA Keys (RSA)
|
32
|
-
# * {RDF::RSS} - RDF Site Summary (RSS)
|
33
|
-
# * {RDF::SCHEMA} - Schema.org
|
34
|
-
# * {RDF::SIOC} - Semantically-Interlinked Online Communities (SIOC)
|
35
|
-
# * {RDF::SKOS} - Simple Knowledge Organization System (SKOS)
|
36
|
-
# * {RDF::SKOSXL} - SKOS Simple Knowledge Organization System eXtension for Labels (SKOS-XL)
|
37
|
-
# * {RDF::V} - Data Vocabulary
|
38
|
-
# * {RDF::VCARD} - vCard vocabulary
|
39
|
-
# * {RDF::VOID} - Vocabulary of Interlinked Datasets (VoID)
|
40
|
-
# * {RDF::WDRS} - Protocol for Web Description Resources (POWDER)
|
41
|
-
# * {RDF::WOT} - Web of Trust (WOT)
|
42
|
-
# * {RDF::XHTML} - Extensible HyperText Markup Language (XHTML)
|
43
|
-
# * {RDF::XHV} - W3C XHTML Vocabulary
|
44
17
|
# * {RDF::XSD} - XML Schema (XSD)
|
45
18
|
#
|
19
|
+
# Other vocabularies are defined in the [rdf-vocab](http://rubygems.org/gems/rdf-vocab) gem
|
20
|
+
#
|
46
21
|
# @example Using pre-defined RDF vocabularies
|
47
22
|
# include RDF
|
48
23
|
#
|
49
|
-
# DC.title #=> RDF::URI("http://purl.org/dc/terms/title")
|
50
|
-
# FOAF.knows #=> RDF::URI("http://xmlns.com/foaf/0.1/knows")
|
51
24
|
# RDF.type #=> RDF::URI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
|
52
25
|
# RDFS.seeAlso #=> RDF::URI("http://www.w3.org/2000/01/rdf-schema#seeAlso")
|
53
|
-
# RSS.title #=> RDF::URI("http://purl.org/rss/1.0/title")
|
54
26
|
# OWL.sameAs #=> RDF::URI("http://www.w3.org/2002/07/owl#sameAs")
|
55
27
|
# XSD.dateTime #=> RDF::URI("http://www.w3.org/2001/XMLSchema#dateTime")
|
56
28
|
#
|
@@ -143,7 +115,7 @@ module RDF
|
|
143
115
|
Term.intern("#{self}property", attributes: {label: "property", vocab: self})
|
144
116
|
else
|
145
117
|
name, options = args
|
146
|
-
options = {:
|
118
|
+
options = {label: name.to_s, vocab: self}.merge(options || {})
|
147
119
|
uri_str = [to_s, name.to_s].join('')
|
148
120
|
Term.cache.delete(uri_str) # Clear any previous entry
|
149
121
|
prop = Term.intern(uri_str, attributes: options)
|
@@ -247,17 +219,17 @@ module RDF
|
|
247
219
|
|
248
220
|
##
|
249
221
|
# @return [String] The label for the named property
|
250
|
-
# @deprecated Use {RDF::Vocabulary::Term#label}
|
222
|
+
# @deprecated Use {RDF::Vocabulary::Term#label} instead.
|
251
223
|
def label_for(name)
|
252
|
-
warn "[DEPRECATION] `Vocabulary.label_for is deprecated. Please use Vocabulary::Term#label instead."
|
224
|
+
warn "[DEPRECATION] `Vocabulary.label_for is deprecated. Please use Vocabulary::Term#label instead. Called from #{Gem.location_of_caller.join(':')}"
|
253
225
|
self[name].label || ''
|
254
226
|
end
|
255
227
|
|
256
228
|
##
|
257
229
|
# @return [String] The comment for the named property
|
258
|
-
# @deprecated Use {RDF::Vocabulary::Term#comment}
|
230
|
+
# @deprecated Use {RDF::Vocabulary::Term#comment} instead.
|
259
231
|
def comment_for(name)
|
260
|
-
warn "[DEPRECATION] `Vocabulary.comment_for is deprecated. Please use Vocabulary::Term#comment instead."
|
232
|
+
warn "[DEPRECATION] `Vocabulary.comment_for is deprecated. Please use Vocabulary::Term#comment instead. Called from #{Gem.location_of_caller.join(':')}"
|
261
233
|
self[name].comment || ''
|
262
234
|
end
|
263
235
|
|
@@ -315,7 +287,7 @@ module RDF
|
|
315
287
|
# @option options [URI, #to_s] :location
|
316
288
|
# Location from which to load the vocabulary, if not from `uri`.
|
317
289
|
# @option options [Array<Symbol>, Hash{Symbol => Hash}] :extra
|
318
|
-
# Extra terms to add to the vocabulary. In the first form, it is an array of symbols, for which terms are created. In the second, it is a Hash mapping symbols to property attributes, as described in {
|
290
|
+
# Extra terms to add to the vocabulary. In the first form, it is an array of symbols, for which terms are created. In the second, it is a Hash mapping symbols to property attributes, as described in {RDF::Vocabulary.property}.
|
319
291
|
# @return [RDF::Vocabulary] the loaded vocabulary
|
320
292
|
def load(uri, options = {})
|
321
293
|
source = options.fetch(:location, uri)
|
@@ -508,8 +480,39 @@ module RDF
|
|
508
480
|
|
509
481
|
# A Vocabulary Term is a URI that can also act as an {Enumerable} to generate the RDF definition of vocabulary terms as defined within the vocabulary definition.
|
510
482
|
class Term < RDF::URI
|
511
|
-
#
|
512
|
-
#
|
483
|
+
# @!method comment
|
484
|
+
# `rdfs:comment` accessor
|
485
|
+
# @return [String]
|
486
|
+
# @!method label
|
487
|
+
# `rdfs:label` accessor
|
488
|
+
# @return [String]
|
489
|
+
# @!method type
|
490
|
+
# `rdf:type` accessor
|
491
|
+
# @return [RDF::URI]
|
492
|
+
# @!method subClassOf
|
493
|
+
# `rdfs:subClassOf` accessor
|
494
|
+
# @return [RDF::URI]
|
495
|
+
# @!method subPropertyOf
|
496
|
+
# `rdfs:subPropertyOf` accessor
|
497
|
+
# @return [RDF::URI]
|
498
|
+
# @!method domain
|
499
|
+
# `rdfs:domain` accessor
|
500
|
+
# @return [RDF::URI]
|
501
|
+
# @!method range
|
502
|
+
# `rdfs:range` accessor
|
503
|
+
# @return [RDF::URI]
|
504
|
+
# @!method inverseOf
|
505
|
+
# `owl:inverseOf` accessor
|
506
|
+
# @return [RDF::URI]
|
507
|
+
# @!method domainIncludes
|
508
|
+
# `schema:domainIncludes` accessor
|
509
|
+
# @return [RDF::URI]
|
510
|
+
# @!method rangeIncludes
|
511
|
+
# `schema:rangeIncludes` accoessor
|
512
|
+
# @return [RDF::URI]
|
513
|
+
# @!attribute [rw] attributes
|
514
|
+
# Attributes of this vocabulary term, used for finding `label` and `comment` and to serialize the term back to RDF.
|
515
|
+
# @return [Hash{Symbol,Resource => Term, #to_s}]
|
513
516
|
attr_accessor :attributes
|
514
517
|
|
515
518
|
##
|
@@ -680,38 +683,18 @@ module RDF
|
|
680
683
|
@attributes.has_key?(method) || super
|
681
684
|
end
|
682
685
|
|
683
|
-
# Accessor for
|
686
|
+
# Accessor for `domainIncludes`
|
684
687
|
# @return [RDF::URI]
|
685
688
|
def domain_includes
|
686
689
|
Array(@attributes[:domainIncludes]).map {|v| RDF::Vocabulary.expand_pname(v)}
|
687
690
|
end
|
688
691
|
|
689
|
-
# Accessor for
|
692
|
+
# Accessor for `rangeIncludes`
|
690
693
|
# @return [RDF::URI]
|
691
694
|
def range_includes
|
692
695
|
Array(@attributes[:rangeIncludes]).map {|v| RDF::Vocabulary.expand_pname(v)}
|
693
696
|
end
|
694
697
|
|
695
|
-
# @!method comment
|
696
|
-
# @return [String]
|
697
|
-
# @!method label
|
698
|
-
# @return [String]
|
699
|
-
# @!method type
|
700
|
-
# @return [RDF::URI]
|
701
|
-
# @!method subClassOf
|
702
|
-
# @return [RDF::URI]
|
703
|
-
# @!method subPropertyOf
|
704
|
-
# @return [RDF::URI]
|
705
|
-
# @!method domain
|
706
|
-
# @return [RDF::URI]
|
707
|
-
# @!method range
|
708
|
-
# @return [RDF::URI]
|
709
|
-
# @!method inverseOf
|
710
|
-
# @return [RDF::URI]
|
711
|
-
# @!method domainIncludes
|
712
|
-
# @return [RDF::URI]
|
713
|
-
# @!method rangeIncludes
|
714
|
-
# @return [RDF::URI]
|
715
698
|
protected
|
716
699
|
# Implement accessor to symbol attributes
|
717
700
|
def method_missing(method, *args, &block)
|
data/lib/rdf/writer.rb
CHANGED
@@ -12,9 +12,9 @@ module RDF
|
|
12
12
|
# @example Obtaining an RDF writer class
|
13
13
|
# RDF::Writer.for(:ntriples) #=> RDF::NTriples::Writer
|
14
14
|
# RDF::Writer.for("spec/data/output.nt")
|
15
|
-
# RDF::Writer.for(:
|
16
|
-
# RDF::Writer.for(:
|
17
|
-
# RDF::Writer.for(:
|
15
|
+
# RDF::Writer.for(file_name: "spec/data/output.nt")
|
16
|
+
# RDF::Writer.for(file_extension: "nt")
|
17
|
+
# RDF::Writer.for(content_type: "application/n-triples")
|
18
18
|
#
|
19
19
|
# @example Instantiating an RDF writer class
|
20
20
|
# RDF::Writer.for(:ntriples).new($stdout) { |writer| ... }
|
@@ -78,7 +78,7 @@ module RDF
|
|
78
78
|
#
|
79
79
|
# @return [Class]
|
80
80
|
def self.for(options = {})
|
81
|
-
options = options.merge(:
|
81
|
+
options = options.merge(has_writer: true) if options.is_a?(Hash)
|
82
82
|
if format = self.format || Format.for(options)
|
83
83
|
format.writer
|
84
84
|
end
|
@@ -115,7 +115,7 @@ module RDF
|
|
115
115
|
if io.is_a?(String)
|
116
116
|
io = File.open(io, 'w')
|
117
117
|
elsif io.respond_to?(:external_encoding) && io.external_encoding
|
118
|
-
options = {:
|
118
|
+
options = {encoding: io.external_encoding}.merge(options)
|
119
119
|
end
|
120
120
|
io.set_encoding(options[:encoding]) if io.respond_to?(:set_encoding) && options[:encoding]
|
121
121
|
method = data.respond_to?(:each_statement) ? :each_statement : :each
|
@@ -206,7 +206,7 @@ module RDF
|
|
206
206
|
# the base URI to use when constructing relative URIs (not supported
|
207
207
|
# by all writers)
|
208
208
|
# @option options [Boolean] :unique_bnodes (false)
|
209
|
-
# Use unique {Node} identifiers, defaults to using the identifier which the node was originall initialized with (if any). Implementations should ensure that Nodes are serialized using a unique representation independent of any identifier used when creating the node. See {NTriples#format_node}
|
209
|
+
# Use unique {Node} identifiers, defaults to using the identifier which the node was originall initialized with (if any). Implementations should ensure that Nodes are serialized using a unique representation independent of any identifier used when creating the node. See {NTriples::Writer#format_node}
|
210
210
|
# @yield [writer] `self`
|
211
211
|
# @yieldparam [RDF::Writer] writer
|
212
212
|
# @yieldreturn [void]
|
@@ -260,7 +260,7 @@ module RDF
|
|
260
260
|
#
|
261
261
|
# @example
|
262
262
|
# writer.prefixes = {
|
263
|
-
# :
|
263
|
+
# dc: RDF::URI('http://purl.org/dc/terms/'),
|
264
264
|
# }
|
265
265
|
#
|
266
266
|
# @param [Hash{Symbol => RDF::URI}] prefixes
|
@@ -361,9 +361,9 @@ module RDF
|
|
361
361
|
##
|
362
362
|
# @param [RDF::Graph] graph
|
363
363
|
# @return [void] `self`
|
364
|
-
# @deprecated
|
364
|
+
# @deprecated Use {RDF::Writable#insert_graph} instead .
|
365
365
|
def write_graph(graph)
|
366
|
-
warn "[DEPRECATION] `Writer#graph_write is deprecated. Please use RDF::Writable#insert instead."
|
366
|
+
warn "[DEPRECATION] `Writer#graph_write is deprecated. Please use RDF::Writable#insert instead. Called from #{Gem.location_of_caller.join(':')}"
|
367
367
|
graph.each_triple { |*triple| write_triple(*triple) }
|
368
368
|
self
|
369
369
|
end
|
@@ -371,9 +371,9 @@ module RDF
|
|
371
371
|
##
|
372
372
|
# @param [Array<RDF::Statement>] statements
|
373
373
|
# @return [void] `self`
|
374
|
-
# @deprecated
|
374
|
+
# @deprecated Use {RDF::Writable#insert} instead.
|
375
375
|
def write_statements(*statements)
|
376
|
-
warn "[DEPRECATION] `Writer#write_statements is deprecated. Please use RDF::Writable#insert instead."
|
376
|
+
warn "[DEPRECATION] `Writer#write_statements is deprecated. Please use RDF::Writable#insert instead. Called from #{Gem.location_of_caller.join(':')}"
|
377
377
|
statements.each { |statement| write_statement(statement) }
|
378
378
|
self
|
379
379
|
end
|
@@ -384,6 +384,7 @@ module RDF
|
|
384
384
|
# @raise [RDF::WriterError] if validating and attempting to write an invalid {RDF::Statement} or if canonicalizing a statement which cannot be canonicalized.
|
385
385
|
def write_statement(statement)
|
386
386
|
statement = statement.canonicalize! if canonicalize?
|
387
|
+
raise RDF::WriterError, "Statement #{statement.inspect} is incomplete" if statement.incomplete?
|
387
388
|
raise RDF::WriterError, "Statement #{statement.inspect} is invalid" if validate? && statement.invalid?
|
388
389
|
write_triple(*statement.to_triple)
|
389
390
|
self
|
@@ -427,7 +428,16 @@ module RDF
|
|
427
428
|
else nil
|
428
429
|
end
|
429
430
|
end
|
430
|
-
|
431
|
+
|
432
|
+
##
|
433
|
+
# @param [RDF::Term] term
|
434
|
+
# @return [String]
|
435
|
+
# @since 0.3.0
|
436
|
+
# @deprecated Use {#format_term} instead
|
437
|
+
def format_value(term, options = {})
|
438
|
+
warn "[DEPRECATION] Writer#format_value is being replaced with Writer#format_term in RDF.rb 2.0. Called from #{Gem.location_of_caller.join(':')}"
|
439
|
+
format_term(term, options)
|
440
|
+
end
|
431
441
|
|
432
442
|
##
|
433
443
|
# @param [RDF::Node] value
|
data/lib/rdf.rb
CHANGED
@@ -55,7 +55,20 @@ module RDF
|
|
55
55
|
autoload :Vocabulary, 'rdf/vocabulary'
|
56
56
|
autoload :StrictVocabulary, 'rdf/vocabulary'
|
57
57
|
VOCABS = Dir.glob(File.join(File.dirname(__FILE__), 'rdf', 'vocab', '*.rb')).map { |f| File.basename(f)[0...-(File.extname(f).size)].to_sym } rescue []
|
58
|
-
|
58
|
+
|
59
|
+
# Use const_missing instead of autoload to load most vocabularies so we can provide deprecation messages
|
60
|
+
def self.const_missing(constant)
|
61
|
+
if VOCABS.include?(constant.to_s.downcase.to_sym)
|
62
|
+
warn %([DEPRECATION] the #{constant} vocabulary will be moved to the rdf-vocab gem
|
63
|
+
for the RDF.rb 2.0 release. Use as RDF::Vocab::#{constant}, or include RDF::Vocab in the RDF module.
|
64
|
+
Called from #{Gem.location_of_caller.join(':')}
|
65
|
+
).gsub(/^\s+/, '') unless [:OWL, :RDFS, :RDFV, :XSD].include?(constant)
|
66
|
+
require "rdf/vocab/#{constant.to_s.downcase}"
|
67
|
+
const_get(constant)
|
68
|
+
else
|
69
|
+
super
|
70
|
+
end
|
71
|
+
end
|
59
72
|
|
60
73
|
# Utilities
|
61
74
|
autoload :Util, 'rdf/util'
|
@@ -152,7 +165,9 @@ module RDF
|
|
152
165
|
# @option options [RDF::URI] :predicate (nil)
|
153
166
|
# @option options [RDF::Term] :object (nil)
|
154
167
|
# @option options [RDF::Resource] :context (nil)
|
155
|
-
#
|
168
|
+
# Alias for :graph_name, :context is deprecated in RDF.rb.
|
169
|
+
# @option options [RDF::Resource] :graph_name (nil)
|
170
|
+
# Note, a graph_name MUST be an IRI or BNode.
|
156
171
|
# @return [RDF::Statement]
|
157
172
|
#
|
158
173
|
# @overload Statement(subject, predicate, object, options = {})
|
@@ -160,7 +175,7 @@ module RDF
|
|
160
175
|
# @param [RDF::URI] predicate
|
161
176
|
# @param [RDF::Term] object
|
162
177
|
# @param [Hash{Symbol => Object}] options
|
163
|
-
# @option options [RDF::Resource] :
|
178
|
+
# @option options [RDF::Resource] :graph_name (nil)
|
164
179
|
# @return [RDF::Statement]
|
165
180
|
#
|
166
181
|
def self.Statement(*args)
|
@@ -203,7 +218,7 @@ module RDF
|
|
203
218
|
end
|
204
219
|
|
205
220
|
##
|
206
|
-
# Delegate other methods to RDF::
|
221
|
+
# Delegate other methods to RDF::RDFV
|
207
222
|
def self.method_missing(property, *args, &block)
|
208
223
|
if args.empty?
|
209
224
|
# Special-case rdf:_n for all integers
|
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: 1.
|
4
|
+
version: 1.99.0
|
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: 2015-10-
|
13
|
+
date: 2015-10-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: link_header
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rdf-vocab
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.8'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.8'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rdf-xsd
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +142,14 @@ dependencies:
|
|
128
142
|
requirements:
|
129
143
|
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.
|
145
|
+
version: '3.0'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: 3.
|
152
|
+
version: '3.0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rspec-its
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -333,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
347
|
version: '0'
|
334
348
|
requirements: []
|
335
349
|
rubyforge_project: rdf
|
336
|
-
rubygems_version: 2.4.
|
350
|
+
rubygems_version: 2.4.5.1
|
337
351
|
signing_key:
|
338
352
|
specification_version: 4
|
339
353
|
summary: A Ruby library for working with Resource Description Framework (RDF) data.
|