diff --git a/validation/validator.go b/validation/validator.go
index 66b77c8..343e820 100644
--- a/validation/validator.go
+++ b/validation/validator.go
@@ -65,15 +65,11 @@
 
 // Regular expressions for validation
 var (
-	// Query language validation - KorAP supports poliqarp, cosmas2, annis
-	validQueryLanguages = map[string]bool{
-		"poliqarp": true,
-		"cosmas2":  true,
-		"annis":    true,
-	}
+	// Query language validation
+	validQueryLanguages = []string{"poliqarp", "poliqarpplus", "cosmas2", "annis", "cql", "cqp", "fcsql"}
 
-	// Corpus ID validation - alphanumeric with dots, hyphens, underscores
-	corpusIDRegex = regexp.MustCompile(`^[a-zA-Z0-9._-]+$`)
+	// Corpus ID validation - KorAP collection queries with metadata fields, operators, and regex
+	corpusIDRegex = regexp.MustCompile(`^[a-zA-Z0-9._\-\s&|!=<>()/*"']+$`)
 
 	// Action validation for metadata requests
 	validMetadataActions = map[string]bool{
@@ -105,15 +101,11 @@
 	}
 
 	// Validate query language if provided
-	if req.QueryLanguage != "" && !validQueryLanguages[req.QueryLanguage] {
-		var validLangs []string
-		for lang := range validQueryLanguages {
-			validLangs = append(validLangs, lang)
-		}
+	if req.QueryLanguage != "" && !contains(validQueryLanguages, req.QueryLanguage) {
 		errors = append(errors, ValidationError{
 			Field:   "query_language",
 			Value:   req.QueryLanguage,
-			Message: fmt.Sprintf("invalid query language, must be one of: %s", strings.Join(validLangs, ", ")),
+			Message: fmt.Sprintf("invalid query language, must be one of: %s", strings.Join(validQueryLanguages, ", ")),
 		})
 	}
 
@@ -404,7 +396,9 @@
 	return nil
 }
 
-// validateCorpusID validates a corpus identifier
+// validateCorpusID validates a corpus identifier or collection query
+// This supports both simple corpus sigles (e.g., "DeReKo-2023-I") and complex
+// collection queries with metadata fields (e.g., "textClass = \"politics\" & pubDate in 2020")
 func (v *Validator) validateCorpusID(corpusID string) error {
 	if len(corpusID) == 0 {
 		return fmt.Errorf("corpus ID cannot be empty")
@@ -415,7 +409,7 @@
 	}
 
 	if !corpusIDRegex.MatchString(corpusID) {
-		return fmt.Errorf("corpus ID contains invalid characters (only alphanumeric, dots, hyphens, underscores allowed)")
+		return fmt.Errorf("collection query contains invalid characters (supports alphanumeric, dots, hyphens, underscores, spaces, quotes, operators & | ! = < > in, parentheses, and regex /pattern/)")
 	}
 
 	return nil
@@ -458,3 +452,13 @@
 
 	return sanitized
 }
+
+// contains checks if a string slice contains a specific value
+func contains(slice []string, item string) bool {
+	for _, s := range slice {
+		if s == item {
+			return true
+		}
+	}
+	return false
+}
diff --git a/validation/validator_test.go b/validation/validator_test.go
index 43254a7..88d01a2 100644
--- a/validation/validator_test.go
+++ b/validation/validator_test.go
@@ -96,22 +96,78 @@
 			errorMsg:  "query is required and cannot be empty",
 		},
 		{
+			name: "valid_poliqarp_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "poliqarp",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_poliqarpplus_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "poliqarpplus",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_cosmas2_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "cosmas2",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_annis_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "annis",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_cql_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "cql",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_cqp_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "cqp",
+			},
+			expectErr: false,
+		},
+		{
+			name: "valid_fcsql_language",
+			request: SearchRequest{
+				Query:         "test query",
+				QueryLanguage: "fcsql",
+			},
+			expectErr: false,
+		},
+		{
 			name: "invalid_query_language",
 			request: SearchRequest{
 				Query:         "test query",
 				QueryLanguage: "invalid",
 			},
 			expectErr: true,
-			errorMsg:  "invalid query language",
+			errorMsg:  "invalid query language, must be one of: poliqarp, poliqarpplus, cosmas2, annis, cql, cqp, fcsql",
 		},
 		{
 			name: "invalid_corpus_id",
 			request: SearchRequest{
 				Query:  "test query",
-				Corpus: "invalid corpus!",
+				Corpus: "invalid@corpus#format",
 			},
 			expectErr: true,
-			errorMsg:  "corpus ID contains invalid characters",
+			errorMsg:  "collection query contains invalid characters",
 		},
 		{
 			name: "count_negative",
@@ -231,10 +287,10 @@
 			name: "invalid_corpus_id",
 			request: MetadataRequest{
 				Action: "statistics",
-				Corpus: "invalid corpus!",
+				Corpus: "invalid@corpus#format",
 			},
 			expectErr: true,
-			errorMsg:  "corpus ID contains invalid characters",
+			errorMsg:  "collection query contains invalid characters",
 		},
 	}
 
@@ -465,7 +521,7 @@
 			response: &service.CorpusListResponse{
 				Corpora: []service.CorpusInfo{
 					{
-						ID:        "invalid id!",
+						ID:        "invalid@corpus#format",
 						Name:      "Test Corpus",
 						Documents: 100,
 						Tokens:    50000,
@@ -473,7 +529,7 @@
 				},
 			},
 			expectErr: true,
-			errorMsg:  "corpus ID contains invalid characters",
+			errorMsg:  "collection query contains invalid characters",
 		},
 		{
 			name: "corpus_missing_name",
@@ -708,15 +764,34 @@
 		},
 		{
 			name:      "corpus_id_invalid_chars",
-			corpusID:  "invalid corpus!",
+			corpusID:  "invalid@corpus#format",
 			expectErr: true,
-			errorMsg:  "corpus ID contains invalid characters",
+			errorMsg:  "collection query contains invalid characters",
 		},
 		{
 			name:      "corpus_id_with_space",
 			corpusID:  "corpus with space",
-			expectErr: true,
-			errorMsg:  "corpus ID contains invalid characters",
+			expectErr: false, // Now allowed with updated regex
+		},
+		{
+			name:      "corpus_id_with_boolean_operators",
+			corpusID:  "corpus1 & corpus2",
+			expectErr: false, // Now allowed with updated regex
+		},
+		{
+			name:      "collection_query_with_metadata",
+			corpusID:  "textClass = \"politics\" & pubDate in 2020",
+			expectErr: false, // Collection query syntax
+		},
+		{
+			name:      "collection_query_with_regex",
+			corpusID:  "corpusSigle = \"DeReKo/WPD*\" & availability = /CC.*/",
+			expectErr: false, // Collection query with regex
+		},
+		{
+			name:      "collection_query_complex",
+			corpusID:  "(textType = \"news\" | textType = \"blog\") & textClass != \"fiction\"",
+			expectErr: false, // Complex collection query
 		},
 	}
 
