@Override public void meet(ProjectionElem projElem) throws RuntimeException { if (projElem.getSourceName().equals(oldName)) { projElem.setSourceName(newName); } } }
public Set<String> getTargetNamesFor(Collection<String> sourceNames) { Set<String> targetNames = new LinkedHashSet<String>(elements.size()); for (ProjectionElem pe : elements) { if (sourceNames.contains(pe.getSourceName())) { targetNames.add(pe.getTargetName()); } } return targetNames; }
@Override public boolean equals(Object other) { if (other instanceof ProjectionElem) { ProjectionElem o = (ProjectionElem)other; return sourceName.equals(o.getSourceName()) && targetName.equals(o.getTargetName()); } return false; }
@Override public void meet(ProjectionElem projElem) throws RuntimeException { if (projElem.getSourceName().equals(oldName)) { projElem.setSourceName(newName); } } }
@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)); } } }
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); }
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(ProjectionElem projElem) throws RuntimeException { if (projElem.getSourceName().equals(oldVar.getName())) { projElem.setSourceName(newVar.getName()); } } }
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); } } }
private static Var extractConstructVar(final Map<String, ExtensionElem> extensions, final ProjectionElem projection) { final ExtensionElem extension = extensions.get(projection.getSourceName()); String name = projection.getSourceName(); if (name.startsWith("-anon-")) { name += "-construct"; } if (extension == null || extension.getExpr() instanceof BNodeGenerator) { final Var var = new Var(name); var.setAnonymous(name.startsWith("-anon-")); return var; } else if (extension.getExpr() instanceof ValueConstant) { final ValueConstant constant = (ValueConstant) extension.getExpr(); return new Var(name, constant.getValue()); } else { throw new UnsupportedOperationException( "Unsupported extension in construct query: " + extension); } }
private static Var extractConstructVar(final Map<String, ExtensionElem> extensions, final ProjectionElem projection) { final ExtensionElem extension = extensions.get(projection.getSourceName()); String name = projection.getSourceName(); if (name.startsWith("-anon-")) { name += "-construct"; } if (extension == null || extension.getExpr() instanceof BNodeGenerator) { final Var var = new Var(name); var.setAnonymous(name.startsWith("-anon-")); return var; } else if (extension.getExpr() instanceof ValueConstant) { final ValueConstant constant = (ValueConstant) extension.getExpr(); return new Var(name, constant.getValue()); } else { throw new UnsupportedOperationException( "Unsupported extension in construct query: " + extension); } }
@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; } } }
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; }
@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); }
public static BindingSet project(ProjectionElemList projElemList, BindingSet sourceBindings, BindingSet parentBindings, boolean includeAllParentBindings) { final QueryBindingSet resultBindings = new QueryBindingSet(); if (includeAllParentBindings) { resultBindings.addAll(parentBindings); } for (ProjectionElem pe : projElemList.getElements()) { Value targetValue = sourceBindings.getValue(pe.getSourceName()); if (!includeAllParentBindings && targetValue == null) { targetValue = parentBindings.getValue(pe.getSourceName()); } if (targetValue != null) { resultBindings.setBinding(pe.getTargetName(), targetValue); } } return resultBindings; } }
@Override public void meet(ProjectionElem node) { handleType(SeRQO.PROJECTIONELEM); handleLiteral(SeRQO.SOURCENAME, node.getSourceName()); handleLiteral(SeRQO.TARGETNAME, node.getTargetName()); super.meet(node); }
@Override public void meet(ProjectionElem node) throws RDFHandlerException { ValueExpr valueExpr = null; if (inlineBindings != null) { String varName = node.getSourceName(); valueExpr = inlineBindings.getValueExpr(varName); } Resource targetVar = getVar(node.getTargetName()); listEntry(targetVar); if (valueExpr != null && !(valueExpr instanceof Var)) { Resource currentSubj = subject; subject = valueFactory.createBNode(); handler.handleStatement( valueFactory.createStatement(targetVar, SP.EXPRESSION_PROPERTY, subject)); valueExpr.visit(new ExtensionVisitor()); subject = currentSubj; } }
@Override public void meet(final ProjectionElem n) { final String source = n.getSourceName(); final String target = n.getTargetName(); final ValueExpr expr = n.getSourceExpression() == null ? null : n .getSourceExpression().getExpr(); if (target.startsWith("-")) { if (expr != null) { emit("(").emit(expr).emit(" AS ?").emit(sanitize(target)).emit(")"); } } else if (expr != null) { emit("(").emit(expr).emit(" AS ?").emit(target).emit(")"); } else if (!equalOrNull(source, target)) { emit("(?").emit(source).emit(" AS ?").emit(target).emit(")"); } else { emit("?").emit(target); } }
@Override public void meet(final ProjectionElem n) { final String source = n.getSourceName(); final String target = n.getTargetName(); final ValueExpr expr = n.getSourceExpression() == null ? null : n .getSourceExpression().getExpr(); if (target.startsWith("-")) { if (expr != null) { emit("(").emit(expr).emit(" AS ?").emit(sanitize(target)).emit(")"); } } else if (expr != null) { emit("(").emit(expr).emit(" AS ?").emit(target).emit(")"); } else if (!equalOrNull(source, target)) { emit("(?").emit(source).emit(" AS ?").emit(target).emit(")"); } else { emit("?").emit(target); } }