public Set<String> getTargetNames() { Set<String> targetNames = new LinkedHashSet<String>(elements.size()); for (ProjectionElem pe : elements) { targetNames.add(pe.getTargetName()); } return targetNames; }
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")); }
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; }
/** * 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 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; }
result.addBinding(elem.getTargetName(), value);
@Override public void meet(ProjectionElem node) throws RDFHandlerException { if (isSubQuery) { super.meet(node); } else { String varName = node.getSourceName(); ValueExpr valueExpr = inlineBindings.getValueExpr(varName); Value value = (valueExpr instanceof ValueConstant) ? ((ValueConstant)valueExpr).getValue() : getVar(varName); String targetName = node.getTargetName(); IRI pred; if ("subject".equals(targetName)) { pred = SP.SUBJECT_PROPERTY; } else if ("predicate".equals(targetName)) { pred = SP.PREDICATE_PROPERTY; } else if ("object".equals(targetName)) { pred = SP.OBJECT_PROPERTY; } else { throw new AssertionError("Unexpected ProjectionElem: " + node); } handler.handleStatement(valueFactory.createStatement(subject, pred, value)); } } }
@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(Projection node) throws RepositoryException { TupleExpr arg = node.getArg(); if (arg instanceof StatementPattern && arg.getBindingNames().equals(node.getBindingNames())) { meetNode(node); } else { arg.visit(this); if (patternNode == null) return; Map<String, String> map = new HashMap<String, String>(); for (ProjectionElem e : node.getProjectionElemList().getElements()) { String source = variables.get(e.getSourceName()); if (source == null) { source = safe(e.getSourceName()); } map.put(e.getTargetName(), source); } this.variables = map; this.patternNode = node; } }
@Override public void meet(Projection node) throws RuntimeException { super.meet(node); if (node.getArg() instanceof SelectQuery) { SelectQuery query = (SelectQuery)node.getArg(); Map<String, String> bindingVars = new HashMap<String, String>(); List<SelectProjection> selection = new ArrayList<SelectProjection>(); ProjectionElemList list = node.getProjectionElemList(); for (ProjectionElem e : list.getElements()) { String source = e.getSourceName(); String target = e.getTargetName(); bindingVars.put(target, source); SelectProjection s = query.getSelectProjection(source); if (s != null) { selection.add(s); } } query.setBindingVars(bindingVars); query.setSqlSelectVar(selection); node.replaceWith(query); } }
@Override public void meet(Projection node) throws RepositoryException { TupleExpr arg = node.getArg(); if (arg instanceof StatementPattern && arg.getBindingNames().equals(node.getBindingNames())) { meetNode(node); } else { arg.visit(this); if (patternNode == null) { return; } Map<String, String> map = new HashMap<String, String>(); for (ProjectionElem e : node.getProjectionElemList().getElements()) { String source = variables.get(e.getSourceName()); if (source == null) { source = safe(e.getSourceName()); } map.put(e.getTargetName(), source); } this.variables = map; this.patternNode = node; } }
if (elem.getTargetName().equals("subject")) { currentComponent = sub; } else if (elem.getTargetName().equals("predicate")) { currentComponent = pred; } else if (elem.getTargetName().equals("object")) { currentComponent = obj; } else {
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; } }
for (ProjectionElem pe : pl.getElements()) { bindingNames.add(pe.getSourceName()); addExtendedBindingName(pe.getSourceName(), pe.getTargetName());
@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); } }
newline().emit("GROUP BY"); for (final ProjectionElem n : query.groupBy) { emit(" ?").emit(n.getTargetName());