rdf-sesame 0.1.0 → 0.2.0

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.
data/README CHANGED
@@ -1,32 +1,59 @@
1
- RDF::Sesame: Sesame 2.0 Adapter for RDF.rb
2
- ==========================================
1
+ Sesame 2.0 Adapter for RDF.rb
2
+ =============================
3
3
 
4
- This is an [RDF.rb](http://rdf.rubyforge.org/) plugin that adds support for
5
- Sesame 2.0-compatible RDF repositories accessed using Sesame's
6
- [HTTP API](http://www.openrdf.org/doc/sesame2/system/ch08.html).
4
+ This is an [RDF.rb][] plugin that adds support for [Sesame 2.0][]-compatible
5
+ RDF repositories accessed using Sesame's [HTTP API][Sesame API].
7
6
 
8
7
  * <http://github.com/bendiken/rdf-sesame>
9
8
 
10
- ### About Sesame
11
-
12
- * <http://www.openrdf.org/>
13
-
14
9
  Documentation
15
10
  -------------
16
11
 
17
12
  * {RDF::Sesame}
13
+ * {RDF::Sesame::Connection}
14
+ * {RDF::Sesame::Repository}
15
+ * {RDF::Sesame::Server}
16
+
17
+ This adapter implements the [`RDF::Repository`][RDF::Repository] interface;
18
+ refer to the relevant RDF.rb API documentation for further usage instructions.
19
+
20
+ Limitations
21
+ -----------
22
+
23
+ * This adapter does not contain any SPARQL support. To use a Sesame endpoint
24
+ with SPARQL, see the [`SPARQL::Client`](http://sparql.rubyforge.org/client/)
25
+ gem.
26
+ * This adapter is not yet optimized for RDF.rb 0.2.x's bulk-operation APIs,
27
+ meaning that statement insertions and deletions are currently performed
28
+ one by one; this may affect the performance of loading large datasets into
29
+ Sesame. This will be addressed in an upcoming version.
30
+ * This adapter is not yet optimized for RDF.rb 0.2.x's enhanced query APIs;
31
+ this may adversely affect triple pattern query performance. This
32
+ will be addressed in an upcoming version.
33
+
34
+ Caveats
35
+ -------
36
+
37
+ * Sesame rewrites blank node identifiers on inserted statements. For
38
+ example, if you supply a `_:foobar` identifier, it becomes something like
39
+ `_:node156oo6equx12769` as soon as you insert it into a Sesame repository.
40
+ This means that you can't construct and insert a statement containing a
41
+ blank node term and then expect to successfully be able check for its
42
+ existence using the `Repository#has_statement?` method. This is also the
43
+ reason that 7 specs for `RDF::Repository` currently fail with this
44
+ adapter.
18
45
 
19
46
  Dependencies
20
47
  ------------
21
48
 
22
- * [RDF.rb](http://gemcutter.org/gems/rdf) (>= 0.0.9)
23
- * [JSON](http://gemcutter.org/gems/json_pure) (>= 1.2.0)
49
+ * [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.2.2)
50
+ * [JSON](http://rubygems.org/gems/json_pure) (>= 1.4.3)
24
51
 
25
52
  Installation
26
53
  ------------
27
54
 
28
- The recommended installation method is via RubyGems. To install the latest
29
- official release from Gemcutter, do:
55
+ The recommended installation method is via [RubyGems](http://rubygems.org/).
56
+ To install the latest official release of the `RDF::Sesame` gem, do:
30
57
 
31
58
  % [sudo] gem install rdf-sesame
32
59
 
@@ -52,3 +79,8 @@ License
52
79
 
53
80
  `RDF::Sesame` is free and unencumbered public domain software. For more
54
81
  information, see <http://unlicense.org/> or the accompanying UNLICENSE file.
82
+
83
+ [RDF.rb]: http://rdf.rubyforge.org/
84
+ [RDF::Repository]: http://rdf.rubyforge.org/RDF/Repository.html
85
+ [Sesame 2.0]: http://www.openrdf.org/
86
+ [Sesame API]: http://www.openrdf.org/doc/sesame2/system/ch08.html
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/rdf/sesame.rb CHANGED
@@ -4,27 +4,6 @@ module RDF
4
4
  ##
5
5
  # **`RDF::Sesame`** is a Sesame 2.0 adapter for RDF.rb.
6
6
  #
7
- # Dependencies
8
- # ------------
9
- #
10
- # * [RDF.rb](http://gemcutter.org/gems/rdf) (>= 0.0.9)
11
- # * [JSON](http://gemcutter.org/gems/json_pure) (>= 1.2.0)
12
- #
13
- # Installation
14
- # ------------
15
- #
16
- # The recommended installation method is via RubyGems. To install the latest
17
- # official release from Gemcutter, do:
18
- #
19
- # % [sudo] gem install rdf-sesame
20
- #
21
- # Documentation
22
- # -------------
23
- #
24
- # * {RDF::Sesame::Connection}
25
- # * {RDF::Sesame::Repository}
26
- # * {RDF::Sesame::Server}
27
- #
28
7
  # @example Requiring the `RDF::Sesame` module
29
8
  # require 'rdf/sesame'
30
9
  #
@@ -21,17 +21,19 @@ module RDF::Sesame
21
21
  # call {#close} explicitly.
22
22
  #
23
23
  # @example Opening a connection to a Sesame server (1)
24
- # url = RDF::URI.new("http://localhost:8080/openrdf-sesame")
24
+ # url = RDF::URI("http://localhost:8080/openrdf-sesame")
25
25
  # conn = RDF::Sesame::Connection.open(url)
26
26
  # ...
27
27
  # conn.close
28
28
  #
29
29
  # @example Opening a connection to a Sesame server (2)
30
+ # url = RDF::URI("http://localhost:8080/openrdf-sesame")
30
31
  # RDF::Sesame::Connection.open(url) do |conn|
31
32
  # ...
32
33
  # end
33
34
  #
34
35
  # @example Performing an HTTP GET on a Sesame server
36
+ # url = RDF::URI("http://localhost:8080/openrdf-sesame")
35
37
  # RDF::Sesame::Connection.open(url) do |conn|
36
38
  # conn.get("/openrdf-sesame/protocol") do |response|
37
39
  # version = response.body.to_i
@@ -332,7 +334,7 @@ module RDF::Sesame
332
334
  # @yieldparam [Net::HTTPResponse] response
333
335
  # @return [Net::HTTPResponse]
334
336
  def put(path, headers = {}, &block)
335
- # TODO
337
+ raise NotImplementedError, "#{self.class}#put" # TODO
336
338
  end
337
339
 
338
340
  ##
@@ -353,5 +355,5 @@ module RDF::Sesame
353
355
  end
354
356
  end
355
357
  end
356
- end
357
- end
358
+ end # class Connection
359
+ end # module RDF::Sesame
@@ -18,10 +18,11 @@ module RDF::Sesame
18
18
  # repository = server.repository(:SYSTEM)
19
19
  #
20
20
  # @see RDF::Sesame
21
+ # @see http://rdf.rubyforge.org/RDF/Repository.html
21
22
  # @see http://www.openrdf.org/doc/sesame2/system/ch08.html
22
23
  class Repository < RDF::Repository
23
24
  # @return [RDF::URI]
24
- attr_reader :url
25
+ attr_reader :url
25
26
  alias_method :uri, :url
26
27
 
27
28
  # @return [String]
@@ -67,8 +68,8 @@ module RDF::Sesame
67
68
  @options = {}
68
69
 
69
70
  when Hash
70
- raise ArgumentError.new("missing options[:server]") unless url_or_options.has_key?(:server)
71
- raise ArgumentError.new("missing options[:id]") unless url_or_options.has_key?(:id)
71
+ raise ArgumentError, "missing options[:server]" unless url_or_options.has_key?(:server)
72
+ raise ArgumentError, "missing options[:id]" unless url_or_options.has_key?(:id)
72
73
  @options = url_or_options.dup
73
74
  @server = @options.delete(:server)
74
75
  @id = @options.delete(:id)
@@ -76,7 +77,7 @@ module RDF::Sesame
76
77
  @title = @options.delete(:title)
77
78
 
78
79
  else
79
- raise ArgumentError.new("wrong argument type #{url_or_options.class} (expected String, RDF::URI or Hash)")
80
+ raise ArgumentError, "expected String, RDF::URI or Hash, but got #{url_or_options.inspect}"
80
81
  end
81
82
 
82
83
  if block_given?
@@ -100,12 +101,13 @@ module RDF::Sesame
100
101
  when RDF::Statement
101
102
  writer = RDF::NTriples::Writer.new
102
103
  query = {
103
- :subj => writer.format_value(query.subject),
104
- :pred => writer.format_value(query.predicate),
105
- :obj => writer.format_value(query.object),
104
+ :subj => writer.format_value(query.subject),
105
+ :pred => writer.format_value(query.predicate),
106
+ :obj => writer.format_value(query.object),
107
+ :context => query.has_context? ? writer.format_value(query.context) : 'null',
106
108
  }
107
109
  url.query_values = query
108
- when Hash then query
110
+ when Hash
109
111
  url.query_values = query unless query.empty?
110
112
  end
111
113
  end
@@ -115,80 +117,135 @@ module RDF::Sesame
115
117
  alias_method :uri, :url
116
118
 
117
119
  ##
118
- # Returns `true` to indicate that this repository is durable.
119
- #
120
- # @return [Boolean]
120
+ # @private
121
+ # @see RDF::Repository#supports?
122
+ def supports?(feature)
123
+ case feature.to_sym
124
+ when :context then true # statement contexts / named graphs
125
+ else super
126
+ end
127
+ end
128
+
129
+ ##
130
+ # @private
131
+ # @see RDF::Durable#durable?
121
132
  def durable?
122
- true # FIXME
133
+ true # TODO: would need to query the SYSTEM repository for this information
123
134
  end
124
135
 
125
136
  ##
126
- # Returns `true` if this repository contains no RDF statements.
127
- #
128
- # @return [Boolean]
137
+ # @private
138
+ # @see RDF::Countable#empty?
129
139
  def empty?
130
140
  count.zero?
131
141
  end
132
142
 
133
143
  ##
134
- # Returns the number of RDF statements in this repository.
135
- #
136
- # @return [Integer]
137
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e569
144
+ # @private
145
+ # @see RDF::Countable#count
146
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e569
138
147
  def count
139
148
  server.get(url(:size)) do |response|
140
149
  case response
141
150
  when Net::HTTPSuccess
142
151
  size = response.body
143
152
  size.to_i rescue 0
144
- else 0
153
+ else -1 # FIXME: raise error
145
154
  end
146
155
  end
147
156
  end
148
157
 
149
158
  ##
150
- # Returns `true` if this repository contains the given RDF statement.
151
- #
152
- # @param [RDF::Statement] statement
153
- # @return [Boolean]
154
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
159
+ # @private
160
+ # @see RDF::Enumerable#has_triple?
161
+ def has_triple?(triple)
162
+ has_statement?(RDF::Statement.from(triple))
163
+ end
164
+
165
+ ##
166
+ # @private
167
+ # @see RDF::Enumerable#has_quad?
168
+ def has_quad?(quad)
169
+ has_statement?(RDF::Statement.new(quad[0], quad[1], quad[2], :context => quad[3]))
170
+ end
171
+
172
+ ##
173
+ # @private
174
+ # @see RDF::Enumerable#has_statement?
175
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
155
176
  def has_statement?(statement)
156
177
  server.get(url(:statements, statement), 'Accept' => 'text/plain') do |response|
157
178
  case response
158
179
  when Net::HTTPSuccess
159
- reader = RDF::NTriples::Reader.new(response.body)
160
- reader.include?(statement)
180
+ !response.body.empty?
161
181
  else false
162
182
  end
163
183
  end
164
184
  end
165
185
 
166
186
  ##
167
- # Enumerates each RDF statement in this repository.
168
- #
169
- # @yield [statement]
170
- # @yieldparam [RDF::Statement] statement
171
- # @return [Enumerator]
172
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
173
- def each(&block)
174
- server.get(url(:statements), 'Accept' => 'text/plain') do |response|
187
+ # @private
188
+ # @see RDF::Enumerable#each_statement
189
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
190
+ def each_statement(&block)
191
+ return enum_statement unless block_given?
192
+
193
+ [nil, *enum_context].uniq.each do |context|
194
+ ctxt = context ? RDF::NTriples.serialize(context) : 'null'
195
+ server.get(url(:statements, :context => ctxt), 'Accept' => 'text/plain') do |response|
196
+ case response
197
+ when Net::HTTPSuccess
198
+ reader = RDF::NTriples::Reader.new(response.body)
199
+ reader.each_statement do |statement|
200
+ statement.context = context
201
+ block.call(statement)
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
207
+
208
+ alias_method :each, :each_statement
209
+
210
+ ##
211
+ # @private
212
+ # @see RDF::Enumerable#each_context
213
+ def each_context(&block)
214
+ return enum_context unless block_given?
215
+
216
+ require 'json' unless defined?(::JSON)
217
+ server.get(url(:contexts), Server::ACCEPT_JSON) do |response|
175
218
  case response
176
219
  when Net::HTTPSuccess
177
- reader = RDF::NTriples::Reader.new(response.body)
178
- reader.each_statement(&block)
220
+ json = ::JSON.parse(response.body)
221
+ json['results']['bindings'].map { |binding| binding['contextID'] }.each do |context_id|
222
+ context = case context_id['type'].to_s.to_sym
223
+ when :bnode then RDF::Node.new(context_id['value'])
224
+ when :uri then RDF::URI.new(context_id['value'])
225
+ end
226
+ block.call(context) if context
227
+ end
179
228
  end
180
229
  end
181
230
  end
182
231
 
232
+ protected
233
+
183
234
  ##
184
- # Inserts the given RDF statement into this repository.
185
- #
186
- # @param [RDF::Statement] statement
187
- # @return [Boolean]
188
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
235
+ # @private
236
+ # @see RDF::Queryable#query
237
+ def query_pattern(pattern, &block)
238
+ super # TODO
239
+ end
240
+
241
+ ##
242
+ # @private
243
+ # @see RDF::Mutable#insert
244
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
189
245
  def insert_statement(statement)
190
- data = RDF::NTriples::Writer.buffer { |writer| writer << statement } # FIXME for RDF.rb 0.1.0
191
- server.post(url(:statements), data, 'Content-Type' => 'text/plain') do |response|
246
+ ctxt = statement.has_context? ? RDF::NTriples.serialize(statement.context) : 'null'
247
+ data = RDF::NTriples.serialize(statement)
248
+ server.post(url(:statements, :context => ctxt), data, 'Content-Type' => 'text/plain') do |response|
192
249
  case response
193
250
  when Net::HTTPSuccess then true
194
251
  else false
@@ -197,11 +254,9 @@ module RDF::Sesame
197
254
  end
198
255
 
199
256
  ##
200
- # Deletes the given RDF statement from this repository.
201
- #
202
- # @param [RDF::Statement] statement
203
- # @return [Boolean]
204
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
257
+ # @private
258
+ # @see RDF::Mutable#delete
259
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
205
260
  def delete_statement(statement)
206
261
  server.delete(url(:statements, statement)) do |response|
207
262
  case response
@@ -212,10 +267,9 @@ module RDF::Sesame
212
267
  end
213
268
 
214
269
  ##
215
- # Deletes all RDF statements from this repository.
216
- #
217
- # @return [Boolean]
218
- # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
270
+ # @private
271
+ # @see RDF::Mutable#clear
272
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e304
219
273
  def clear_statements
220
274
  server.delete(url(:statements)) do |response|
221
275
  case response
@@ -224,5 +278,5 @@ module RDF::Sesame
224
278
  end
225
279
  end
226
280
  end
227
- end
228
- end
281
+ end # class Repository
282
+ end # module RDF::Sesame
@@ -6,7 +6,7 @@ module RDF::Sesame
6
6
  # one or more readable and/or writable RDF {Repository repositories}.
7
7
  #
8
8
  # @example Connecting to a Sesame server
9
- # url = RDF::URI.new("http://localhost:8080/openrdf-sesame")
9
+ # url = RDF::URI("http://localhost:8080/openrdf-sesame")
10
10
  # server = RDF::Sesame::Server.new(url)
11
11
  #
12
12
  # @example Retrieving the server's protocol version
@@ -145,7 +145,7 @@ module RDF::Sesame
145
145
  #
146
146
  # @yield [repository]
147
147
  # @yieldparam [Repository] repository
148
- # @return [Enumerable]
148
+ # @return [Enumerator]
149
149
  # @see #repository
150
150
  # @see #repositories
151
151
  def each_repository(&block)
@@ -155,9 +155,9 @@ module RDF::Sesame
155
155
  alias_method :each, :each_repository
156
156
 
157
157
  ##
158
- # Returns `true` if
158
+ # Returns `true` if this server has a repository identified by `id`.
159
159
  #
160
- # @param [id] String
160
+ # @param [String] id
161
161
  # @return [Boolean]
162
162
  def has_repository?(id)
163
163
  repositories.has_key?(id.to_s)
@@ -184,20 +184,20 @@ module RDF::Sesame
184
184
  # @see #each_repository
185
185
  # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e204
186
186
  def repositories
187
- require 'json' unless defined?(JSON)
187
+ require 'json' unless defined?(::JSON)
188
188
 
189
189
  get(url(:repositories), ACCEPT_JSON) do |response|
190
190
  case response
191
191
  when Net::HTTPSuccess
192
- json = JSON.parse(response.body)
192
+ json = ::JSON.parse(response.body)
193
193
  json['results']['bindings'].inject({}) do |repositories, binding|
194
194
  repository = Repository.new({
195
195
  :server => self,
196
196
  :uri => (uri = RDF::URI.new(binding['uri']['value'])),
197
197
  :id => (id = binding['id']['value']),
198
198
  :title => (title = binding['title']['value']),
199
- :readable => binding['readable']['value'] == 'true',
200
- :writable => binding['writable']['value'] == 'true',
199
+ :readable => binding['readable']['value'].to_s == 'true',
200
+ :writable => binding['writable']['value'].to_s == 'true',
201
201
  })
202
202
  repositories.merge({id => repository})
203
203
  end
@@ -223,5 +223,5 @@ module RDF::Sesame
223
223
  self.connection.delete(path, headers, &block)
224
224
  end
225
225
  end
226
- end
227
- end
226
+ end # class Server
227
+ end # module RDF::Sesame
@@ -1,19 +1,22 @@
1
- module RDF module Sesame
1
+ module RDF; module Sesame
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  TINY = 0
6
6
  EXTRA = nil
7
7
 
8
- STRING = [MAJOR, MINOR, TINY].join('.')
9
- STRING << "-#{EXTRA}" if EXTRA
8
+ STRING = [MAJOR, MINOR, TINY, EXTRA].compact.join('.')
10
9
 
11
10
  ##
12
11
  # @return [String]
13
- def self.to_s() STRING end
12
+ def self.to_s() STRING end
14
13
 
15
14
  ##
16
15
  # @return [String]
17
16
  def self.to_str() STRING end
17
+
18
+ ##
19
+ # @return [Array(Integer, Integer, Integer)]
20
+ def self.to_a() [MAJOR, MINOR, TINY] end
18
21
  end
19
- end end
22
+ end; end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-sesame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Arto Bendiken
@@ -9,51 +14,81 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-02 00:00:00 +01:00
17
+ date: 2010-07-08 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ name: json_pure
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
- - - ">="
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 4
30
+ - 3
31
+ version: 1.4.3
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rdf
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
22
40
  - !ruby/object:Gem::Version
23
- version: 1.2.9
24
- version:
41
+ segments:
42
+ - 0
43
+ - 2
44
+ - 2
45
+ version: 0.2.2
46
+ type: :runtime
47
+ version_requirements: *id002
25
48
  - !ruby/object:Gem::Dependency
26
49
  name: yard
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
30
52
  requirements:
31
53
  - - ">="
32
54
  - !ruby/object:Gem::Version
33
- version: 0.5.2
34
- version:
55
+ segments:
56
+ - 0
57
+ - 5
58
+ - 8
59
+ version: 0.5.8
60
+ type: :development
61
+ version_requirements: *id003
35
62
  - !ruby/object:Gem::Dependency
36
- name: rdf
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
63
+ name: rspec
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
40
66
  requirements:
41
67
  - - ">="
42
68
  - !ruby/object:Gem::Version
43
- version: 0.0.9
44
- version:
69
+ segments:
70
+ - 1
71
+ - 3
72
+ - 0
73
+ version: 1.3.0
74
+ type: :development
75
+ version_requirements: *id004
45
76
  - !ruby/object:Gem::Dependency
46
- name: json_pure
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
77
+ name: rdf-spec
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
50
80
  requirements:
51
- - - ">="
81
+ - - ~>
52
82
  - !ruby/object:Gem::Version
53
- version: 1.2.0
54
- version:
83
+ segments:
84
+ - 0
85
+ - 2
86
+ - 2
87
+ version: 0.2.2
88
+ type: :development
89
+ version_requirements: *id005
55
90
  description: RDF.rb plugin providing a Sesame 2.0 storage adapter.
56
- email: arto.bendiken@gmail.com
91
+ email: public-rdf-ruby@w3.org
57
92
  executables: []
58
93
 
59
94
  extensions: []
@@ -71,7 +106,7 @@ files:
71
106
  - lib/rdf/sesame/version.rb
72
107
  - lib/rdf/sesame.rb
73
108
  has_rdoc: false
74
- homepage: http://rdf.rubyforge.org/
109
+ homepage: http://rdf.rubyforge.org/sesame/
75
110
  licenses:
76
111
  - Public Domain
77
112
  post_install_message:
@@ -83,18 +118,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
118
  requirements:
84
119
  - - ">="
85
120
  - !ruby/object:Gem::Version
86
- version: 1.8.2
87
- version:
121
+ segments:
122
+ - 1
123
+ - 8
124
+ - 1
125
+ version: 1.8.1
88
126
  required_rubygems_version: !ruby/object:Gem::Requirement
89
127
  requirements:
90
128
  - - ">="
91
129
  - !ruby/object:Gem::Version
130
+ segments:
131
+ - 0
92
132
  version: "0"
93
- version:
94
133
  requirements: []
95
134
 
96
135
  rubyforge_project: rdf
97
- rubygems_version: 1.3.5
136
+ rubygems_version: 1.3.6
98
137
  signing_key:
99
138
  specification_version: 3
100
139
  summary: Sesame 2.0 adapter for RDF.rb.