     public enum Filter {
         /// Possible relations between items in a group
         public enum GroupRelation {
-            case and, or
+            /// All filters must be satisfied for the group to be satisfied.
+            case and
+            /// At least one of the filters must be satisfied for the group to be satisfied.
+            case or
         }
 
         /// A single `FilterItem` containing type and value.

        }
    }

    /// Describes the values a subset can have. The subset can be either an array of encodable
    /// values or another query whose purpose is to yield an array of values.
    public struct FilterValue {
        enum QueryFilterValueStorage {
            case field(Database.QueryField)

            }
        }

        /// Returns the values as an array of query data, if possible.
        public func data() -> [Database.QueryData]? {
            switch storage {
            case .data(let data): return [data]
