Altered dominance serialization & added tests.
Change-Id: I7b03f804d48230157fa0b6c296ba130b6eb0da41
diff --git a/src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java b/src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java
index 675b627..5dd557f 100644
--- a/src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java
+++ b/src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java
@@ -1,14 +1,16 @@
package de.ids_mannheim.korap.query.object;
-/** Definition of possible operations within koral:group.
+/**
+ * Definition of possible operations within koral:group.
+ *
* @author margaretha
*
*/
public enum KoralOperation {
- SEQUENCE, POSITION, DISJUNCTION, REPETITION, CLASS, MERGE, RELATION, FOCUS, EXCLUSION;
+ SEQUENCE, POSITION, DISJUNCTION, REPETITION, CLASS, MERGE, RELATION, FOCUS, EXCLUSION, HIERARCHY;
@Override
- public String toString() {
+ public String toString () {
return "operation:" + super.toString().toLowerCase();
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
index a5f269f..5757625 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
@@ -715,6 +715,10 @@
group = KoralObjectGenerator.makeGroup(KoralOperation.SEQUENCE);
putAllButGroupType(group, operatorGroup);
}
+ else if (groupType.equals("hierarchy")) {
+ group = KoralObjectGenerator.makeGroup(KoralOperation.HIERARCHY);
+ putAllButGroupType(group, operatorGroup);
+ }
else if (groupType.equals("position")) {
group = new HashMap<String, Object>();
putAllButGroupType(group, operatorGroup);
@@ -851,20 +855,22 @@
String operator = getNodeCat(operatorNode);
// DOMINANCE
if (operator.equals("dominance")) {
- relation = KoralObjectGenerator.makeRelation();
- relation.put("groupType", "relation");
- ParseTree qName = getFirstChildWithCat(operatorNode, "qName");
+// relation = KoralObjectGenerator.makeRelation();
+ relation = new HashMap<String, Object>();
+ relation.put("groupType", "hierarchy");
+// ParseTree qName = getFirstChildWithCat(operatorNode, "qName");
ParseTree edgeSpecNode = getFirstChildWithCat(operatorNode,
"edgeSpec");
ParseTree star = getFirstChildWithCat(operatorNode, "*");
ParseTree rangeSpec = getFirstChildWithCat(operatorNode,
"rangeSpec");
- Map<String, Object> term = KoralObjectGenerator
- .makeTerm();
- term.put("layer", "c");
- if (qName != null)
- term = parseQNameNode(qName);
+
+// term.put("layer", "c");
+// if (qName != null)
+// term = parseQNameNode(qName);
if (edgeSpecNode != null) {
+ Map<String, Object> term = KoralObjectGenerator
+ .makeTerm();
Map<String, Object> edgeSpec = parseEdgeSpec(edgeSpecNode);
String edgeSpecType = (String) edgeSpec.get("@type");
if (edgeSpecType.equals("koral:termGroup")) {
@@ -872,22 +878,23 @@
term = edgeSpec;
}
else {
- term = KoralObjectGenerator.makeTermGroup(KoralTermGroupRelation.AND);
- ArrayList<Object> termGroupOperands = (ArrayList<Object>) term
- .get("operands");
- termGroupOperands.add(edgeSpec);
- Map<String, Object> constTerm = KoralObjectGenerator
- .makeTerm();
- constTerm.put("layer", "c");
- termGroupOperands.add(constTerm);
+ term = edgeSpec;
+// term = KoralObjectGenerator.makeTermGroup(KoralTermGroupRelation.AND);
+// ArrayList<Object> termGroupOperands = (ArrayList<Object>) term
+// .get("operands");
+// termGroupOperands.add(edgeSpec);
+// Map<String, Object> constTerm = KoralObjectGenerator
+// .makeTerm();
+// constTerm.put("layer", "c");
+// termGroupOperands.add(constTerm);
}
+ relation.put("label", term);
}
if (star != null)
relation.put("boundary",
KoralObjectGenerator.makeBoundary(0, null));
if (rangeSpec != null)
relation.put("boundary", boundaryFromRangeSpec(rangeSpec));
- relation.put("wrap", term);
}
else if (operator.equals("pointing")) {
relation = KoralObjectGenerator.makeRelation();
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/util/KoralObjectGenerator.java b/src/main/java/de/ids_mannheim/korap/query/serialize/util/KoralObjectGenerator.java
index 6949812..0222864 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/util/KoralObjectGenerator.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/util/KoralObjectGenerator.java
@@ -182,8 +182,7 @@
group.put("@type", KoralType.RELATION.toString());
return group;
}
-
-
+
public static Map<String, Object> makeBoundary (Integer min,
Integer max) {
Map<String, Object> group = new HashMap<String, Object>();