// Path: src/main/java/de/danielbasedow/prospecter/core/MatchCondition.java
// public enum MatchCondition {
//     EQUALS,
//     LESS_THAN,
//     GREATER_THAN,
//     LESS_THAN_EQUALS,
//     GREATER_THAN_EQUALS,
//     NONE,
//     IN,
//     RADIUS
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/Token.java
// public class Token<T> {
//     private final T token;
//     private final MatchCondition condition;
// 
//     public Token(T token) {
//         this(token, MatchCondition.NONE);
//     }
// 
//     public Token(T token, MatchCondition condition) {
//         this.token = token;
//         this.condition = condition;
//     }
// 
//     public T getToken() {
//         return token;
//     }
// 
//     public int hashCode() {
//         return token.hashCode();
//     }
// 
//     public boolean equals(Object compare) {
//         if (compare instanceof Token) {
//             return token.equals(((Token) compare).getToken());
//         }
//         return false;
//     }
// 
//     public MatchCondition getCondition() {
//         return condition;
//     }
// }


import aima.core.logic.propositional.parsing.ast.Connective;
import aima.core.logic.propositional.parsing.ast.Sentence;
import aima.core.logic.propositional.visitors.ConvertToCNF;
import de.danielbasedow.prospecter.core.MatchCondition;
import de.danielbasedow.prospecter.core.Token;
import de.danielbasedow.prospecter.core.query.build.*;
import java.util.*;
package de.danielbasedow.prospecter.core.query;



/**
 * represents a Query (a tuple of queryId, bitmask and a list of conditions)
 */
public class Query {
    protected final int queryId;
    protected final int bits;
    protected final QueryNegativeCounter negativeMask = new QueryNegativeCounter();

    protected final ClauseNode clauseNode;
// Path: src/main/java/de/danielbasedow/prospecter/core/MatchCondition.java
// public enum MatchCondition {
//     EQUALS,
//     LESS_THAN,
//     GREATER_THAN,
//     LESS_THAN_EQUALS,
//     GREATER_THAN_EQUALS,
//     NONE,
//     IN,
//     RADIUS
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/Token.java
// public class Token<T> {
//     private final T token;
//     private final MatchCondition condition;
// 
//     public Token(T token) {
//         this(token, MatchCondition.NONE);
//     }
// 
//     public Token(T token, MatchCondition condition) {
//         this.token = token;
//         this.condition = condition;
//     }
// 
//     public T getToken() {
//         return token;
//     }
// 
//     public int hashCode() {
//         return token.hashCode();
//     }
// 
//     public boolean equals(Object compare) {
//         if (compare instanceof Token) {
//             return token.equals(((Token) compare).getToken());
//         }
//         return false;
//     }
// 
//     public MatchCondition getCondition() {
//         return condition;
//     }
// }


// Path: src/main/java/de/danielbasedow/prospecter/core/query/Query.java
import aima.core.logic.propositional.parsing.ast.Connective;
import aima.core.logic.propositional.parsing.ast.Sentence;
import aima.core.logic.propositional.visitors.ConvertToCNF;
import de.danielbasedow.prospecter.core.MatchCondition;
import de.danielbasedow.prospecter.core.Token;
import de.danielbasedow.prospecter.core.query.build.*;
import java.util.*;

package de.danielbasedow.prospecter.core.query;



/**
 * represents a Query (a tuple of queryId, bitmask and a list of conditions)
 */
public class Query {
    protected final int queryId;
    protected final int bits;
    protected final QueryNegativeCounter negativeMask = new QueryNegativeCounter();

    protected final ClauseNode clauseNode;
    protected final Map<Condition, Long> postings = new HashMap<Condition, Long>();