blob: a38aec2af9fcfc64aa20a9c2667d480b07256b60 [file] [log] [blame]
Nils Diewald8db8f922014-10-24 17:43:13 +00001package de.ids_mannheim.korap.query;
2
Eliza Margaretha369e7562015-02-09 17:36:24 +00003import static de.ids_mannheim.korap.TestSimple.getJSONQuery;
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertTrue;
6import static org.junit.Assert.fail;
Nils Diewald8db8f922014-10-24 17:43:13 +00007
Eliza Margaretha369e7562015-02-09 17:36:24 +00008import org.apache.lucene.search.spans.SpanQuery;
9import org.junit.Test;
10import org.junit.runner.RunWith;
11import org.junit.runners.JUnit4;
Nils Diewald8db8f922014-10-24 17:43:13 +000012
13import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
14import de.ids_mannheim.korap.util.QueryException;
15
Nils Diewald0cc4f2e2015-01-30 20:13:08 +000016/**
17 * @author diewald
18 */
19
Nils Diewald8db8f922014-10-24 17:43:13 +000020@RunWith(JUnit4.class)
21public class TestSpanSequenceQueryJSON {
22
23 static String path = "/queries/sequence/";
24
Nils Diewaldbb33da22015-03-04 16:24:25 +000025
Nils Diewald8db8f922014-10-24 17:43:13 +000026 // Test Extensions
27
28 @Test
29 public void queryJSONseqEmpty () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000030 SpanQueryWrapper sqwi = jsonQueryFile("empty.jsonld");
Nils Diewald8db8f922014-10-24 17:43:13 +000031
Nils Diewald5c375702015-02-09 20:58:24 +000032 // []
33 assertTrue(sqwi.isEmpty());
Nils Diewald8db8f922014-10-24 17:43:13 +000034 };
35
Nils Diewaldbb33da22015-03-04 16:24:25 +000036
Nils Diewald8db8f922014-10-24 17:43:13 +000037 @Test
38 public void queryJSONseqEmptyEnd () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000039 SpanQueryWrapper sqwi = jsonQueryFile("empty-last.jsonld");
Akron6759b042016-04-28 01:25:00 +020040 assertEquals(
41 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +010042 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:s:der, []{1, 1}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +000043 };
44
Nils Diewaldbb33da22015-03-04 16:24:25 +000045
Nils Diewald8db8f922014-10-24 17:43:13 +000046 @Test
47 public void queryJSONseqEmptyEndClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000048 SpanQueryWrapper sqwi = jsonQueryFile("empty-last-class.jsonld");
49 // der{3:[]}
Akron6759b042016-04-28 01:25:00 +020050 assertEquals(
51 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +010052 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:s:der, []{1, 1}, right, class:3)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +000053 };
54
Nils Diewaldbb33da22015-03-04 16:24:25 +000055
Nils Diewald8db8f922014-10-24 17:43:13 +000056 @Test
57 public void queryJSONseqEmptyEndRepetition () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000058 SpanQueryWrapper sqwi = jsonQueryFile("empty-last-repetition.jsonld");
59 // der[]{3,5}
Akron6759b042016-04-28 01:25:00 +020060 assertEquals(
61 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +010062 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:s:der, []{3, 5}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +000063 };
64
Nils Diewaldbb33da22015-03-04 16:24:25 +000065
Nils Diewald8db8f922014-10-24 17:43:13 +000066 @Test
67 public void queryJSONseqEmptyStart () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000068 SpanQueryWrapper sqwi = jsonQueryFile("empty-first.jsonld");
69 // [][tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +000070 assertEquals(sqwi.toQuery().toString(),
71 "spanExpansion(tokens:tt/p:NN, []{1, 1}, left)");
Nils Diewald8db8f922014-10-24 17:43:13 +000072 };
73
Nils Diewaldbb33da22015-03-04 16:24:25 +000074
Nils Diewald8db8f922014-10-24 17:43:13 +000075 @Test
76 public void queryJSONseqEmptyStartClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000077 SpanQueryWrapper sqwi = jsonQueryFile("empty-first-class.jsonld");
78 // {2:[]}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +000079 assertEquals(sqwi.toQuery().toString(),
80 "spanExpansion(tokens:tt/p:NN, []{1, 1}, left, class:2)");
Nils Diewald8db8f922014-10-24 17:43:13 +000081 };
82
Nils Diewaldbb33da22015-03-04 16:24:25 +000083
Nils Diewald8db8f922014-10-24 17:43:13 +000084 @Test
85 public void queryJSONseqEmptyStartRepetition () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000086 SpanQueryWrapper sqwi = jsonQueryFile("empty-first-repetition.jsonld");
87 // []{2,7}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +000088 assertEquals(sqwi.toQuery().toString(),
89 "spanExpansion(tokens:tt/p:NN, []{2, 7}, left)");
Nils Diewald8db8f922014-10-24 17:43:13 +000090 };
91
Nils Diewaldbb33da22015-03-04 16:24:25 +000092
Nils Diewald8db8f922014-10-24 17:43:13 +000093 @Test
94 public void queryJSONseqEmptyStartRepetition2 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +000095 SpanQueryWrapper sqwi = jsonQueryFile("empty-first-repetition-2.jsonld");
96 // []{0,0}[tt/p=NN]
97 assertEquals(sqwi.toQuery().toString(), "tokens:tt/p:NN");
Nils Diewald8db8f922014-10-24 17:43:13 +000098 };
99
Nils Diewaldbb33da22015-03-04 16:24:25 +0000100
Nils Diewald8db8f922014-10-24 17:43:13 +0000101 @Test
102 public void queryJSONseqEmptyMiddle () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000103 SpanQueryWrapper sqwi = jsonQueryFile("empty-middle.jsonld");
104 // der[][tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000105 assertEquals(sqwi.toQuery().toString(),
106 "spanNext(tokens:s:der, spanExpansion(tokens:tt/p:NN, []{1, 1}, left))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000107 };
108
Nils Diewaldbb33da22015-03-04 16:24:25 +0000109
Nils Diewald8db8f922014-10-24 17:43:13 +0000110 @Test
111 public void queryJSONseqEmptyMiddleClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000112 SpanQueryWrapper sqwi = jsonQueryFile("empty-middle-class.jsonld");
113 // der{1:[]}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000114 assertEquals(
115 sqwi.toQuery().toString(),
116 "spanNext(tokens:s:der, spanExpansion(tokens:tt/p:NN, []{1, 1}, left, class:1))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000117 };
118
Nils Diewaldbb33da22015-03-04 16:24:25 +0000119
Nils Diewald8db8f922014-10-24 17:43:13 +0000120 @Test
121 public void queryJSONseqEmptyMiddleRepetition () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000122 SpanQueryWrapper sqwi = jsonQueryFile("empty-middle-repetition.jsonld");
123 // der[]{4,8}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000124 assertEquals(sqwi.toQuery().toString(),
125 "spanNext(tokens:s:der, spanExpansion(tokens:tt/p:NN, []{4, 8}, left))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000126 };
127
Nils Diewaldbb33da22015-03-04 16:24:25 +0000128
Nils Diewald8db8f922014-10-24 17:43:13 +0000129 @Test
130 public void queryJSONseqEmptySurround () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000131 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround.jsonld");
132 // [][tt/p=NN][]
Akron6759b042016-04-28 01:25:00 +0200133 assertEquals(
134 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100135 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{1, 1}, left), []{1, 1}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000136 };
137
Nils Diewaldbb33da22015-03-04 16:24:25 +0000138
Nils Diewald8db8f922014-10-24 17:43:13 +0000139 @Test
140 public void queryJSONseqEmptySurroundClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000141 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround-class.jsonld");
142 // [][tt/p=NN]{2:[]}
Nils Diewaldbb33da22015-03-04 16:24:25 +0000143 assertEquals(
144 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100145 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{1, 1}, left), []{1, 1}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000146 };
147
Nils Diewaldbb33da22015-03-04 16:24:25 +0000148
Nils Diewald8db8f922014-10-24 17:43:13 +0000149 @Test
150 public void queryJSONseqEmptySurroundClass2 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000151 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround-class-2.jsonld");
152 // {3:[]}[tt/p=NN]{2:[]}
Nils Diewaldbb33da22015-03-04 16:24:25 +0000153 assertEquals(
154 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100155 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{1, 1}, left, class:3), []{1, 1}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000156 };
157
Nils Diewaldbb33da22015-03-04 16:24:25 +0000158
Nils Diewald8db8f922014-10-24 17:43:13 +0000159 @Test
160 public void queryJSONseqEmptySurroundRepetition () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000161 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround-repetition.jsonld");
162 // [][tt/p=NN][]{2,7}
Akron6759b042016-04-28 01:25:00 +0200163 assertEquals(
164 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100165 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{1, 1}, left), []{2, 7}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000166 };
167
Nils Diewaldbb33da22015-03-04 16:24:25 +0000168
Nils Diewald8db8f922014-10-24 17:43:13 +0000169 @Test
170 public void queryJSONseqEmptySurroundRepetition2 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000171 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround-repetition-2.jsonld");
172 // []{3,5}[tt/p=NN][]{2,7}
Akron6759b042016-04-28 01:25:00 +0200173 assertEquals(
174 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100175 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{3, 5}, left), []{2, 7}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000176 };
177
Nils Diewaldbb33da22015-03-04 16:24:25 +0000178
Nils Diewald8db8f922014-10-24 17:43:13 +0000179 @Test
Nils Diewaldbb33da22015-03-04 16:24:25 +0000180 public void queryJSONseqEmptySurroundRepetitionClass ()
181 throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000182 SpanQueryWrapper sqwi = jsonQueryFile("empty-surround-repetition-class.jsonld");
183 // {1:[]}{3,8}[tt/p=NN]{2:[]{2,7}}
184 // Ist gleichbedeutend mit
185 // {1:[]{3,8}}[tt/p=NN]{2:[]}{2,7}
Nils Diewaldbb33da22015-03-04 16:24:25 +0000186 assertEquals(
187 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100188 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, []{3, 8}, left, class:1), []{2, 7}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000189 };
190
Nils Diewaldbb33da22015-03-04 16:24:25 +0000191
Nils Diewald8db8f922014-10-24 17:43:13 +0000192 @Test
193 public void queryJSONseqNegative () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000194 SpanQueryWrapper sqwi = jsonQueryFile("negative.jsonld");
195 // [tt/p!=NN]
196 assertTrue(sqwi.isNegative());
Nils Diewald8db8f922014-10-24 17:43:13 +0000197 };
198
Nils Diewaldbb33da22015-03-04 16:24:25 +0000199
Nils Diewald8db8f922014-10-24 17:43:13 +0000200 @Test
201 public void queryJSONseqNegativeStart () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000202 SpanQueryWrapper sqwi = jsonQueryFile("negative-first.jsonld");
203 // [tt/p!=NN][tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000204 assertEquals(sqwi.toQuery().toString(),
205 "spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{1, 1}, left)");
Nils Diewald8db8f922014-10-24 17:43:13 +0000206 };
207
Nils Diewaldbb33da22015-03-04 16:24:25 +0000208
Nils Diewald8db8f922014-10-24 17:43:13 +0000209 @Test
210 public void queryJSONseqNegativeEnd () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000211 SpanQueryWrapper sqwi = jsonQueryFile("negative-last.jsonld");
212 // [tt/p=NN][tt/p!=NN]
Akron6759b042016-04-28 01:25:00 +0200213 assertEquals(
214 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100215 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{1, 1}, right)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000216 };
217
Nils Diewaldbb33da22015-03-04 16:24:25 +0000218
Nils Diewald8db8f922014-10-24 17:43:13 +0000219 @Test
220 public void queryJSONseqNegativeStartRepetition () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000221 SpanQueryWrapper sqwi = jsonQueryFile("negative-first-repetition.jsonld");
222 // [tt/p!=NN]{4,5}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000223 assertEquals(sqwi.toQuery().toString(),
224 "spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{4, 5}, left)");
Nils Diewald8db8f922014-10-24 17:43:13 +0000225 };
226
Nils Diewaldbb33da22015-03-04 16:24:25 +0000227
Nils Diewald8db8f922014-10-24 17:43:13 +0000228 @Test
229 public void queryJSONseqNegativeStartRepetition2 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000230 SpanQueryWrapper sqwi = jsonQueryFile("negative-first-repetition-2.jsonld");
231 // [tt/p!=NN]{0,5}[tt/p=NN]
Nils Diewaldbb33da22015-03-04 16:24:25 +0000232 assertEquals(sqwi.toQuery().toString(),
233 "spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{0, 5}, left)");
Nils Diewald8db8f922014-10-24 17:43:13 +0000234 };
235
Nils Diewaldbb33da22015-03-04 16:24:25 +0000236
Nils Diewald8db8f922014-10-24 17:43:13 +0000237 @Test
238 public void queryJSONseqNegativeStartRepetition3 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000239 SpanQueryWrapper sqwi = jsonQueryFile("negative-first-repetition-3.jsonld");
240 // [tt/p!=NN]{0,0}[tt/p=NN]
241 assertEquals(sqwi.toQuery().toString(), "tokens:tt/p:NN");
Nils Diewald8db8f922014-10-24 17:43:13 +0000242 };
243
Nils Diewaldbb33da22015-03-04 16:24:25 +0000244
Nils Diewald8db8f922014-10-24 17:43:13 +0000245 @Test
246 public void queryJSONseqNegativeEndClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000247 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-class.jsonld");
248 // [tt/p=NN]{2:[tt/p!=NN]}
249 SpanQuery sq = sqwi.toQuery();
Akron6759b042016-04-28 01:25:00 +0200250 assertEquals(
251 sq.toString(),
Akrona7b936d2016-03-04 13:40:54 +0100252 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{1, 1}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000253 };
254
Nils Diewaldbb33da22015-03-04 16:24:25 +0000255
Nils Diewald8db8f922014-10-24 17:43:13 +0000256 @Test
257 public void queryJSONseqNegativeEndRepetitionClass () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000258 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-class-repetition.jsonld");
259 // [tt/p=NN]{2:[tt/p!=NN]{4,5}}
Akron6759b042016-04-28 01:25:00 +0200260 assertEquals(
261 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100262 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{4, 5}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000263 };
264
Nils Diewaldbb33da22015-03-04 16:24:25 +0000265
Nils Diewald8db8f922014-10-24 17:43:13 +0000266 @Test
Nils Diewaldbb33da22015-03-04 16:24:25 +0000267 public void queryJSONseqNegativeEndRepetitionClass2 ()
268 throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000269 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-class-repetition-2.jsonld");
270 // [tt/p=NN]{2:[tt/p!=NN]}{4,5}
Akron6759b042016-04-28 01:25:00 +0200271 assertEquals(
272 sqwi.toQuery().toString(),
Akrona7b936d2016-03-04 13:40:54 +0100273 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(tokens:tt/p:NN, !tokens:tt/p:NN{4, 5}, right, class:2)}))");
Nils Diewald8db8f922014-10-24 17:43:13 +0000274 };
275
Nils Diewaldbb33da22015-03-04 16:24:25 +0000276
Nils Diewald8db8f922014-10-24 17:43:13 +0000277 @Test
278 public void queryJSONseqNegativelastConstraint () {
Nils Diewald5c375702015-02-09 20:58:24 +0000279 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-constraint.jsonld");
280 try {
281 sqwi.toQuery().toString();
282 fail("Should throw an exception");
283 }
284 catch (QueryException qe) {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000285 assertEquals(
286 "Distance constraints not supported with empty or negative operands",
287 qe.getMessage());
Nils Diewald5c375702015-02-09 20:58:24 +0000288 };
Nils Diewald8db8f922014-10-24 17:43:13 +0000289 };
290
Nils Diewaldbb33da22015-03-04 16:24:25 +0000291
Nils Diewald8db8f922014-10-24 17:43:13 +0000292 @Test
293 public void queryJSONseqNegativeEndSequence () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000294 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-sequence.jsonld");
295 // [tt/p=NN]([tt/p!=DET][tt/p!=NN])
Nils Diewaldbb33da22015-03-04 16:24:25 +0000296 assertEquals(
Akrona7b936d2016-03-04 13:40:54 +0100297 "focus(254: spanContain(<tokens:base/s:t />, {254: spanExpansion(spanExpansion(tokens:tt/p:NN, !tokens:tt/p:DET{1, 1}, right), !tokens:tt/p:ADJ{1, 1}, right)}))",
Nils Diewaldbb33da22015-03-04 16:24:25 +0000298 sqwi.toQuery().toString());
Nils Diewald8db8f922014-10-24 17:43:13 +0000299 };
300
Nils Diewaldb84e7272014-11-07 01:27:38 +0000301
Nils Diewald8db8f922014-10-24 17:43:13 +0000302 @Test
303 public void queryJSONseqNegativeEndSequence2 () throws QueryException {
Nils Diewald5c375702015-02-09 20:58:24 +0000304 SpanQueryWrapper sqwi = jsonQueryFile("negative-last-sequence-2.jsonld");
305 // [tt/p!=NN]([tt/p!=DET][tt/p=NN])
Nils Diewald8db8f922014-10-24 17:43:13 +0000306
Nils Diewald5c375702015-02-09 20:58:24 +0000307 // spanNext(tokens:tt/p:NN,
Nils Diewaldbb33da22015-03-04 16:24:25 +0000308 assertEquals(
309 "spanExpansion(spanExpansion(tokens:tt/p:ADJ, !tokens:tt/p:DET{1, 1}, left), !tokens:tt/p:NN{1, 1}, left)",
310 sqwi.toQuery().toString());
Nils Diewald8db8f922014-10-24 17:43:13 +0000311 };
312
Nils Diewaldbb33da22015-03-04 16:24:25 +0000313
Nils Diewaldb84e7272014-11-07 01:27:38 +0000314 @Test
315 public void queryJSONseqMultipleDistances () throws QueryException {
Akron4d5fe192016-02-16 00:22:14 +0100316 SpanQueryWrapper sqwi = jsonQueryFile("distance-multiple.jsonld");
Nils Diewald5c375702015-02-09 20:58:24 +0000317 // er []{,10} kann []{1,10} sagte
Nils Diewaldb84e7272014-11-07 01:27:38 +0000318
Nils Diewaldbb33da22015-03-04 16:24:25 +0000319 assertEquals(
320 "spanDistance(tokens:s:er, spanDistance(tokens:s:kann, tokens:s:sagte, [(w[2:11], ordered, notExcluded)]), [(w[1:11], ordered, notExcluded)])",
321 sqwi.toQuery().toString());
Nils Diewaldb84e7272014-11-07 01:27:38 +0000322 };
Nils Diewald8db8f922014-10-24 17:43:13 +0000323
Akron13db6152016-02-19 14:08:38 +0100324
Akron4d5fe192016-02-16 00:22:14 +0100325 @Test
326 public void queryJSONseqSentenceDistance () throws QueryException {
327 SpanQueryWrapper sqwi = jsonQueryFile("distance-sentence.jsonld");
328
Akron13db6152016-02-19 14:08:38 +0100329 assertEquals(
330 "spanElementDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(base/s:s[0:0], notOrdered, notExcluded)])",
331 sqwi.toQuery().toString());
Akron4d5fe192016-02-16 00:22:14 +0100332 };
333
Akron13db6152016-02-19 14:08:38 +0100334
Akron4d5fe192016-02-16 00:22:14 +0100335 @Test
336 public void queryJSONseqSentenceDistanceExcluded () throws QueryException {
337 SpanQueryWrapper sqwi = jsonQueryFile("distance-sentence-excluded.jsonld");
338
Akron13db6152016-02-19 14:08:38 +0100339 assertEquals(
340 "spanElementDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(base/s:s[0:0], notOrdered, excluded)])",
341 sqwi.toQuery().toString());
Akron4d5fe192016-02-16 00:22:14 +0100342 };
343
Nils Diewald8db8f922014-10-24 17:43:13 +0000344
Akron4e2bc0e2016-02-17 12:23:46 +0100345 @Test
346 public void queryJSONkoralSimpleDistanceBug () throws QueryException {
347 SpanQueryWrapper sqwi = jsonQueryFile("distance-simple.jsonld");
348
Akron13db6152016-02-19 14:08:38 +0100349 assertEquals(
350 "spanDistance(tokens:s:der, tokens:s:Baum, [(w[2:2], ordered, notExcluded)])",
351 sqwi.toQuery().toString());
Akron4e2bc0e2016-02-17 12:23:46 +0100352 };
353
354
Nils Diewald8db8f922014-10-24 17:43:13 +0000355 // get query wrapper based on json file
356 public SpanQueryWrapper jsonQueryFile (String filename) {
Nils Diewald5c375702015-02-09 20:58:24 +0000357 return getJSONQuery(getClass().getResource(path + filename).getFile());
Nils Diewald8db8f922014-10-24 17:43:13 +0000358 };
359};