private void visitBind(Resource r) throws RDF4JException { Value expr = TripleSources.singleValue(r, SP.EXPRESSION_PROPERTY, store); ValueExpr valueExpr = visitExpression(expr); Value varValue = TripleSources.singleValue(r, SP.VARIABLE_PROPERTY, store); if (!(varValue instanceof Resource)) { throw new MalformedSpinException( String.format("Value of %s is not a resource", SP.VARIABLE_PROPERTY)); } String varName = getVarName((Resource)varValue); tupleNode = new Extension(tupleNode, new ExtensionElem(valueExpr, varName)); }
@Override public <X extends Exception> void visitChildren(QueryModelVisitor<X> visitor) throws X { for (ExtensionElem elem : elements) { elem.visit(visitor); } super.visitChildren(visitor); }
Var anonVar = createAnonVar(); expr.replaceChildNode(operator, anonVar); anonymousExtension.addElement(new ExtensionElem(operator, anonVar.getName())); ExtensionElem extElem = new ExtensionElem(valueExpr, alias); extension.addElement(extElem); elem.setSourceExpression(extElem); ExtensionElem extElem = new ExtensionElem(projVar, projVar.getName()); extension.addElement(extElem); elem.setSourceExpression(extElem); ValueExpr expr = extElem.getExpr();
@Override public Set<String> getBindingNames() { Set<String> bindingNames = new LinkedHashSet<String>(arg.getBindingNames()); for (ExtensionElem pe : elements) { bindingNames.add(pe.getName()); } return bindingNames; }
private Var createVar(String varName) { if (projElems != null) { ProjectionElem projElem = projElems.get(varName); if (projElem != null) { ExtensionElem extElem = projElem.getSourceExpression(); if (extElem != null && extElem.getExpr() instanceof Var) { projElems.remove(varName); } } } return new Var(varName); } }
@Override public Extension clone() { Extension clone = (Extension)super.clone(); clone.elements = new ArrayList<>(getElements().size()); for (ExtensionElem elem : getElements()) { clone.addElement(elem.clone()); } return clone; } }
Var anonVar = createAnonVar(); expr.replaceChildNode(operator, anonVar); anonymousExtension.addElement(new ExtensionElem(operator, anonVar.getName())); ExtensionElem extElem = new ExtensionElem(valueExpr, alias); extension.addElement(extElem); elem.setSourceExpression(extElem); ExtensionElem extElem = new ExtensionElem(projVar, projVar.getName()); extension.addElement(extElem); elem.setSourceExpression(extElem); ValueExpr expr = extElem.getExpr();
@Override public Set<String> getBindingNames() { Set<String> bindingNames = new LinkedHashSet<>(arg.getBindingNames()); for (ExtensionElem pe : elements) { bindingNames.add(pe.getName()); } return bindingNames; }
@Override public Extension clone() { Extension clone = (Extension)super.clone(); clone.elements = new ArrayList<ExtensionElem>(getElements().size()); for (ExtensionElem elem : getElements()) { clone.addElement(elem.clone()); } return clone; } }
lostVar.setValue(value); ext.addElement(new ExtensionElem(lostVar, name));
Var anonVar = createAnonVar(); expr.replaceChildNode(operator, anonVar); anonymousExtension.addElement(new ExtensionElem(operator, anonVar.getName())); ExtensionElem extElem = new ExtensionElem(valueExpr, alias); extension.addElement(extElem); elem.setSourceExpression(extElem); ExtensionElem extElem = new ExtensionElem(projVar, projVar.getName()); extension.addElement(extElem); elem.setSourceExpression(extElem); ValueExpr expr = extElem.getExpr();
@Override public void meet(Extension e) { super.meet(e); for (ExtensionElem elem: e.getElements()) { res.add(elem.getName()); } } // TODO maybe stop tree traversal in nested SERVICE?
@Override public <X extends Exception> void visitChildren(QueryModelVisitor<X> visitor) throws X { for (ExtensionElem elem : elements) { elem.visit(visitor); } super.visitChildren(visitor); }
lostVar.setValue(value); ext.addElement(new ExtensionElem(lostVar, name));
@Override public void meet(Extension e) { super.meet(e); for (ExtensionElem elem: e.getElements()) { res.add(elem.getName()); } } // TODO maybe stop tree traversal in nested SERVICE?