Added support for group:disjunction in deserialization
Change-Id: Ib30ef0225a430e40920c02a42c0850add53dc37e
diff --git a/Changes b/Changes
index 2dda6e1..04373a8 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.52 2015-06-26
+0.52 2015-06-27
- [bugfix] Fixed payload filtering in FocusSpans (margaretha)
- [workaround] Reintroduced empty collection support,
as Koral still creates them (diewald)
@@ -18,6 +18,7 @@
- [bugfix] Remove legacy error handling in Match (diewald)
- [bugfix] JSON-serialization bug in match in case of error messages (diewald)
- [bugfix] 'fields' serialization (diewald)
+ - [bugfix] deserialization of group:disjunction (diewald)
0.51 2015-03-17
- This is a major version (prepared for the GitHub release)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 3bf8bcd..19377fd 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -395,37 +395,39 @@
// Branch on operation
switch (operation) {
- case "operation:junction":
- return this._operationJunctionFromJson(operands);
+ case "operation:junction":
+ return this._operationJunctionFromJson(operands);
- case "operation:position":
- return this._operationPositionFromJson(json, operands);
+ case "operation:position":
+ return this._operationPositionFromJson(json, operands);
- case "operation:sequence":
- return this._operationSequenceFromJson(json, operands);
+ case "operation:sequence":
+ return this._operationSequenceFromJson(json, operands);
- case "operation:class":
- return this._operationClassFromJson(json, operands);
+ case "operation:class":
+ return this._operationClassFromJson(json, operands);
- case "operation:repetition":
- return this._operationRepetitionFromJson(json, operands);
+ case "operation:repetition":
+ return this._operationRepetitionFromJson(json, operands);
- case "operation:relation":
- if (!json.has("relation")) {
- throw new QueryException(717, "Missing relation node");
- }
+ case "operation:relation":
+ if (!json.has("relation")) {
+ throw new QueryException(717, "Missing relation node");
+ }
- return _operationRelationFromJson(operands,
- json.get("relation"));
- /*throw new QueryException(765,
- "Relations are currently not supported");*/
+ return _operationRelationFromJson(operands,
+ json.get("relation"));
+ /*throw new QueryException(765,
+ "Relations are currently not supported");*/
- case "operation:or": // Deprecated in favor of operation:junction
- return this._operationJunctionFromJson(operands);
- /*
- case "operation:submatch": // Deprecated in favor of koral:reference
- return this._operationSubmatchFromJson(json, operands);
- */
+ case "operation:or": // Deprecated in favor of operation:junction
+ return this._operationJunctionFromJson(operands);
+ /*
+ case "operation:submatch": // Deprecated in favor of koral:reference
+ return this._operationSubmatchFromJson(json, operands);
+ */
+ case "operation:disjunction":
+ return this._operationJunctionFromJson(operands);
};
// Unknown
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index df00673..4ffbb78 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -32,6 +32,19 @@
assertTrue(sqwi.isOptional());
};
+ @Test
+ public void queryJSONBsp1Disjunction () throws QueryException {
+ SpanQueryWrapper sqwi = jsonQuery(getClass().getResource(
+ "/queries/bsp1c.jsonld").getFile());
+
+ // There is a repetition in here
+ // ([base=foo]|[base=bar])[base=foobar]
+ assertEquals(
+ sqwi.toQuery().toString(),
+ "spanOr([tokens:base:foo, spanRepetition(spanNext(tokens:base:foo, tokens:base:bar){1,100})])");
+ assertTrue(sqwi.isOptional());
+ };
+
@Test
public void queryJSONBsp1b () throws QueryException {
diff --git a/src/test/resources/queries/bsp1c.jsonld b/src/test/resources/queries/bsp1c.jsonld
new file mode 100644
index 0000000..7b0b48f
--- /dev/null
+++ b/src/test/resources/queries/bsp1c.jsonld
@@ -0,0 +1,46 @@
+{
+ "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
+ "query": {
+ "@type": "koral:group",
+ "operation": "operation:disjunction",
+ "operands": [
+ {
+ "@type": "koral:token",
+ "wrap": {
+ "@type": "koral:term",
+ "layer": "base",
+ "key": "foo"
+ }
+ },
+ {
+ "@type": "koral:group",
+ "min" : 0,
+ "operation": "operation:repetition",
+ "operands": [
+ {
+ "@type": "koral:group",
+ "operation" : "operation:sequence",
+ "operands": [
+ {
+ "@type": "koral:token",
+ "wrap": {
+ "@type": "koral:term",
+ "key": "foo",
+ "layer" : "base"
+ }
+ },
+ {
+ "@type": "koral:token",
+ "wrap": {
+ "@type": "koral:term",
+ "layer": "base",
+ "key" : "bar"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}