/** * 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))); } } } }
/** * Visiting triple patterns in SPARQL algebra. */ @Override public void visit(final OpBGP opBGP) { if(optionalFlag) { opBGP.getPattern().getList().forEach(triple -> optionalTraversals.add(TraversalBuilder.transform(triple))); opBGP.getPattern().getList().forEach(triple -> optionalVariable.add(triple.getObject().toString())); } else opBGP.getPattern().getList().forEach(triple -> traversalList.add(TraversalBuilder.transform(triple))); }
/** * 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); } } }
@Override public Op transform(OpQuadPattern opQuadPattern) { BasicPattern bp = opQuadPattern.getBasicPattern(); Node graphNode = opQuadPattern.getGraphNode(); OpQuadBlock result = OpQuadBlock.create(graphNode, bp); return result; } }
protected static Op join(Op current, Op newOp) { if ( simplifyTooEarlyInAlgebraGeneration && applySimplification ) return OpJoin.createReduce(current, newOp) ; return OpJoin.create(current, newOp) ; }
private static boolean isUnitTable(Op op) { if (op instanceof OpTable) { if (((OpTable) op).isJoinIdentity()) return true; } return false; }
@Override public boolean equalTo(Op op2, NodeIsomorphismMap labelMap) { if ( ! ( op2 instanceof OpJoin) ) return false ; return super.sameArgumentsAs((Op2)op2, labelMap) ; }
@Override public Op1 copy(Op subOp) { return new OpLabel(object, subOp) ; } }
@Override public OpExtendAssign copy(Op subOp, VarExprList varExprList) { return new OpExtend(subOp, varExprList) ; } }
@Override public boolean equalTo(Op op, NodeIsomorphismMap labelMap) { if ( ! ( op instanceof OpDisjunction) ) return false ; OpDisjunction other = (OpDisjunction) op ; return super.equalsSubOps(other, labelMap) ; }
@Override public OpExtendAssign copy(Op subOp, VarExprList varExprList) { return new OpAssign(subOp, varExprList) ; } }
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; }
@Override public boolean equalTo(Op op2, NodeIsomorphismMap labelMap) { if ( ! ( op2 instanceof OpLeftJoin) ) return false ; return super.sameArgumentsAs((Op2)op2, labelMap) ; } }
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); } }
@Override public boolean equalTo(Op op2, NodeIsomorphismMap labelMap) { if ( ! ( op2 instanceof OpDiff) ) return false ; return super.sameArgumentsAs((Op2)op2, labelMap) ; } }