// Path: src/main/java/de/ids_mannheim/korap/query/serialize/MapBuilder.java
// public class MapBuilder {
// 
//     /** Builds a query map containing JSON-LD serialization parts of the given KoralObject.
//      * @param o
//      * @return a map
//      */
//     public static Map<String, Object> buildQueryMap(KoralObject o) {
//         if (o != null) {
//             if (o instanceof KoralToken) {
//                 KoralToken token = (KoralToken) o;
//                 return token.buildMap();
//             }
//             else if (o instanceof KoralGroup) {
//                 KoralGroup group = (KoralGroup) o;
//                 return group.buildMap();
//             }
//             if (o instanceof KoralTerm) {
//                 KoralTerm term = (KoralTerm) o;
//                 return term.buildMap();
//             }
//             else if (o instanceof KoralTermGroup) {
//                 KoralTermGroup termGroup = (KoralTermGroup) o;
//                 return termGroup.buildMap();
//             }
//             else if (o instanceof KoralSpan){
//             	KoralSpan span = (KoralSpan) o;
//             	return span.buildMap();
//             }
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralObject.java
// public interface KoralObject {
// 
//     /** Serializes the KoralObject into JSON-LD and structures it as a map.  
//      * 
//      * @return a map containing parts of the JSON-LD serialization of the Koral object.
//      */
//     public Map<String, Object> buildMap();
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java
// public enum KoralOperation {
//     SEQUENCE, POSITION, DISJUNCTION, REPETITION, CLASS, MERGE, RELATION, FOCUS, EXCLUSION, HIERARCHY, AND, OR;
// 
//     @Override
//     public String toString () {
//         return "operation:" + super.toString().toLowerCase();
//     }
// 
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralType.java
// public enum KoralType {
//     TERMGROUP("koral:termGroup"), TERM("koral:term"), TOKEN("koral:token"), 
//     SPAN("koral:span"), GROUP("koral:group"), BOUNDARY("koral:boundary"), 
//     RELATION("koral:relation"), DISTANCE("koral:distance"), REFERENCE(
//     "koral:reference"), DOCUMENT("koral:doc"), DOCUMENT_GROUP("koral:docGroup"),
//     DOCUMENT_GROUP_REF("koral:docGroupRef"),
//     QUERY_REF("koral:queryRef"),
//     COSMAS_DISTANCE("cosmas:distance");
// 
//     String value;
// 
// 
//     KoralType (String value) {
//         this.value = value;
//     }
// 
// 
//     @Override
//     public String toString () {
//         return value;
//     }
// }


import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import de.ids_mannheim.korap.query.serialize.MapBuilder;
import de.ids_mannheim.korap.query.object.KoralObject;
import de.ids_mannheim.korap.query.object.KoralOperation;
import de.ids_mannheim.korap.query.object.KoralType;
package de.ids_mannheim.korap.query.object;



/** Definition of koral:group in KoralQuery.
 * @author margaretha
 * 
 */
public class KoralGroup implements KoralObject {

    private static final KoralType type = KoralType.GROUP;

// Path: src/main/java/de/ids_mannheim/korap/query/serialize/MapBuilder.java
// public class MapBuilder {
// 
//     /** Builds a query map containing JSON-LD serialization parts of the given KoralObject.
//      * @param o
//      * @return a map
//      */
//     public static Map<String, Object> buildQueryMap(KoralObject o) {
//         if (o != null) {
//             if (o instanceof KoralToken) {
//                 KoralToken token = (KoralToken) o;
//                 return token.buildMap();
//             }
//             else if (o instanceof KoralGroup) {
//                 KoralGroup group = (KoralGroup) o;
//                 return group.buildMap();
//             }
//             if (o instanceof KoralTerm) {
//                 KoralTerm term = (KoralTerm) o;
//                 return term.buildMap();
//             }
//             else if (o instanceof KoralTermGroup) {
//                 KoralTermGroup termGroup = (KoralTermGroup) o;
//                 return termGroup.buildMap();
//             }
//             else if (o instanceof KoralSpan){
//             	KoralSpan span = (KoralSpan) o;
//             	return span.buildMap();
//             }
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralObject.java
// public interface KoralObject {
// 
//     /** Serializes the KoralObject into JSON-LD and structures it as a map.  
//      * 
//      * @return a map containing parts of the JSON-LD serialization of the Koral object.
//      */
//     public Map<String, Object> buildMap();
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralOperation.java
// public enum KoralOperation {
//     SEQUENCE, POSITION, DISJUNCTION, REPETITION, CLASS, MERGE, RELATION, FOCUS, EXCLUSION, HIERARCHY, AND, OR;
// 
//     @Override
//     public String toString () {
//         return "operation:" + super.toString().toLowerCase();
//     }
// 
// }
// 
// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralType.java
// public enum KoralType {
//     TERMGROUP("koral:termGroup"), TERM("koral:term"), TOKEN("koral:token"), 
//     SPAN("koral:span"), GROUP("koral:group"), BOUNDARY("koral:boundary"), 
//     RELATION("koral:relation"), DISTANCE("koral:distance"), REFERENCE(
//     "koral:reference"), DOCUMENT("koral:doc"), DOCUMENT_GROUP("koral:docGroup"),
//     DOCUMENT_GROUP_REF("koral:docGroupRef"),
//     QUERY_REF("koral:queryRef"),
//     COSMAS_DISTANCE("cosmas:distance");
// 
//     String value;
// 
// 
//     KoralType (String value) {
//         this.value = value;
//     }
// 
// 
//     @Override
//     public String toString () {
//         return value;
//     }
// }


// Path: src/main/java/de/ids_mannheim/korap/query/object/KoralGroup.java
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import de.ids_mannheim.korap.query.serialize.MapBuilder;
import de.ids_mannheim.korap.query.object.KoralObject;
import de.ids_mannheim.korap.query.object.KoralOperation;
import de.ids_mannheim.korap.query.object.KoralType;

package de.ids_mannheim.korap.query.object;



/** Definition of koral:group in KoralQuery.
 * @author margaretha
 * 
 */
public class KoralGroup implements KoralObject {

    private static final KoralType type = KoralType.GROUP;

    private KoralOperation operation;