sparql-client 0.0.8 → 0.0.9

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.0.9
@@ -89,13 +89,31 @@ module SPARQL
89
89
  end
90
90
 
91
91
  ##
92
- # Executes a SPARQL query.
92
+ # A mapping of blank node results for this client
93
+ # @private
94
+ def nodes
95
+ @nodes ||= {}
96
+ end
97
+
98
+ ##
99
+ # Executes a SPARQL query and returns parsed results.
93
100
  #
94
101
  # @param [String, #to_s] url
95
102
  # @param [Hash{Symbol => Object}] options
96
103
  # @option options [String] :content_type
97
104
  # @return [Array<RDF::Query::Solution>]
98
105
  def query(query, options = {})
106
+ parse_response(response(query, options), options)
107
+ end
108
+
109
+ ##
110
+ # Executes a SPARQL query and returns the Net::HTTP::Response of the result.
111
+ #
112
+ # @param [String, #to_s] url
113
+ # @param [Hash{Symbol => Object}] options
114
+ # @option options [String] :content_type
115
+ # @return [String]
116
+ def response(query, options = {})
99
117
  @headers['Accept'] = options[:content_type] if options[:content_type]
100
118
  get(query) do |response|
101
119
  case response
@@ -106,9 +124,10 @@ module SPARQL
106
124
  when Net::HTTPServerError # 5xx
107
125
  raise ServerError.new(response.body)
108
126
  when Net::HTTPSuccess # 2xx
109
- parse_response(response, options)
127
+ response
110
128
  end
111
129
  end
130
+
112
131
  end
113
132
 
114
133
  ##
@@ -120,9 +139,9 @@ module SPARQL
120
139
  when RESULT_BOOL # Sesame-specific
121
140
  response.body == 'true'
122
141
  when RESULT_JSON
123
- parse_json_bindings(response.body)
142
+ self.class.parse_json_bindings(response.body, nodes)
124
143
  when RESULT_XML
125
- parse_xml_bindings(response.body)
144
+ self.class.parse_xml_bindings(response.body, nodes)
126
145
  else
127
146
  parse_rdf_serialization(response, options)
128
147
  end
@@ -132,7 +151,7 @@ module SPARQL
132
151
  # @param [String, Hash] json
133
152
  # @return [Enumerable<RDF::Query::Solution>]
134
153
  # @see http://www.w3.org/TR/rdf-sparql-json-res/#results
135
- def parse_json_bindings(json)
154
+ def self.parse_json_bindings(json, nodes = {})
136
155
  require 'json' unless defined?(::JSON)
137
156
  json = JSON.parse(json.to_s) unless json.is_a?(Hash)
138
157
 
@@ -153,11 +172,10 @@ module SPARQL
153
172
  # @param [Hash{String => String}] value
154
173
  # @return [RDF::Value]
155
174
  # @see http://www.w3.org/TR/rdf-sparql-json-res/#variable-binding-results
156
- def parse_json_value(value)
175
+ def self.parse_json_value(value, nodes = {})
157
176
  case value['type'].to_sym
158
177
  when :bnode
159
- @nodes ||= {}
160
- @nodes[id = value['value']] ||= RDF::Node.new(id)
178
+ nodes[id = value['value']] ||= RDF::Node.new(id)
161
179
  when :uri
162
180
  RDF::URI.new(value['value'])
163
181
  when :literal
@@ -172,8 +190,8 @@ module SPARQL
172
190
  # @param [String, REXML::Element] xml
173
191
  # @return [Enumerable<RDF::Query::Solution>]
174
192
  # @see http://www.w3.org/TR/rdf-sparql-json-res/#results
175
- def parse_xml_bindings(xml)
176
- xml.force_encoding(encoding) if xml.respond_to?(:force_encoding)
193
+ def self.parse_xml_bindings(xml, nodes = {})
194
+ xml.force_encoding(::Encoding::UTF_8) if xml.respond_to?(:force_encoding)
177
195
  require 'rexml/document' unless defined?(::REXML::Document)
178
196
  xml = REXML::Document.new(xml).root unless xml.is_a?(REXML::Element)
179
197
 
@@ -186,7 +204,7 @@ module SPARQL
186
204
  result.elements.each do |binding|
187
205
  name = binding.attributes['name'].to_sym
188
206
  value = binding.select { |node| node.kind_of?(::REXML::Element) }.first
189
- row[name] = parse_xml_value(value)
207
+ row[name] = parse_xml_value(value, nodes)
190
208
  end
191
209
  RDF::Query::Solution.new(row)
192
210
  end
@@ -197,11 +215,10 @@ module SPARQL
197
215
  # @param [REXML::Element] value
198
216
  # @return [RDF::Value]
199
217
  # @see http://www.w3.org/TR/rdf-sparql-json-res/#variable-binding-results
200
- def parse_xml_value(value)
218
+ def self.parse_xml_value(value, nodes = {})
201
219
  case value.name.to_sym
202
220
  when :bnode
203
- @nodes ||= {}
204
- @nodes[id = value.text] ||= RDF::Node.new(id)
221
+ nodes[id = value.text] ||= RDF::Node.new(id)
205
222
  when :uri
206
223
  RDF::URI.new(value.text)
207
224
  when :literal
@@ -224,12 +241,6 @@ module SPARQL
224
241
  end
225
242
  end
226
243
 
227
- ##
228
- # @return [Encoding]
229
- def encoding
230
- @encoding ||= ::Encoding::UTF_8
231
- end
232
-
233
244
  ##
234
245
  # Outputs a developer-friendly representation of this object to `stderr`.
235
246
  #
@@ -2,7 +2,7 @@ module SPARQL; class Client
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 8
5
+ TINY = 9
6
6
  EXTRA = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, EXTRA].compact.join('.')
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 8
9
- version: 0.0.8
8
+ - 9
9
+ version: 0.0.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Arto Bendiken
@@ -15,13 +15,14 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-15 00:00:00 +01:00
18
+ date: 2011-02-02 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: json_pure
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
@@ -36,6 +37,7 @@ dependencies:
36
37
  name: rdf
37
38
  prerelease: false
38
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
39
41
  requirements:
40
42
  - - ~>
41
43
  - !ruby/object:Gem::Version
@@ -50,6 +52,7 @@ dependencies:
50
52
  name: yard
51
53
  prerelease: false
52
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
53
56
  requirements:
54
57
  - - ">="
55
58
  - !ruby/object:Gem::Version
@@ -64,6 +67,7 @@ dependencies:
64
67
  name: rspec
65
68
  prerelease: false
66
69
  requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
67
71
  requirements:
68
72
  - - ">="
69
73
  - !ruby/object:Gem::Version
@@ -78,6 +82,7 @@ dependencies:
78
82
  name: rdf-spec
79
83
  prerelease: false
80
84
  requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
81
86
  requirements:
82
87
  - - ~>
83
88
  - !ruby/object:Gem::Version
@@ -117,6 +122,7 @@ rdoc_options: []
117
122
  require_paths:
118
123
  - lib
119
124
  required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
120
126
  requirements:
121
127
  - - ">="
122
128
  - !ruby/object:Gem::Version
@@ -126,6 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
132
  - 1
127
133
  version: 1.8.1
128
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
129
136
  requirements:
130
137
  - - ">="
131
138
  - !ruby/object:Gem::Version
@@ -135,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
142
  requirements: []
136
143
 
137
144
  rubyforge_project: sparql
138
- rubygems_version: 1.3.6
145
+ rubygems_version: 1.3.7
139
146
  signing_key:
140
147
  specification_version: 3
141
148
  summary: SPARQL client for RDF.rb.