rdf 3.0.12 → 3.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/AUTHORS +1 -1
- data/README.md +46 -11
- data/VERSION +1 -1
- data/etc/doap.nt +74 -80
- data/lib/rdf.rb +35 -23
- data/lib/rdf/changeset.rb +87 -19
- data/lib/rdf/cli.rb +7 -7
- data/lib/rdf/format.rb +17 -10
- data/lib/rdf/mixin/enumerable.rb +3 -2
- data/lib/rdf/mixin/mutable.rb +5 -15
- data/lib/rdf/mixin/queryable.rb +12 -4
- data/lib/rdf/mixin/writable.rb +9 -14
- data/lib/rdf/model/dataset.rb +1 -1
- data/lib/rdf/model/graph.rb +5 -2
- data/lib/rdf/model/list.rb +5 -5
- data/lib/rdf/model/literal.rb +3 -3
- data/lib/rdf/model/statement.rb +30 -7
- data/lib/rdf/model/uri.rb +44 -23
- data/lib/rdf/nquads.rb +6 -6
- data/lib/rdf/ntriples.rb +6 -4
- data/lib/rdf/ntriples/reader.rb +29 -7
- data/lib/rdf/ntriples/writer.rb +10 -1
- data/lib/rdf/query.rb +27 -35
- data/lib/rdf/query/hash_pattern_normalizer.rb +14 -12
- data/lib/rdf/query/pattern.rb +51 -18
- data/lib/rdf/query/solution.rb +20 -1
- data/lib/rdf/query/solutions.rb +15 -5
- data/lib/rdf/query/variable.rb +17 -5
- data/lib/rdf/reader.rb +76 -25
- data/lib/rdf/repository.rb +32 -18
- data/lib/rdf/transaction.rb +1 -1
- data/lib/rdf/util.rb +6 -5
- data/lib/rdf/util/cache.rb +2 -2
- data/lib/rdf/util/coercions.rb +60 -0
- data/lib/rdf/util/file.rb +20 -10
- data/lib/rdf/util/logger.rb +6 -6
- data/lib/rdf/vocab/owl.rb +401 -86
- data/lib/rdf/vocab/rdfs.rb +81 -18
- data/lib/rdf/vocab/rdfv.rb +147 -1
- data/lib/rdf/vocab/writer.rb +41 -3
- data/lib/rdf/vocab/xsd.rb +203 -2
- data/lib/rdf/vocabulary.rb +108 -14
- data/lib/rdf/writer.rb +32 -10
- metadata +32 -27
data/lib/rdf/vocabulary.rb
CHANGED
@@ -58,6 +58,9 @@ module RDF
|
|
58
58
|
class Vocabulary
|
59
59
|
extend ::Enumerable
|
60
60
|
|
61
|
+
autoload :Format, 'rdf/vocab/writer'
|
62
|
+
autoload :Writer, 'rdf/vocab/writer'
|
63
|
+
|
61
64
|
class << self
|
62
65
|
##
|
63
66
|
# Enumerates known RDF vocabulary classes.
|
@@ -67,16 +70,103 @@ module RDF
|
|
67
70
|
# @return [Enumerator]
|
68
71
|
def each(&block)
|
69
72
|
if self.equal?(Vocabulary)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
if @vocabs
|
74
|
+
@vocabs.select(&:name).each(&block)
|
75
|
+
else
|
76
|
+
# This is needed since all vocabulary classes are defined using
|
77
|
+
# Ruby's autoloading facility, meaning that `@@subclasses` will be
|
78
|
+
# empty until each subclass has been touched or require'd.
|
79
|
+
RDF::VOCABS.each { |v, p| RDF.const_get(p[:class_name].to_sym) unless v == :rdf }
|
80
|
+
@@subclasses.select(&:name).each(&block)
|
81
|
+
end
|
75
82
|
else
|
76
83
|
__properties__.each(&block)
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
87
|
+
##
|
88
|
+
# A hash of all vocabularies by prefix showing relevant URI and
|
89
|
+
# associated vocabulary Class Name
|
90
|
+
#
|
91
|
+
# @return [Hash{Symbol => Hash{Symbol => String}}]
|
92
|
+
def vocab_map
|
93
|
+
# Create an initial duplicate of RDF::VOCABS. We want to
|
94
|
+
# ensure the hash itself is modifiable but the values are
|
95
|
+
# frozen.
|
96
|
+
@vocab_map ||= RDF::VOCABS.transform_values(&:freeze)
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Return the vocabulary based on it's class_name symbol
|
101
|
+
#
|
102
|
+
# @param [Symbol] sym
|
103
|
+
# @return [RDF::Vocabulary]
|
104
|
+
def from_sym(sym)
|
105
|
+
RDF.const_get(sym.to_sym)
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# Register a vocabulary for internal prefix lookups. Parameters
|
110
|
+
# of interest include `:uri`, `:class_name`, `:source`, and `:skip`.
|
111
|
+
#
|
112
|
+
# @param prefix [Symbol] the prefix to use
|
113
|
+
# @param vocab [String, Class] either the URI or the vocab class
|
114
|
+
# @param params [Hash{Symbol => String}] Relevant parameters
|
115
|
+
# @return [Hash] The parameter hash, but frozen
|
116
|
+
def register(prefix, vocab, **params)
|
117
|
+
# check the input
|
118
|
+
raise ArgumentError, "#{prefix} must be symbol-able" unless
|
119
|
+
[String, Symbol].any? { |c| prefix.is_a? c }
|
120
|
+
|
121
|
+
# note an explicit uri: param overrides
|
122
|
+
case vocab
|
123
|
+
when String then params[:uri] ||= vocab
|
124
|
+
when Class
|
125
|
+
raise ArgumentError, 'vocab must be an RDF::(Strict)Vocabulary' unless
|
126
|
+
vocab.ancestors.include? RDF::Vocabulary
|
127
|
+
params[:class] = vocab
|
128
|
+
params[:uri] ||= vocab.to_uri.to_s
|
129
|
+
end
|
130
|
+
|
131
|
+
# fill in the class name
|
132
|
+
params[:class_name] ||= prefix.to_s.upcase
|
133
|
+
|
134
|
+
# now freeze and assign
|
135
|
+
vocab_map[prefix.to_s.to_sym] = params.freeze
|
136
|
+
end
|
137
|
+
|
138
|
+
##
|
139
|
+
# Limits iteration over vocabularies to just those selected
|
140
|
+
#
|
141
|
+
# @example limit to set of vocabularies by symbol
|
142
|
+
# RDF::Vocabulary.limit_vocabs(:rdf, :rdfs
|
143
|
+
# RDF::Vocabulary.find_term('http://www.w3.org/2000/01/rdf-schema#Resource').pname
|
144
|
+
# # => 'rdfs:Resource'
|
145
|
+
#
|
146
|
+
# @example limit to set of vocabularies by class name
|
147
|
+
# RDF::Vocabulary.limit_vocabs(RDF::RDFV, RDF::RDFS)
|
148
|
+
# RDF::Vocabulary.find_term('http://www.w3.org/2000/01/rdf-schema#Resource').pname
|
149
|
+
# # => 'rdfs:Resource'
|
150
|
+
#
|
151
|
+
# @param [Array<symbol, RDF::Vocabulary>] vocabs
|
152
|
+
# A list of vocabularies (symbols or classes) which may
|
153
|
+
# be returned by {Vocabulary.each}. Also limits
|
154
|
+
# vocabularies that will be inspeced for other methods.
|
155
|
+
# Set to nil, or an empty array to reset.
|
156
|
+
# @return [Array<RDF::Vocabulary>]
|
157
|
+
def limit_vocabs(*vocabs)
|
158
|
+
@vocabs = if Array(vocabs).empty?
|
159
|
+
nil
|
160
|
+
else
|
161
|
+
vocabs.map do |vocab|
|
162
|
+
vocab = :rdfv if vocab == :rdf
|
163
|
+
vocab.is_a?(Symbol) && RDF::VOCABS.key?(vocab) ?
|
164
|
+
RDF.const_get(RDF::VOCABS[vocab][:class_name].to_sym) :
|
165
|
+
vocab
|
166
|
+
end.compact
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
80
170
|
##
|
81
171
|
# Is this a strict vocabulary, or a liberal vocabulary allowing arbitrary properties?
|
82
172
|
def strict?; false; end
|
@@ -291,7 +381,9 @@ module RDF
|
|
291
381
|
prefix, suffix = pname.to_s.split(":", 2)
|
292
382
|
if prefix == "rdf"
|
293
383
|
RDF[suffix]
|
294
|
-
elsif
|
384
|
+
elsif vocab_detail = RDF::Vocabulary.vocab_map[prefix.to_sym]
|
385
|
+
vocab = vocab_detail[:class] ||
|
386
|
+
RDF::Vocabulary.from_sym(vocab_detail[:class_name])
|
295
387
|
suffix.to_s.empty? ? vocab.to_uri : vocab[suffix]
|
296
388
|
else
|
297
389
|
(RDF::Vocabulary.find_term(pname) rescue nil) || RDF::URI(pname, validate: true)
|
@@ -817,11 +909,10 @@ module RDF
|
|
817
909
|
# @return [RDF::Vocabulary]
|
818
910
|
attr_reader :vocab
|
819
911
|
|
820
|
-
#
|
821
|
-
#
|
912
|
+
# Attributes of this vocabulary term, used for finding `label` and `comment` and to serialize the term back to RDF.
|
913
|
+
# @return [Hash{Symbol,Resource => Term, #to_s}]
|
822
914
|
attr_reader :attributes
|
823
915
|
|
824
|
-
|
825
916
|
##
|
826
917
|
# @overload new(uri, attributes:, **options)
|
827
918
|
# @param [URI, String, #to_s] uri
|
@@ -873,8 +964,8 @@ module RDF
|
|
873
964
|
#
|
874
965
|
# @param (see #initialize)
|
875
966
|
# @return [RDF::URI] an immutable, frozen URI object
|
876
|
-
def self.intern(str, *args)
|
877
|
-
(URI.cache[(str = str.to_s).to_sym] ||= self.new(str, *args)).freeze
|
967
|
+
def self.intern(str, *args, **options)
|
968
|
+
(URI.cache[(str = str.to_s).to_sym] ||= self.new(str, *args, **options)).freeze
|
878
969
|
end
|
879
970
|
|
880
971
|
##
|
@@ -882,7 +973,10 @@ module RDF
|
|
882
973
|
#
|
883
974
|
# @return [RDF::URI]
|
884
975
|
def dup
|
885
|
-
|
976
|
+
term = super.extend(Term)
|
977
|
+
term.instance_variable_set(:@vocab, vocab)
|
978
|
+
term.instance_variable_set(:@attributes, attributes)
|
979
|
+
term
|
886
980
|
end
|
887
981
|
|
888
982
|
##
|
@@ -943,7 +1037,7 @@ module RDF
|
|
943
1037
|
##
|
944
1038
|
# Values of an attributes as {RDF::Value}
|
945
1039
|
#
|
946
|
-
# @
|
1040
|
+
# @param [Symbol] prop
|
947
1041
|
# @return [RDF::Value, Array<RDF::Value>]
|
948
1042
|
def attribute_value(prop)
|
949
1043
|
values = attributes[prop]
|
@@ -1001,7 +1095,7 @@ module RDF
|
|
1001
1095
|
when :domainIncludes, :rangeIncludes
|
1002
1096
|
RDF::Vocabulary.find_term("http://schema.org/#{p}")
|
1003
1097
|
when :broader, :definition, :exactMatch, :hasTopConcept, :inScheme,
|
1004
|
-
:member, :narrower, :related, :altLabel, :
|
1098
|
+
:member, :narrower, :related, :altLabel, :editorialNote,
|
1005
1099
|
:notation, :note, :prefLabel
|
1006
1100
|
RDF::Vocabulary.find_term("http://www.w3.org/2004/02/skos/core##{p}")
|
1007
1101
|
else
|
data/lib/rdf/writer.rb
CHANGED
@@ -79,7 +79,7 @@ module RDF
|
|
79
79
|
# @param [String] filename
|
80
80
|
# @return [Class]
|
81
81
|
#
|
82
|
-
# @overload for(
|
82
|
+
# @overload for(options = {})
|
83
83
|
# Finds an RDF writer class based on various options.
|
84
84
|
#
|
85
85
|
# @param [Hash{Symbol => Object}] options
|
@@ -89,9 +89,15 @@ module RDF
|
|
89
89
|
# @return [Class]
|
90
90
|
#
|
91
91
|
# @return [Class]
|
92
|
-
def self.for(
|
93
|
-
|
94
|
-
|
92
|
+
def self.for(*arg, &block)
|
93
|
+
case arg.length
|
94
|
+
when 0 then arg = nil
|
95
|
+
when 1 then arg = arg.first
|
96
|
+
else
|
97
|
+
raise ArgumentError, "Format.for accepts zero or one argument, got #{arg.length}."
|
98
|
+
end
|
99
|
+
arg = arg.merge(has_writer: true) if arg.is_a?(Hash)
|
100
|
+
if format = self.format || Format.for(arg)
|
95
101
|
format.writer
|
96
102
|
end
|
97
103
|
end
|
@@ -505,11 +511,12 @@ module RDF
|
|
505
511
|
# @since 0.3.0
|
506
512
|
def format_term(term, **options)
|
507
513
|
case term
|
508
|
-
when String
|
509
|
-
when RDF::List
|
510
|
-
when RDF::Literal
|
511
|
-
when RDF::URI
|
512
|
-
when RDF::Node
|
514
|
+
when String then format_literal(RDF::Literal(term, **options), **options)
|
515
|
+
when RDF::List then format_list(term, **options)
|
516
|
+
when RDF::Literal then format_literal(term, **options)
|
517
|
+
when RDF::URI then format_uri(term, **options)
|
518
|
+
when RDF::Node then format_node(term, **options)
|
519
|
+
when RDF::Statement then format_rdfstar(term, **options)
|
513
520
|
else nil
|
514
521
|
end
|
515
522
|
end
|
@@ -553,7 +560,22 @@ module RDF
|
|
553
560
|
# @abstract
|
554
561
|
# @since 0.2.3
|
555
562
|
def format_list(value, **options)
|
556
|
-
format_term(value.subject, options)
|
563
|
+
format_term(value.subject, **options)
|
564
|
+
end
|
565
|
+
|
566
|
+
##
|
567
|
+
# Formats a referenced triple.
|
568
|
+
#
|
569
|
+
# @example
|
570
|
+
# <<<s> <p> <o>>> <p> <o> .
|
571
|
+
#
|
572
|
+
# @param [RDF::Statement] value
|
573
|
+
# @param [Hash{Symbol => Object}] options = ({})
|
574
|
+
# @return [String]
|
575
|
+
# @raise [NotImplementedError] unless implemented in subclass
|
576
|
+
# @abstract
|
577
|
+
def format_rdfstar(value, **options)
|
578
|
+
raise NotImplementedError.new("#{self.class}#format_statement") # override in subclasses
|
557
579
|
end
|
558
580
|
|
559
581
|
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.
|
4
|
+
version: 3.1.3
|
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: 2020-06-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: link_header
|
@@ -52,154 +52,154 @@ dependencies:
|
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '3.
|
55
|
+
version: '3.1'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '3.
|
62
|
+
version: '3.1'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: rdf-turtle
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
69
|
+
version: '3.1'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '3.
|
76
|
+
version: '3.1'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: rdf-vocab
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '3.
|
83
|
+
version: '3.1'
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '3.
|
90
|
+
version: '3.1'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rdf-xsd
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '3.
|
97
|
+
version: '3.1'
|
98
98
|
type: :development
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '3.
|
104
|
+
version: '3.1'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: rest-client
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '2.
|
111
|
+
version: '2.1'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '2.
|
118
|
+
version: '2.1'
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: rspec
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '3.
|
125
|
+
version: '3.9'
|
126
126
|
type: :development
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '3.
|
132
|
+
version: '3.9'
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: rspec-its
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '1.
|
139
|
+
version: '1.3'
|
140
140
|
type: :development
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '1.
|
146
|
+
version: '1.3'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: webmock
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '3.
|
153
|
+
version: '3.7'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
156
|
version_requirements: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: '3.
|
160
|
+
version: '3.7'
|
161
161
|
- !ruby/object:Gem::Dependency
|
162
162
|
name: yard
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: 0.9.
|
167
|
+
version: 0.9.20
|
168
168
|
type: :development
|
169
169
|
prerelease: false
|
170
170
|
version_requirements: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: 0.9.
|
174
|
+
version: 0.9.20
|
175
175
|
- !ruby/object:Gem::Dependency
|
176
176
|
name: faraday
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
179
|
- - "~>"
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0.
|
181
|
+
version: '0.17'
|
182
182
|
type: :development
|
183
183
|
prerelease: false
|
184
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
186
|
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version: '0.
|
188
|
+
version: '0.17'
|
189
189
|
- !ruby/object:Gem::Dependency
|
190
190
|
name: faraday_middleware
|
191
191
|
requirement: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
193
|
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version: '0.
|
195
|
+
version: '0.13'
|
196
196
|
type: :development
|
197
197
|
prerelease: false
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: '0.
|
202
|
+
version: '0.13'
|
203
203
|
description: RDF.rb is a pure-Ruby library for working with Resource Description Framework
|
204
204
|
(RDF) data.
|
205
205
|
email: public-rdf-ruby@w3.org
|
@@ -267,6 +267,7 @@ files:
|
|
267
267
|
- lib/rdf/util.rb
|
268
268
|
- lib/rdf/util/aliasing.rb
|
269
269
|
- lib/rdf/util/cache.rb
|
270
|
+
- lib/rdf/util/coercions.rb
|
270
271
|
- lib/rdf/util/file.rb
|
271
272
|
- lib/rdf/util/logger.rb
|
272
273
|
- lib/rdf/util/uuid.rb
|
@@ -278,11 +279,15 @@ files:
|
|
278
279
|
- lib/rdf/vocab/xsd.rb
|
279
280
|
- lib/rdf/vocabulary.rb
|
280
281
|
- lib/rdf/writer.rb
|
281
|
-
homepage: https://
|
282
|
+
homepage: https://github.com/ruby-rdf/rdf
|
282
283
|
licenses:
|
283
284
|
- Unlicense
|
284
285
|
metadata:
|
285
286
|
documentation_uri: https://rubydoc.info/github/ruby-rdf/rdf
|
287
|
+
bug_tracker_uri: https://github.com/ruby-rdf/rdf/issues
|
288
|
+
homepage_uri: https://ruby-rdf.github.io/rdf
|
289
|
+
mailing_list_uri: https://lists.w3.org/Archives/Public/public-rdf-ruby/
|
290
|
+
source_code_uri: https://github.com/ruby-rdf/rdf
|
286
291
|
post_install_message:
|
287
292
|
rdoc_options: []
|
288
293
|
require_paths:
|
@@ -291,14 +296,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
291
296
|
requirements:
|
292
297
|
- - ">="
|
293
298
|
- !ruby/object:Gem::Version
|
294
|
-
version: 2.
|
299
|
+
version: '2.4'
|
295
300
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
296
301
|
requirements:
|
297
302
|
- - ">="
|
298
303
|
- !ruby/object:Gem::Version
|
299
304
|
version: '0'
|
300
305
|
requirements: []
|
301
|
-
rubygems_version: 3.
|
306
|
+
rubygems_version: 3.1.3
|
302
307
|
signing_key:
|
303
308
|
specification_version: 4
|
304
309
|
summary: A Ruby library for working with Resource Description Framework (RDF) data.
|