@Override public void meet(Extension node) throws RDFHandlerException { node.getArg().visit(this); }
@Override public void meet(Projection node) throws QueryEvaluationException { TupleExpr arg = node.getArg(); if (arg instanceof Extension) { Extension extension = (Extension) arg; TupleExpr arg2 = extension.getArg(); if (arg2 instanceof SingletonSet) { evaluate(node); } } }
@Override public void meet(MultiProjection node) throws QueryEvaluationException { TupleExpr arg = node.getArg(); if (arg instanceof Extension) { Extension extension = (Extension) arg; TupleExpr arg2 = extension.getArg(); if (arg2 instanceof SingletonSet) { evaluate(node); } } }
@Override public void meet(Extension extensionNode) throws Exception { extensionNode.visitChildren(this); if (extensionNode.getArg() instanceof AggregationPipelineQueryNode && extensionNode.getParentNode() != null) { AggregationPipelineQueryNode pipelineNode = (AggregationPipelineQueryNode) extensionNode.getArg(); if (pipelineNode.extend(extensionNode.getElements())) { extensionNode.replaceWith(pipelineNode); } } }
@Override public void meet(Extension node) throws RDFHandlerException { if (inlineBindings != null && inlineBindings.extension == node) { // this is the first Extension node and has already been handled // by meetExtension() // to produce inline bindings in SELECT so we can skip it here node.getArg().visit(this); } else { // any further Extension nodes produce BIND() clauses node.getArg().visit(this); for (ExtensionElem elem : node.getElements()) { elem.visit(this); } } }
public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Extension extension, BindingSet bindings) throws QueryEvaluationException { CloseableIteration<BindingSet, QueryEvaluationException> result; try { result = this.evaluate(extension.getArg(), bindings); } catch (ValueExprEvaluationException e) { // a type error in an extension argument should be silently ignored // and // result in zero bindings. result = new EmptyIteration<BindingSet, QueryEvaluationException>(); } result = new ExtensionIterator(extension, result, this); return result; }
/** * */ public Rule(ParsedQuery constructQuery) { /* Getting elements of the construct part, they are always implemented * as a pair of projection and extension before the actual algebra of the query e.g., Projection ProjectionElemList ProjectionElem "x" AS "subject" ProjectionElem "_const-f5e5585a-uri" AS "predicate" ProjectionElem "_const-a31c101d-uri" AS "object" Extension ExtensionElem (_const-a31c101d-uri) ValueConstant (value=http://example.org/Company) ExtensionElem (_const-f5e5585a-uri) ValueConstant (value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type) Join... */ TupleExpr expr = constructQuery.getTupleExpr(); Projection projection = (Projection)((Reduced) expr).getArg(); Extension extension = (Extension) projection.getArg(); antecedent = extension.getArg(); extractConsequent(expr, projection, extension); }
@Override public void meet(final Extension n) { emit(n.getArg()); if (!(n.getArg() instanceof SingletonSet)) { newline(); } boolean first = true; for (final ExtensionElem e : n.getElements()) { final ValueExpr expr = e.getExpr(); if (!(expr instanceof Var) || !((Var) expr).getName().equals(e.getName())) { if (!first) { newline(); } emit("BIND (").emit(expr).emit(" AS ?").emit(e.getName()).emit(")"); first = false; } } }
@Override public void meet(final Extension n) { emit(n.getArg()); if (!(n.getArg() instanceof SingletonSet)) { newline(); } boolean first = true; for (final ExtensionElem e : n.getElements()) { final ValueExpr expr = e.getExpr(); if (!(expr instanceof Var) || !((Var) expr).getName().equals(e.getName())) { if (!first) { newline(); } emit("BIND (").emit(expr).emit(" AS ?").emit(e.getName()).emit(")"); first = false; } } }
@Override public void updateQueryModelNodes(boolean hasResult) { QueryModelNode replacementNode = hasResult ? new SingletonSet() : new EmptySet(); geoStatement.replaceWith(replacementNode); if(hasResult) { filter.replaceWith(filter.getArg()); } else { filter.replaceWith(new EmptySet()); } if(functionParent instanceof ExtensionElem) { Extension extension = (Extension) functionParent.getParentNode(); List<ExtensionElem> elements = extension.getElements(); if(elements.size() > 1) { elements.remove(functionParent); } else { extension.replaceWith(extension.getArg()); } } } }
@Override public void updateQueryModelNodes(boolean hasResult) { QueryModelNode replacementNode = hasResult ? new SingletonSet() : new EmptySet(); geoStatement.replaceWith(replacementNode); if(hasResult) { filter.replaceWith(filter.getArg()); } else { filter.replaceWith(new EmptySet()); } if(functionParent instanceof ExtensionElem) { Extension extension = (Extension) functionParent.getParentNode(); List<ExtensionElem> elements = extension.getElements(); if(elements.size() > 1) { elements.remove(functionParent); } else { extension.replaceWith(extension.getArg()); } } } }
translate(extension.getArg(), conditionExprs, extensionExprs, matchedVars); for (final ExtensionElem elem : extension.getElements()) { if (elem.getExpr() instanceof Var
final TupleExpr arg = node.getArg(); if(arg instanceof Group) { final Group group = (Group) arg;