rdf-sesame 0.3.0 → 1.1.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.
- checksums.yaml +7 -0
- data/README +2 -1
- data/VERSION +1 -1
- data/lib/rdf/sesame.rb +8 -4
- data/lib/rdf/sesame/connection.rb +78 -68
- data/lib/rdf/sesame/exceptions.rb +5 -0
- data/lib/rdf/sesame/repository.rb +385 -108
- data/lib/rdf/sesame/server.rb +83 -58
- data/lib/rdf/sesame/version.rb +2 -2
- metadata +96 -98
data/lib/rdf/sesame/server.rb
CHANGED
@@ -6,9 +6,14 @@ 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 =
|
9
|
+
# url = URI.parse("http://localhost:8080/openrdf-sesame")
|
10
10
|
# server = RDF::Sesame::Server.new(url)
|
11
11
|
#
|
12
|
+
# @example Connecting to a Sesame server using Basic Auth & local proxy
|
13
|
+
# server = RDF::Sesame::Server.new("http://localhost:8080/openrdf-sesame", {:user=> 'username', :pass => 'password',
|
14
|
+
# :proxy_host => 'localhost', :proxy_port => 8888})
|
15
|
+
# repo = server.repositories['repositoryname']
|
16
|
+
#
|
12
17
|
# @example Retrieving the server's protocol version
|
13
18
|
# server.protocol #=> 4
|
14
19
|
#
|
@@ -37,15 +42,21 @@ module RDF::Sesame
|
|
37
42
|
class Server
|
38
43
|
include Enumerable
|
39
44
|
|
40
|
-
ACCEPT_JSON = {'Accept' => 'application/sparql-results+json'}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
ACCEPT_JSON = {'Accept' => 'application/sparql-results+json'}.freeze
|
46
|
+
ACCEPT_NTRIPLES = {'Accept' => 'text/plain'}.freeze
|
47
|
+
ACCEPT_XML = {'Accept' => 'application/sparql-results+xml'}.freeze
|
48
|
+
ACCEPT_BOOL = {'Accept' => 'text/boolean'}.freeze
|
49
|
+
ACCEPT_XML_PURE = {'Accept' => 'application/rdf+xml' }.freeze
|
50
|
+
ACCEPT_TURTLE = {'Accept' => 'application/x-turtle'}.freeze
|
51
|
+
ACCEPT_N3 = {'Accept' => 'text/rdf+n3'}.freeze
|
52
|
+
ACCEPT_TRIX = {'Accept' => 'application/trix'}.freeze
|
53
|
+
ACCEPT_TRIG = {'Accept' => 'application/x-trig'}.freeze
|
54
|
+
ACCEPT_BINARY = {'Accept' => 'application/x-binary-rdf'}.freeze
|
55
|
+
ACCEPT_BINARY_TABLE = {'Accept' => 'application/x-binary-rdf-results-table'}.freeze
|
56
|
+
|
57
|
+
RESULT_BOOL = 'text/boolean'.freeze
|
58
|
+
RESULT_JSON = 'application/sparql-results+json'.freeze
|
59
|
+
RESULT_XML = 'application/sparql-results+xml'.freeze
|
49
60
|
|
50
61
|
# @return [Connection]
|
51
62
|
attr_reader :connection
|
@@ -53,21 +64,13 @@ module RDF::Sesame
|
|
53
64
|
##
|
54
65
|
# Initializes this `Server` instance.
|
55
66
|
#
|
56
|
-
# @param [
|
67
|
+
# @param [URI, #to_s] url
|
57
68
|
# @param [Hash{Symbol => Object}] options
|
58
69
|
# @option options [Connection] :connection (nil)
|
59
70
|
# @yield [connection]
|
60
71
|
# @yieldparam [Server]
|
61
72
|
def initialize(url, options = {}, &block)
|
62
|
-
|
63
|
-
@url = case url
|
64
|
-
when Addressable::URI then url
|
65
|
-
else Addressable::URI.parse(url.to_s)
|
66
|
-
end
|
67
|
-
@url = RDF::URI.new(@url)
|
68
|
-
|
69
|
-
@connection = options.delete(:connection) || Connection.new(@url)
|
70
|
-
@options = options
|
73
|
+
@connection = options.delete(:connection) || Connection.new(url, options)
|
71
74
|
|
72
75
|
if block_given?
|
73
76
|
case block.arity
|
@@ -81,15 +84,15 @@ module RDF::Sesame
|
|
81
84
|
# Returns the URL for the given server-relative `path`.
|
82
85
|
#
|
83
86
|
# @example Getting a Sesame server's URL
|
84
|
-
# server.url #=>
|
87
|
+
# server.url #=> "http://localhost:8080/openrdf-sesame"
|
85
88
|
#
|
86
89
|
# @example Getting a Sesame server's protocol URL
|
87
|
-
# server.url(:protocol) #=>
|
90
|
+
# server.url(:protocol) #=> "http://localhost:8080/openrdf-sesame/protocol"
|
88
91
|
#
|
89
92
|
# @param [String, #to_s] path
|
90
|
-
# @return [
|
93
|
+
# @return [String]
|
91
94
|
def url(path = nil)
|
92
|
-
|
95
|
+
self.connection.url(path)
|
93
96
|
end
|
94
97
|
|
95
98
|
alias_method :uri, :url
|
@@ -97,9 +100,9 @@ module RDF::Sesame
|
|
97
100
|
##
|
98
101
|
# Returns the URL of this server.
|
99
102
|
#
|
100
|
-
# @return [
|
103
|
+
# @return [URI]
|
101
104
|
def to_uri
|
102
|
-
url
|
105
|
+
URI.parse(url)
|
103
106
|
end
|
104
107
|
|
105
108
|
##
|
@@ -107,7 +110,7 @@ module RDF::Sesame
|
|
107
110
|
#
|
108
111
|
# @return [String]
|
109
112
|
def to_s
|
110
|
-
url
|
113
|
+
url
|
111
114
|
end
|
112
115
|
|
113
116
|
##
|
@@ -127,14 +130,9 @@ module RDF::Sesame
|
|
127
130
|
# @return [Integer]
|
128
131
|
# @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e180
|
129
132
|
def protocol
|
130
|
-
get(
|
131
|
-
|
132
|
-
|
133
|
-
version = response.body
|
134
|
-
version.to_i rescue 0
|
135
|
-
else 0
|
136
|
-
end
|
137
|
-
end
|
133
|
+
response = get(:protocol)
|
134
|
+
version = response.body
|
135
|
+
version.to_i rescue 0
|
138
136
|
end
|
139
137
|
|
140
138
|
alias_method :protocol_version, :protocol
|
@@ -185,42 +183,69 @@ module RDF::Sesame
|
|
185
183
|
def repositories
|
186
184
|
require 'json' unless defined?(::JSON)
|
187
185
|
|
188
|
-
get(
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
})
|
201
|
-
repositories.merge({id => repository})
|
202
|
-
end
|
203
|
-
else [] # FIXME
|
204
|
-
end
|
186
|
+
response = get(:repositories, ACCEPT_JSON)
|
187
|
+
|
188
|
+
json = ::JSON.parse(response.body)
|
189
|
+
json['results']['bindings'].inject({}) do |repositories, binding|
|
190
|
+
repository_id = binding['id']['value']
|
191
|
+
repository = Repository.new(:server => self,
|
192
|
+
:uri => RDF::URI.new(binding['uri']['value']),
|
193
|
+
:id => repository_id,
|
194
|
+
:title => binding['title']['value'],
|
195
|
+
:readable => binding['readable']['value'].to_s == 'true',
|
196
|
+
:writable => binding['writable']['value'].to_s == 'true')
|
197
|
+
repositories.merge!(repository_id => repository)
|
205
198
|
end
|
206
199
|
end
|
207
200
|
|
208
|
-
def get(path, headers = {}
|
201
|
+
def get(path, headers = {})
|
209
202
|
self.connection.open do
|
210
|
-
self.connection.get(path, headers
|
203
|
+
process_response self.connection.get(path, headers)
|
211
204
|
end
|
212
205
|
end
|
213
206
|
|
214
|
-
def post(path, data, headers = {}
|
207
|
+
def post(path, data, headers = {})
|
215
208
|
self.connection.open do
|
216
|
-
self.connection.post(path, data, headers
|
209
|
+
process_response self.connection.post(path, data, headers)
|
217
210
|
end
|
218
211
|
end
|
219
212
|
|
220
|
-
def
|
213
|
+
def put(path, data, headers = {})
|
221
214
|
self.connection.open do
|
222
|
-
self.connection.
|
215
|
+
process_response self.connection.put(path, data, headers)
|
223
216
|
end
|
224
217
|
end
|
218
|
+
|
219
|
+
def delete(path, headers = {})
|
220
|
+
self.connection.open do
|
221
|
+
process_response self.connection.delete(path, headers)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
##
|
226
|
+
# Executes a SPARQL query and returns the Net::HTTP::Response of the result.
|
227
|
+
#
|
228
|
+
# @param [String, #to_s] url
|
229
|
+
# @param [Hash{Symbol => Object}] options
|
230
|
+
# @option options [String] :content_type
|
231
|
+
# @return [String]
|
232
|
+
def process_response(response, options = {})
|
233
|
+
@headers['Accept'] = options[:content_type] if options[:content_type]
|
234
|
+
if response.is_a?(Net::HTTPSuccess)
|
235
|
+
response
|
236
|
+
else
|
237
|
+
case response
|
238
|
+
when Net::HTTPBadRequest # 400 Bad Request
|
239
|
+
raise MalformedQuery.new(response.body)
|
240
|
+
when Net::HTTPClientError # 4xx
|
241
|
+
raise ClientError.new(response.body)
|
242
|
+
when Net::HTTPServerError # 5xx
|
243
|
+
raise ServerError.new(response.body)
|
244
|
+
else
|
245
|
+
raise ServerError.new(response.body)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
225
250
|
end # class Server
|
226
251
|
end # module RDF::Sesame
|
data/lib/rdf/sesame/version.rb
CHANGED
metadata
CHANGED
@@ -1,142 +1,140 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-sesame
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- Arto Bendiken
|
8
|
+
- Slava Kravchenko
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2014-09-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: json_pure
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 4
|
30
|
-
- 2
|
31
|
-
version: 1.4.2
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.8'
|
32
21
|
type: :runtime
|
33
|
-
|
34
|
-
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.8'
|
28
|
+
- !ruby/object:Gem::Dependency
|
35
29
|
name: rdf
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.1'
|
35
|
+
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
39
|
-
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: addressable
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '2.3'
|
46
49
|
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: yard
|
50
50
|
prerelease: false
|
51
|
-
|
52
|
-
requirements:
|
53
|
-
- - "
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '2.3'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: yard
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.8'
|
60
63
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rspec
|
64
64
|
prerelease: false
|
65
|
-
|
66
|
-
requirements:
|
67
|
-
- - "
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.8'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rspec
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2'
|
74
77
|
type: :development
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: rdf-spec
|
78
78
|
prerelease: false
|
79
|
-
|
80
|
-
requirements:
|
81
|
-
- - ~>
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '2'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rdf-spec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.1'
|
88
91
|
type: :development
|
89
|
-
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1.1'
|
90
98
|
description: RDF.rb plugin providing a Sesame 2.0 storage adapter.
|
91
99
|
email: public-rdf-ruby@w3.org
|
92
100
|
executables: []
|
93
|
-
|
94
101
|
extensions: []
|
95
|
-
|
96
102
|
extra_rdoc_files: []
|
97
|
-
|
98
|
-
files:
|
103
|
+
files:
|
99
104
|
- AUTHORS
|
100
105
|
- CREDITS
|
101
106
|
- README
|
102
107
|
- UNLICENSE
|
103
108
|
- VERSION
|
109
|
+
- lib/rdf/sesame.rb
|
104
110
|
- lib/rdf/sesame/connection.rb
|
111
|
+
- lib/rdf/sesame/exceptions.rb
|
105
112
|
- lib/rdf/sesame/repository.rb
|
106
113
|
- lib/rdf/sesame/server.rb
|
107
114
|
- lib/rdf/sesame/version.rb
|
108
|
-
- lib/rdf/sesame.rb
|
109
|
-
has_rdoc: false
|
110
115
|
homepage: http://rdf.rubyforge.org/sesame/
|
111
|
-
licenses:
|
116
|
+
licenses:
|
112
117
|
- Public Domain
|
118
|
+
metadata: {}
|
113
119
|
post_install_message:
|
114
120
|
rdoc_options: []
|
115
|
-
|
116
|
-
require_paths:
|
121
|
+
require_paths:
|
117
122
|
- lib
|
118
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
requirements:
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
120
125
|
- - ">="
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
segments:
|
123
|
-
- 1
|
124
|
-
- 8
|
125
|
-
- 1
|
126
|
+
- !ruby/object:Gem::Version
|
126
127
|
version: 1.8.1
|
127
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
129
130
|
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
132
|
-
- 0
|
133
|
-
version: "0"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
134
133
|
requirements: []
|
135
|
-
|
136
134
|
rubyforge_project: rdf
|
137
|
-
rubygems_version:
|
135
|
+
rubygems_version: 2.2.2
|
138
136
|
signing_key:
|
139
|
-
specification_version:
|
137
|
+
specification_version: 4
|
140
138
|
summary: Sesame 2.0 adapter for RDF.rb.
|
141
139
|
test_files: []
|
142
|
-
|
140
|
+
has_rdoc: false
|