0
|
1 # -*- coding: utf-8 -*-
|
|
2 require File.expand_path('../executor', File.dirname(__FILE__))
|
|
3
|
|
4 describe SPARQLExecutor, "は" do
|
|
5 include GalaxyTool::Matcher
|
|
6
|
|
7 before do
|
|
8 @tool = SPARQLExecutor.new
|
|
9 end
|
|
10
|
|
11 it "SPARQLエンドポイント指定として '-e' オプションを受けつける" do
|
|
12 @tool.should accept_option_with_argument(:endpoint, '-e')
|
|
13 end
|
|
14 it "SPARQLエンドポイント指定として '--endpoint' オプションを受けつける" do
|
|
15 @tool.should accept_option_with_argument(:endpoint, '--endpoint')
|
|
16 end
|
|
17 it "'--endpoint' オプションを、前後空白を無視して受けつける" do
|
|
18 @tool.should evaluate_option('--endpoint', " http://example.com/endpoint\n", "http://example.com/endpoint")
|
|
19 end
|
|
20 it "クエリ指定は必須である" do
|
|
21 @tool.should require_option(:endpoint)
|
|
22 end
|
|
23
|
|
24 it "クエリ指定として '-q' オプションを受けつける" do
|
|
25 @tool.should accept_option_with_argument(:query, '-q')
|
|
26 end
|
|
27 it "クエリ指定として '--query' オプションを受けつける" do
|
|
28 @tool.should accept_option_with_argument(:query, '--query')
|
|
29 end
|
|
30 it "クエリ指定として '--query-file' オプションを受けつける" do
|
|
31 @tool.should accept_option_with_argument(:query, '--query-file')
|
|
32 end
|
|
33 it "'--query-file' オプションを、クエリが書かれたファイルのパスとして受けつける" do
|
|
34 @tool.should evaluate_option('--query-file', stub_file("p53\n").path, 'p53')
|
|
35 end
|
|
36 it "クエリ指定は必須である" do
|
|
37 @tool.should require_option(:query)
|
|
38 end
|
|
39
|
|
40 it "出力先指定として '-o' オプションを受けつける" do
|
|
41 @tool.should accept_option_with_argument(:output, '-o')
|
|
42 end
|
|
43 it "出力先指定として '--output' オプションを受けつける" do
|
|
44 @tool.should accept_option_with_argument(:output, '--output')
|
|
45 end
|
|
46 it "出力先指定は必須である" do
|
|
47 @tool.should require_option(:output)
|
|
48 end
|
|
49
|
|
50 it "Info出力先指定として '--info' オプションを受けつける" do
|
|
51 @tool.should accept_option_with_argument(:info, '--info')
|
|
52 end
|
|
53 it "Info出力先の規定値は標準出力である" do
|
|
54 @tool.should set_default_option_value(:info, '/dev/stdout')
|
|
55 end
|
|
56
|
|
57 describe "エンドポイント、クエリ、出力先を指定して実行すると" do
|
|
58 before do
|
|
59 @tool.should_receive(:search).and_return do |client, query|
|
|
60 client.should_receive(:parsed_xml) do |parse|
|
|
61 REXML::Document.new(<<-EOT).root
|
|
62 <?xml version="1.0" ?>
|
|
63 <sparql xmlns="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd">
|
|
64 <head>
|
|
65 <variable name="s"/>
|
|
66 <variable name="p"/>
|
|
67 <variable name="o"/>
|
|
68 </head>
|
|
69 <results distinct="false" ordered="true">
|
|
70 <result>
|
|
71 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn</uri></binding>
|
|
72 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri></binding>
|
|
73 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))</literal></binding>
|
|
74 </result>
|
|
75 <result>
|
|
76 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn</uri></binding>
|
|
77 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
78 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
79 </result>
|
|
80 <result>
|
|
81 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
82 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
83 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
84 </result>
|
|
85 <result>
|
|
86 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
87 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri></binding>
|
|
88 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))</literal></binding>
|
|
89 </result>
|
|
90 <result>
|
|
91 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt</uri></binding>
|
|
92 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl</uri></binding>
|
|
93 <binding name="o"><literal> ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^</literal></binding>
|
|
94 </result>
|
|
95 </results>
|
|
96 </sparql>
|
|
97 EOT
|
|
98 end
|
|
99
|
|
100 client.query(query)
|
|
101 end
|
|
102
|
|
103 @url = "http://www.semantic-systems-biology.org/biogateway/endpoint"
|
|
104 @query = "select * where { ?s ?p ?o . } limit 5"
|
|
105 @info = stub_stdout
|
|
106 @output = stub_file
|
|
107 @tool.run ["-q", @query, "-e", @url, "-o", @output.path]
|
|
108 end
|
|
109
|
|
110 it "SPARQL検索を行い、ID、URL、タイトル、ランクをタブ区切りで表示する" do
|
|
111 @output.should be_output(<<-EOT)
|
|
112 ?s ?p ?o
|
|
113 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))"
|
|
114 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
115 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
116 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))"
|
|
117 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl> " ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^"
|
|
118 EOT
|
|
119 end
|
|
120 end
|
|
121
|
|
122 describe "結果の途中に改行のテキストノードを含むレスポンスを得るようなエンドポイントに対するクエリだったとしても" do
|
|
123 before do
|
|
124 @tool.should_receive(:search).and_return do |client, query|
|
|
125 client.should_receive(:parsed_xml) do |parse|
|
|
126 REXML::Document.new(<<-EOT).root
|
|
127 <?xml version="1.0" ?>
|
|
128 <sparql xmlns="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd">
|
|
129 <head>
|
|
130 <variable name="s"/>
|
|
131 <variable name="p"/>
|
|
132 <variable name="o"/>
|
|
133 </head>
|
|
134 <results distinct="false" ordered="true">
|
|
135 <result>
|
|
136 <binding name="s">
|
|
137 <uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn</uri>
|
|
138 </binding>
|
|
139 <binding name="p">
|
|
140 <uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri>
|
|
141 </binding>
|
|
142 <binding name="o">
|
|
143 <literal> ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))</literal>
|
|
144 </binding>
|
|
145 </result>
|
|
146 <result>
|
|
147 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn</uri></binding>
|
|
148 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
149 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
150 </result>
|
|
151 <result>
|
|
152 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
153 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
154 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
155 </result>
|
|
156 <result>
|
|
157 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
158 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri></binding>
|
|
159 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))</literal></binding>
|
|
160 </result>
|
|
161 <result>
|
|
162 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt</uri></binding>
|
|
163 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl</uri></binding>
|
|
164 <binding name="o"><literal> ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^</literal></binding>
|
|
165 </result>
|
|
166 </results>
|
|
167 </sparql>
|
|
168 EOT
|
|
169 end
|
|
170
|
|
171 client.query(query)
|
|
172 end
|
|
173
|
|
174 @url = "http://www.semantic-systems-biology.org/biogateway/endpoint"
|
|
175 @query = "select * where { ?s ?p ?o . } limit 5"
|
|
176 @info = stub_stdout
|
|
177 @output = stub_file
|
|
178 @tool.run ["-q", @query, "-e", @url, "-o", @output.path]
|
|
179 end
|
|
180
|
|
181 it "SPARQL検索を行い、ID、URL、タイトル、ランクをタブ区切りで表示する" do
|
|
182 @output.should be_output(<<-EOT)
|
|
183 ?s ?p ?o
|
|
184 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))"
|
|
185 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
186 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
187 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))"
|
|
188 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl> " ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^"
|
|
189 EOT
|
|
190 end
|
|
191 end
|
|
192
|
|
193 describe "Blank Nodeを含むレスポンスとなるクエリだったとしても" do
|
|
194 before do
|
|
195 @tool.should_receive(:search).and_return do |client, query|
|
|
196 client.should_receive(:parsed_xml) do |parse|
|
|
197 REXML::Document.new(<<-EOT).root
|
|
198 <?xml version="1.0" ?>
|
|
199 <sparql xmlns="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd">
|
|
200 <head>
|
|
201 <variable name="s"/>
|
|
202 <variable name="p"/>
|
|
203 <variable name="o"/>
|
|
204 </head>
|
|
205 <results distinct="false" ordered="true">
|
|
206 <result>
|
|
207 <binding name="s">
|
|
208 <bnode>nodeID://b196899188</bnode>
|
|
209 </binding>
|
|
210 <binding name="p">
|
|
211 <uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri>
|
|
212 </binding>
|
|
213 <binding name="o">
|
|
214 <literal> ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))</literal>
|
|
215 </binding>
|
|
216 </result>
|
|
217 <result>
|
|
218 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn</uri></binding>
|
|
219 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
220 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
221 </result>
|
|
222 <result>
|
|
223 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
224 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl</uri></binding>
|
|
225 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (^{tree}^)</literal></binding>
|
|
226 </result>
|
|
227 <result>
|
|
228 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn</uri></binding>
|
|
229 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl</uri></binding>
|
|
230 <binding name="o"><literal> ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))</literal></binding>
|
|
231 </result>
|
|
232 <result>
|
|
233 <binding name="s"><uri>http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt</uri></binding>
|
|
234 <binding name="p"><uri>http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl</uri></binding>
|
|
235 <binding name="o"><literal> ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^</literal></binding>
|
|
236 </result>
|
|
237 </results>
|
|
238 </sparql>
|
|
239 EOT
|
|
240 end
|
|
241
|
|
242 client.query(query)
|
|
243 end
|
|
244
|
|
245 @url = "http://www.semantic-systems-biology.org/biogateway/endpoint"
|
|
246 @query = "select * where { ?s ?p ?o . } limit 5"
|
|
247 @info = stub_stdout
|
|
248 @output = stub_file
|
|
249 @tool.run ["-q", @query, "-e", @url, "-o", @output.path]
|
|
250 end
|
|
251
|
|
252 it "SPARQL検索を行い、ID、URL、タイトル、ランクをタブ区切りで表示する" do
|
|
253 @output.should be_output(<<-EOT)
|
|
254 ?s ?p ?o
|
|
255 _:nodeID://b196899188 <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))"
|
|
256 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
257 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfUriTmpl> " ^{custom-verbatim-1}^_INVERSE (^{tree}^)"
|
|
258 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-literal-fn> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> " ^{custom-verbatim-1}^_INVERSE (__ro2sq /*l*/ (^{tree}^))"
|
|
259 <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-dt> <http://www.openlinksw.com/schemas/virtrdf#qmfShortOfSqlvalTmpl> " ^{sqlval-of-tree}^^{as-name-0}^^{comma-cut}^NULL^{as-name-1}^"
|
|
260 EOT
|
|
261 end
|
|
262 end
|
|
263
|
|
264 end
|