"operation:or" -> "operation:disjunction"
negated tokens
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
index 8a0ae98..d8b0196 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessorTest.java
@@ -956,6 +956,22 @@
         assertEquals("korap:group",         res.at("/query/operands/0/operands/0/@type").asText());
         assertEquals("operation:relation",  res.at("/query/operands/0/operands/0/operation").asText());
     }
+    
+    @Test
+    public void testDisjunction() throws Exception {
+        query = "cat=\"NP\" | cat=\"VP\"";
+        qs.setQuery(query, "annis");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("korap:group",         res.at("/query/@type").asText());
+        assertEquals("operation:disjunction",  res.at("/query/operation").asText());
+        assertEquals("korap:span",          res.at("/query/operands/0/@type").asText());
+        assertEquals("NP",                  res.at("/query/operands/0/key").asText());
+        assertEquals("c",                   res.at("/query/operands/0/layer").asText());
+        assertEquals("korap:span",          res.at("/query/operands/1/@type").asText());
+        assertEquals("VP",                  res.at("/query/operands/1/key").asText());
+        assertEquals("c",                   res.at("/query/operands/1/layer").asText());
+    }
+    
     //		
     //		query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 $ #3";
     //		String cp2 =
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
index 82020db..faabc82 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessorTest.java
@@ -241,7 +241,7 @@
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group",			res.at("/query/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
         assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
         assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
         assertEquals(true,					res.at("/query/operands/2").isMissingNode());
@@ -250,7 +250,7 @@
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group",			res.at("/query/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
         assertEquals("korap:group",			res.at("/query/operands/0/@type").asText());
         assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
         assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
@@ -262,7 +262,7 @@
         qs.setQuery(query, "cosmas2");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group",			res.at("/query/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
         assertEquals("korap:group",			res.at("/query/operands/0/@type").asText());
         assertEquals("operation:sequence",	res.at("/query/operands/0/operation").asText());
         assertEquals("korap:group",			res.at("/query/operands/1/@type").asText());
@@ -286,7 +286,7 @@
         assertEquals(0,						res.at("/query/distances/0/min").asInt());
         assertEquals(0,						res.at("/query/distances/0/max").asInt());
         assertEquals("korap:group",			res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operands/0/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operands/0/operation").asText());
         assertEquals("Sonne",				res.at("/query/operands/0/operands/0/wrap/key").asText());
         assertEquals("Mond",				res.at("/query/operands/0/operands/1/wrap/key").asText());
         assertEquals("korap:token",			res.at("/query/operands/1/@type").asText());
@@ -304,7 +304,7 @@
         assertEquals("korap:token",			res.at("/query/operands/0/@type").asText());
         assertEquals("scheint",				res.at("/query/operands/0/wrap/key").asText());
         assertEquals("korap:group",			res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operands/1/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operands/1/operation").asText());
         assertEquals("Sonne",				res.at("/query/operands/1/operands/0/wrap/key").asText());
         assertEquals("Mond",				res.at("/query/operands/1/operands/1/wrap/key").asText());
 
@@ -327,7 +327,7 @@
         assertEquals(0,						res.at("/query/operands/1/distances/0/max").asInt());
         assertEquals("scheint",				res.at("/query/operands/1/operands/0/wrap/key").asText());
         assertEquals("korap:group",			res.at("/query/operands/1/operands/1/@type").asText());
-        assertEquals("operation:or",		res.at("/query/operands/1/operands/1/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operands/1/operands/1/operation").asText());
         assertEquals("Sonne",				res.at("/query/operands/1/operands/1/operands/0/wrap/key").asText());
         assertEquals("Mond",				res.at("/query/operands/1/operands/1/operands/1/wrap/key").asText());
     }
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
index f9cdf16..04bd48c 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
@@ -82,6 +82,17 @@
     }
 
     @Test
+    public void testNegatedTokens() throws JsonProcessingException, IOException {
+        query = "![p!=NN]";
+        qs.setQuery(query, "poliqarpplus");
+        res = mapper.readTree(qs.toJSON());
+        assertEquals("korap:token",         res.at("/query/@type").asText());
+        assertEquals("NN",                  res.at("/query/wrap/key").asText());
+        assertEquals("p",                   res.at("/query/wrap/layer").asText());
+        assertEquals("match:eq",            res.at("/query/wrap/match").asText());
+    }
+    
+    @Test
     public void testValue() throws JsonProcessingException, IOException {
         query = "[mate/m=temp:pres]";
         qs.setQuery(query, "poliqarpplus");
@@ -816,7 +827,7 @@
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
         assertEquals("korap:token", 		res.at("/query/operands/0/@type").asText());
         assertEquals("korap:token", 		res.at("/query/operands/1/@type").asText());
         assertEquals("der", 				res.at("/query/operands/0/wrap/key").asText());
@@ -831,20 +842,20 @@
         assertEquals("operation:sequence", 	res.at("/query/operation").asText());
         assertEquals("Schild", 				res.at("/query/operands/1/wrap/key").asText());
         assertEquals("korap:group", 		res.at("/query/operands/0/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operands/0/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operands/0/operation").asText());
 
         query = "[base=Schild]([base=der]|[base=das])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         assertEquals("Schild", 				res.at("/query/operands/0/wrap/key").asText());
         assertEquals("korap:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operands/1/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
 
         query = "([orth=der][base=katze])|([orth=eine][base=baum])";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
         assertEquals("korap:group", 		res.at("/query/operands/0/@type").asText());
         assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
         assertEquals("korap:token", 		res.at("/query/operands/0/operands/0/@type").asText());
@@ -857,7 +868,7 @@
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         assertEquals("korap:group", 		res.at("/query/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
         assertEquals("korap:group", 		res.at("/query/operands/0/@type").asText());
         assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
         assertEquals("korap:token", 		res.at("/query/operands/0/operands/0/@type").asText());
@@ -872,7 +883,7 @@
         assertEquals("korap:group", 		res.at("/query/@type").asText());
         assertEquals("operation:sequence", 	res.at("/query/operation").asText());
         assertEquals("korap:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operands/1/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
         assertEquals("korap:token", 		res.at("/query/operands/0/@type").asText());
         assertEquals("korap:token", 		res.at("/query/operands/2/@type").asText());
         assertEquals("der", 				res.at("/query/operands/0/wrap/key").asText());
@@ -892,7 +903,7 @@
         assertEquals("korap:group", 		res.at("/query/@type").asText());
         assertEquals("operation:sequence", 	res.at("/query/operation").asText());
         assertEquals("korap:group", 		res.at("/query/operands/1/@type").asText());
-        assertEquals("operation:or", 		res.at("/query/operands/1/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operands/1/operation").asText());
         assertEquals("korap:token", 		res.at("/query/operands/0/@type").asText());
         assertEquals("korap:token", 		res.at("/query/operands/1/operands/0/@type").asText());
         assertEquals("korap:token", 		res.at("/query/operands/1/operands/1/@type").asText());
@@ -1243,7 +1254,7 @@
         query = "([base=a]^[base=b])|[base=c]";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:or", 		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction", 		res.at("/query/operation").asText());
         assertEquals("operation:sequence", 	res.at("/query/operands/0/operation").asText());
         assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
         assertEquals("a", 					res.at("/query/operands/0/operands/0/wrap/key").asText());
@@ -1307,7 +1318,7 @@
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
         assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
-        assertEquals("operation:or",		res.at("/query/operands/1/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operands/1/operation").asText());
         assertEquals("große",				res.at("/query/operands/1/operands/0/wrap/key").asText());
         assertEquals("kleine",				res.at("/query/operands/1/operands/1/wrap/key").asText());
         assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
@@ -1315,7 +1326,7 @@
         query = "der große Baum | der kleine Baum";
         qs.setQuery(query, "poliqarpplus");
         res = mapper.readTree(qs.toJSON());
-        assertEquals("operation:or",		res.at("/query/operation").asText());
+        assertEquals("operation:disjunction",		res.at("/query/operation").asText());
         assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
         assertEquals("große",				res.at("/query/operands/0/operands/1/wrap/key").asText());
         assertEquals("Baum",				res.at("/query/operands/0/operands/2/wrap/key").asText());