package eu.play_project.play_platformservices_querydispatcher.bdpl.visitor.realtime; import java.util.HashSet; import java.util.Set; import com.hp.hpl.jena.graph.Node_Variable; import com.hp.hpl.jena.sparql.core.TriplePath; import com.hp.hpl.jena.sparql.syntax.Element; import com.hp.hpl.jena.sparql.syntax.ElementEventGraph; import com.hp.hpl.jena.sparql.syntax.ElementGroup; import com.hp.hpl.jena.sparql.syntax.ElementPathBlock; public class CollectVariablesInTriplesVisitor extends GenericVisitor{ private Set<String> vars; @Override public void visit(ElementEventGraph el) { vars = new HashSet<String>(); // Visit triples el.getElement().visit(this); } @Override public void visit(ElementGroup elg) { // Visit all group elements for (Element el : elg.getElements()) { el.visit(this); } } @Override public Object visitVariable(Node_Variable it, String name) { if(!name.startsWith("?")){ //Ignore blank nodes vars.add("V" + name); } return it; } @Override public void visit(ElementPathBlock el) { for (TriplePath tp : el.getPattern().getList()) { tp.getSubject().visitWith(this); tp.getPredicate().visitWith(this); tp.getObject().visitWith(this); } } /** * Return all variables used in this query. */ public Set<String> getVariables(){ return vars; } }