@Override public boolean equals(Object other) { if (other instanceof ProjectionElemList) { ProjectionElemList o = (ProjectionElemList)other; return elements.equals(o.getElements()); } return false; }
@Override public void meet(final ProjectionElemList node) { emit(node.getElements(), " "); }
@Override public void meet(final ProjectionElemList node) { emit(node.getElements(), " "); }
/** * Return whether or not this projection looks like an spo binding for a * construct query * * @param theList * the projection element list to inspect * @return true if it has the format of a spo construct projection element, * false otherwise */ public static boolean isSPOElemList(ProjectionElemList theList) { return theList.getElements().size() == 3 && theList.getElements().get(0).getTargetName().equalsIgnoreCase("subject") && theList.getElements().get(1).getTargetName().equalsIgnoreCase("predicate") && theList.getElements().get(2).getTargetName().equalsIgnoreCase("object"); }
@Override public String getSignature() { return "(External Projection) " + Joiner.on(", ").join(tupleExpr.getProjectionElemList().getElements()).replaceAll("\\s+", " "); }
@Override public ProjectionElemList clone() { ProjectionElemList clone = (ProjectionElemList)super.clone(); clone.elements = new ArrayList<ProjectionElem>(getElements().size()); for (ProjectionElem pe : getElements()) { clone.addElement(pe.clone()); } return clone; } }
private void validateProjectionElemList(final ProjectionElemList list) { final List<ProjectionElem> elements = list.getElements(); checkArgument(elements.size() == 3); checkArgument(elements.get(0).getTargetName().equals("subject")); checkArgument(elements.get(1).getTargetName().equals("predicate")); checkArgument(elements.get(2).getTargetName().equals("object")); }
@Override public String getSignature() { return "(Mongo PcjQueryNode) " + Joiner.on(", ").join(super.getTupleExpr().getProjectionElemList().getElements()).replaceAll("\\s+", " "); } }
private static VariableOrder getConstructGraphVarOrder(final List<ProjectionElemList> projections) { final Set<String> varOrders = new HashSet<>(); for(final ProjectionElemList elems: projections) { for(final ProjectionElem elem: elems.getElements()) { final String name = elem.getSourceName(); if(!name.startsWith("-const-") && !name.startsWith("-anon-")) { varOrders.add(name); } } } return new VariableOrder(varOrders); }
@Override public String getSignature() { return "(SimpleExternalTupleSet) " + Joiner.on(", ") .join(this.getTupleExpr().getProjectionElemList() .getElements()).replaceAll("\\s+", " "); } }
private static TupleExpr extractConstructExpression( final Map<String, ExtensionElem> extensions, final Iterable<? extends ProjectionElemList> multiProjections) { TupleExpr expression = null; for (final ProjectionElemList projections : multiProjections) { final Var subj = extractConstructVar(extensions, projections.getElements().get(0)); final Var pred = extractConstructVar(extensions, projections.getElements().get(1)); final Var obj = extractConstructVar(extensions, projections.getElements().get(2)); final Var ctx = projections.getElements().size() < 4 ? null : extractConstructVar( extensions, projections.getElements().get(3)); final StatementPattern pattern = new StatementPattern( ctx == null ? Scope.DEFAULT_CONTEXTS : Scope.NAMED_CONTEXTS, subj, pred, obj, ctx); expression = expression == null ? pattern : new Join(expression, pattern); } return expression; }
/** * @inheritDoc */ @Override public void meet(final ProjectionElemList theProjectionElemList) throws Exception { if (!theProjectionElemList.getElements().isEmpty()) { mProjection.add(theProjectionElemList.clone()); } theProjectionElemList.visitChildren(this); }
private Set<String> getProjectedVariables(TupleExpr expr) { if(expr instanceof Projection) { Projection projection = (Projection)expr; Set<String> projectedVars = new HashSet<>(); for (ProjectionElem elem : projection.getProjectionElemList().getElements()) { projectedVars.add(elem.getSourceName()); } return projectedVars; } else { return Collections.EMPTY_SET; } } }
@Override public void meet(Projection node) throws RuntimeException { for(ProjectionElem elem : node.getProjectionElemList().getElements()) { if(elem.getSourceName().equals(needle)) { found = true; } } // stop at projection, subquery }
@Override public void meet(ProjectionElemList node) { List<ProjectionElem> proj = node.getElements(); for (ProjectionElem s : proj) { if (varChanges.containsKey(s.getSourceName())) { String name = s.getSourceName(); s.setSourceName(varChanges.get(name)); s.setTargetName(varChanges.get(name)); } } }
public SQLSubQuery(String alias, Projection query, BindingSet bindings, Dataset dataset, ValueConverter converter, KiWiDialect dialect, Set<String> parentProjectedVars) throws UnsatisfiableQueryException { super(alias); Set<String> projectedVars = new HashSet<>(parentProjectedVars); // count projected variables for(ProjectionElem elem : query.getProjectionElemList().getElements()) { projectedVars.add(elem.getSourceName()); } // we build a full subquery for each of the UNION's arguments builder = new SQLBuilder(query.getArg(), bindings, dataset, converter, dialect, projectedVars); for(SQLVariable svl : builder.getVariables().values()) { if(projectedVars.contains(svl.getSparqlName())) { variables.add(svl); } } }
@Override public void meet(ProjectionElemList node) { handleType(SeRQO.PROJECTIONELEMLIST); handleChildList(SeRQO.ELEMENTS, node.getElements()); super.meet(node); }
@Override public void meet(Var node) { if (projection != null) { boolean projected = false; for (ProjectionElem e : projection.getProjectionElemList().getElements()) { String source = e.getSourceName(); String target = e.getTargetName(); if (node.getName().equals(source) && node.getName().equals(target)) { projected = true; break; } } if (!projected) { variablesProjected = false; } } }
@Override public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Projection projection, BindingSet bindings) throws QueryEvaluationException { // count projected variables if(isSupported(projection.getArg())) { for (ProjectionElem elem : projection.getProjectionElemList().getElements()) { projectedVars.add(elem.getSourceName()); } } return super.evaluate(projection, bindings); }
private TupleExpr getTupleExpr(ParsedQuery query) { TupleExpr tupleExpr = query.getTupleExpr(); if (tupleExpr instanceof Projection) { Projection proj = (Projection) tupleExpr; for (ProjectionElem e : proj.getProjectionElemList().getElements()) { if (!e.getSourceName().equals(e.getTargetName())) return proj; } return proj.getArg(); } return tupleExpr; }