
it.unibz.inf.ontop.constraints.ImmutableCQ Maven / Gradle / Ivy
package it.unibz.inf.ontop.constraints;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import it.unibz.inf.ontop.model.atom.AtomPredicate;
import it.unibz.inf.ontop.model.atom.DataAtom;
import it.unibz.inf.ontop.model.term.Variable;
import it.unibz.inf.ontop.model.term.VariableOrGroundTerm;
import it.unibz.inf.ontop.substitution.Substitution;
import java.util.Objects;
import java.util.Optional;
public class ImmutableCQ {
private final ImmutableSet answerVariables;
private final Substitution substitution;
private final ImmutableList> atoms;
public ImmutableCQ(ImmutableSet answerVariables, Substitution substitution, ImmutableList> atoms) {
this.answerVariables = answerVariables;
this.substitution = substitution;
this.atoms = atoms;
}
public VariableOrGroundTerm getAnswerTerm(Variable variable) {
return Optional.ofNullable(substitution.get(variable)).orElse(variable);
}
public ImmutableSet getAnswerVariables() {
return answerVariables;
}
public Substitution getSubstitution() {
return substitution;
}
public ImmutableList> getAtoms() {
return atoms;
}
@Override
public int hashCode() {
return Objects.hash(atoms, answerVariables, substitution);
}
@Override
public boolean equals(Object other) {
if (other instanceof ImmutableCQ) {
ImmutableCQ> otherCQ = (ImmutableCQ>) other;
return atoms.equals(otherCQ.atoms)
&& answerVariables.equals(otherCQ.answerVariables)
&& substitution.equals(otherCQ.substitution);
}
return false;
}
@Override
public String toString() {
return "q" + answerVariables + "/" + substitution + " :- " + atoms;
}
}