private static GraphTraversal<?, ?> transform(final E_LessThan expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lt(value)); }
private static GraphTraversal<?, ?> transform(final E_GreaterThan expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.gt(value)); }
private static GraphTraversal<?, ?> transform(final E_Equals expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.eq(value)); }
private static GraphTraversal<?, ?> transform(final E_GreaterThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.gte(value)); }
private static GraphTraversal<?, ?> transform(final E_LessThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lte(value)); }
private static GraphTraversal<?, ?> transform(final E_NotEquals expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.neq(value)); }
public E_StrReplace(Expr expr1, Expr expr2, Expr expr3, Expr expr4) { super(symbol, expr1, expr2, expr3, expr4) ; if ( isString(expr2) && (expr4 == null || isString(expr4)) ) { String flags = null; if ( expr4 != null && expr4.isConstant() && expr4.getConstant().isString() ) flags = expr4.getConstant().getString(); String patternStr = expr2.getConstant().getString(); pattern = RegexJava.makePattern("REPLACE", patternStr, flags); } }
final List<ExprAggregator> exprAgg = query.getAggregators(); for (ExprAggregator expr : exprAgg) { if (expr.getAggregator().getName().contains("COUNT")) { if (!query.toString().contains("GROUP")) { if (expr.getAggregator().toString().contains("DISTINCT")) traversal = traversal.dedup(expr.getAggregator().getExprList().get(0).toString().substring(1)); else traversal = traversal.select(expr.getAggregator().getExprList().get(0).toString().substring(1)); if (expr.getAggregator().getName().contains("MAX")) { traversal = traversal.max();
public static RegexEngine makeRegexEngine(NodeValue vPattern, NodeValue vFlags) { if ( ! vPattern.isString() ) throw new ExprException("REGEX: Pattern is not a string: "+vPattern) ; if ( vFlags != null && ! vFlags.isString() ) throw new ExprException("REGEX: Pattern flags are not a string: "+vFlags) ; String s = (vFlags==null)?null:vFlags.getString() ; checkFlags(s); return makeRegexEngine(vPattern.getString(), s) ; }
@Override public NodeValue evalSpecial(Binding binding, FunctionEnv env) { for ( Expr expr : super.getArgs() ) { try { NodeValue nv = expr.eval(binding, env) ; return nv ; } catch (ExprEvalException ex) {} } throw new ExprEvalException("COALESCE: no value") ; }
private Expr xform(ExprFunctionOp funcOp, ExprList args, Op opArg) { if ( !alwaysCopy && equals1(funcOp.getArgs(), args.getList()) && funcOp.getGraphPattern() == opArg ) return funcOp ; return funcOp.copy(args, opArg) ; }
/** * Visiting filters in SPARQL algebra. */ @Override public void visit(final OpFilter opFilter) { Traversal traversal; for (Expr expr : opFilter.getExprs().getList()) { if (expr != null) { traversal = __.where(WhereTraversalBuilder.transform(expr)); traversalList.add(traversal); } } }
/** * Extracts any {@code SortCondition} instances from the SPARQL query and holds them in an index of their keys * where the value is that keys sorting direction. */ private static Map<String, Order> createOrderIndexFromQuery(final Query query) { final Map<String, Order> orderingIndex = new HashMap<>(); if (query.hasOrderBy()) { final List<SortCondition> sortingConditions = query.getOrderBy(); for (SortCondition sortCondition : sortingConditions) { final Expr expr = sortCondition.getExpression(); // by default, the sort will be ascending. getDirection() returns -2 if the DESC/ASC isn't // supplied - weird orderingIndex.put(expr.getVarName(), sortCondition.getDirection() == -1 ? Order.decr : Order.incr); } } return orderingIndex; }
private static GraphTraversal<?, ?> transform(final E_Exists expression) { final OpBGP opBGP = (OpBGP) expression.getGraphPattern(); final List<Triple> triples = opBGP.getPattern().getList(); if (triples.size() != 1) throw new IllegalStateException("Unhandled EXISTS pattern"); final GraphTraversal<?, ?> traversal = TraversalBuilder.transform(triples.get(0)); final Step endStep = traversal.asAdmin().getEndStep(); final String label = (String) endStep.getLabels().iterator().next(); endStep.removeLabel(label); return traversal; }
private static GraphTraversal<?, ?> transform(final E_NotExists expression) { final OpBGP opBGP = (OpBGP) expression.getGraphPattern(); final List<Triple> triples = opBGP.getPattern().getList(); if (triples.size() != 1) throw new IllegalStateException("Unhandled NOT EXISTS pattern"); final GraphTraversal<?, ?> traversal = TraversalBuilder.transform(triples.get(0)); final Step endStep = traversal.asAdmin().getEndStep(); final String label = (String) endStep.getLabels().iterator().next(); endStep.removeLabel(label); return __.not(traversal); } }
/** * Visiting LeftJoin(Optional) in SPARQL algebra. */ @Override public void visit(final OpLeftJoin opLeftJoin) { optionalFlag = true; optionalVisit(opLeftJoin.getRight()); if (opLeftJoin.getExprs() != null) { for (Expr expr : opLeftJoin.getExprs().getList()) { if (expr != null) { if (optionalFlag) optionalTraversals.add(__.where(WhereTraversalBuilder.transform(expr))); } } } }