package org.aksw.jena_sparql_api.concept_cache.domain; import java.util.Set; import org.aksw.commons.collections.multimaps.IBiSetMultimap; import org.apache.jena.sparql.core.Quad; import org.apache.jena.sparql.core.Var; import org.apache.jena.sparql.expr.Expr; public class PatternSummary { private QuadFilterPattern originalPattern; private QuadFilterPatternCanonical canonicalPattern; // The pattern's filters in cnf //private Set<Set<Expr>> filterCnf; // The constraints on the quad pattern derived from the original pattern //private Set<Set<Set<Expr>>> quadCnfs; private IBiSetMultimap<Quad, Set<Set<Expr>>> quadToCnf; // Variable distributions among the quads private IBiSetMultimap<Var, VarOccurrence> varOccurrences; public PatternSummary(QuadFilterPattern originalPattern, QuadFilterPatternCanonical canonicalPattern, //Set<Set<Set<Expr>>> quadCnfs, IBiSetMultimap<Quad, Set<Set<Expr>>> quadToCnf, IBiSetMultimap<Var, VarOccurrence> varOccurrences) { super(); this.originalPattern = originalPattern; this.canonicalPattern = canonicalPattern; //this.quadCnfs = quadCnfs; this.quadToCnf = quadToCnf; this.varOccurrences = varOccurrences; } public QuadFilterPattern getOriginalPattern() { return originalPattern; } public QuadFilterPatternCanonical getCanonicalPattern() { return canonicalPattern; } // public Set<Set<Expr>> getFilterCnf() { // return filterCnf; // } public IBiSetMultimap<Quad, Set<Set<Expr>>> getQuadToCnf() { return quadToCnf; } // public Set<Set<Set<Expr>>> getQuadCnfs() { // return quadCnfs; // } public IBiSetMultimap<Var, VarOccurrence> getVarOccurrences() { return varOccurrences; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((canonicalPattern == null) ? 0 : canonicalPattern.hashCode()); result = prime * result + ((originalPattern == null) ? 0 : originalPattern.hashCode()); result = prime * result + ((quadToCnf == null) ? 0 : quadToCnf.hashCode()); result = prime * result + ((varOccurrences == null) ? 0 : varOccurrences.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; PatternSummary other = (PatternSummary) obj; if (canonicalPattern == null) { if (other.canonicalPattern != null) return false; } else if (!canonicalPattern.equals(other.canonicalPattern)) return false; if (originalPattern == null) { if (other.originalPattern != null) return false; } else if (!originalPattern.equals(other.originalPattern)) return false; if (quadToCnf == null) { if (other.quadToCnf != null) return false; } else if (!quadToCnf.equals(other.quadToCnf)) return false; if (varOccurrences == null) { if (other.varOccurrences != null) return false; } else if (!varOccurrences.equals(other.varOccurrences)) return false; return true; } @Override public String toString() { return "PatternSummary [originalPattern=" + originalPattern + ", canonicalPattern=" + canonicalPattern + ", quadToCnf=" + quadToCnf + ", varOccurrences=" + varOccurrences + "]"; } }