/** * 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))); }
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); } }
private static BasicPattern asBGP(Op op) { if ( op instanceof OpBGP ) return ((OpBGP)op).getPattern() ; return null ; }
@Override public void visit(OpBGP opBGP) { BasicPattern p = opBGP.getPattern() ; visit(opBGP.getPattern()) ; }
public static Op buildPropertyFunctions(PropertyFunctionRegistry registry, OpBGP opBGP, Context context) { if ( opBGP.getPattern().isEmpty() ) return opBGP ; return compilePattern(registry, opBGP.getPattern(), context) ; }
@Override public Op transform(OpBGP opBGP) { BasicPattern bgp2 = NodeTransformLib.transform(transform, opBGP.getPattern()); if ( bgp2 == opBGP.getPattern() ) return super.transform(opBGP); return new OpBGP(bgp2); }
private static boolean oneLine(Op op) { if ( OpBGP.isBGP(op) ) { BasicPattern bgp = ((OpBGP)op).getPattern() ; if ( bgp.getList().size() <= 1 ) return true ; } return false ; }
@Override public void visit(OpBGP opBGP) { Table table = evaluator.basicPattern(opBGP.getPattern()) ; push(table) ; }
@Override public Op transform(OpBGP opBGP) { //System.out.print("transform(OpBGP) : "+getNode()+"\n"+opBGP) ; return OpQuadBlock.create(getNode(), opBGP.getPattern()) ; }
protected QueryIterator execute(OpBGP opBGP, QueryIterator input) { BasicPattern pattern = opBGP.getPattern() ; QueryIterator qIter = stageGenerator.execute(pattern, input, execCxt) ; if (hideBNodeVars) qIter = new QueryIterDistinguishedVars(qIter, execCxt) ; return qIter ; }
@Override public Op transform(OpBGP opBGP) { //System.out.print("transform(OpBGP) : "+getNode()+"\n"+opBGP) ; return new OpQuadPattern(getNode(), opBGP.getPattern()) ; }
@Override public Op transform(OpBGP opBGP) { BasicPattern bgp = opBGP.getPattern(); bgp = substitute(bgp, binding); return new OpBGP(bgp); }
@Override public void visit(OpBGP opBGP) { if ( opBGP.getPattern().size() == 1 ) { start(opBGP, NoNL) ; write(opBGP.getPattern(), true) ; finish(opBGP) ; return ; } start(opBGP, NL) ; write(opBGP.getPattern(), false) ; finish(opBGP) ; }
@Override public void visit(OpBGP opBGP) { Collection<Var> vars = new ArrayList<>(); for (Triple t : opBGP.getPattern().getList()) { Vars.addVarsFromTriple(vars, t); } action(vars); }
public boolean equivalent(OpBGP opBGP) { BasicPattern bgp = opBGP.getPattern() ; if ( bgp.size() != 1 ) return false ; Triple t = bgp.get(0) ; return triple.equals(t) ; }
@Override public Op transform(OpBGP op) { BasicPattern before = op.getPattern(); BasicPattern after = deduplicate(before); Op result = after.equals(before) ? op : new OpBGP(after); return result; }
@Override public void visit(OpBGP opBGP) { push(new OpBGP(rewrite(opBGP.getPattern()))); }
/** * Transforms BGPs with the reordering */ @Override public Op transform(OpBGP opBGP) { BasicPattern pattern = opBGP.getPattern(); if ( pattern.size() < 2 ) return opBGP ; BasicPattern pattern2 = reorder.reorder(pattern); return new OpBGP(pattern2); }
@Test public void bNodeSPARQL_Query_2() { String qs = "SELECT * { ?s ?p <_:BCD>}"; Query query = QueryFactory.create(qs); Op op = Algebra.compile(query); BasicPattern bp = ((OpBGP)op).getPattern(); Triple t = bp.get(0); assertEquals("BCD", t.getObject().getBlankNodeLabel()); }