package org.aksw.sparqlify.validation;
import java.util.HashSet;
import java.util.Set;
import org.aksw.jena_sparql_api.utils.QuadPatternUtils;
import org.aksw.sparqlify.core.domain.input.ViewDefinition;
import org.apache.jena.graph.Node;
import org.apache.jena.sparql.core.Var;
import org.slf4j.Logger;
import com.google.common.collect.Sets;
public class Validation {
public static void validateView(ViewDefinition view, Logger logger) {
Set<Var> patternVars = QuadPatternUtils.getVarsMentioned(view.getTemplate());
Set<Var> bindingVars = new HashSet<Var>();
for(Node bindingVar : view.getMapping().getVarDefinition().getMap().keySet()) {
bindingVars.add((Var)bindingVar);
}
Set<Var> unboundPatternVars = Sets.difference(patternVars, bindingVars);
if(!unboundPatternVars.isEmpty()) {
//throw new RuntimeException("View " + view.getName() + ": Unbound pattern variables: " + unboundPatternVars);
logger.error("View " + view.getName() + ": Unbound pattern variables: " + unboundPatternVars);
}
Set<Var> unreferencedBindingVars = Sets.difference(bindingVars, patternVars);
if(!unreferencedBindingVars.isEmpty()) {
logger.warn("View " + view.getName() + ": Unreferenced binding variables: " + unreferencedBindingVars);
}
}
}