Package com.hp.hpl.jena.sparql.expr

Examples of com.hp.hpl.jena.sparql.expr.ExprList


     * different scope, which is a different variable with the same name in the
     * orginal query).
     */

    private Placement placeSequence(ExprList exprsIn, OpSequence opSequence) {
        ExprList exprs = ExprList.copy(exprsIn) ;
        Set<Var> varScope = DS.set() ;
        List<Op> ops = opSequence.getElements() ;

        Op op = null ;
        for (int i = 0 ; i < ops.size() ; i++ ) {
View Full Code Here


    private Placement placeJoin(ExprList exprs, OpJoin opJoin) {
        Op left = opJoin.getLeft() ;
        Op right = opJoin.getRight() ;
        Collection<Var> leftVars = fixedVars(left) ;
        Collection<Var> rightVars = fixedVars(right) ;
        ExprList unpushed = new ExprList() ;
        ExprList pushLeft = new ExprList() ;
        ExprList pushRight = new ExprList() ;

        for (Expr expr : exprs) {
            Set<Var> vars = expr.getVarsMentioned() ;
            boolean pushed = false ;

            if ( leftVars.containsAll(vars) ) {
                pushLeft.add(expr) ;
                pushed = true ;
            }
           
            if ( pushed && ! pushRightAsWellAsLeft )
                continue ;
            // If left only, make this "else if" of left test, remove "continue"
            if ( rightVars.containsAll(vars) ) {
                // Push right
                pushRight.add(expr) ;
                pushed = true ;
            }

            if ( !pushed )
                unpushed.add(expr) ;
        }

        if ( pushLeft.isEmpty() && pushRight.isEmpty() )
            return null ;

        Op opLeftNew = left ;
        if ( !pushLeft.isEmpty() )
            opLeftNew = transformOpAlways(pushLeft, opLeftNew) ;

        Op opRightNew = right ;
        if ( !pushRight.isEmpty() )
            opRightNew = transformOpAlways(pushRight, opRightNew) ;

        Op op = OpJoin.create(opLeftNew, opRightNew) ;
        return result(op, unpushed) ;
    }
View Full Code Here

        // in but needs to be redone for the other arm as if it were no placed at all.
       
        // A filter applied twice is safe.
        // Placement = null => nothing done => unplaced.
       
        ExprList exprs2 = null ;
       
        for ( Expr expr : exprs ) {
            boolean unplacedLeft =  ( pLeft == null  || pLeft.unplaced.getList().contains(expr) ) ;
            boolean unplacedRight = ( pRight == null || pRight.unplaced.getList().contains(expr) ) ;
           
//            if ( unplacedLeft && unplacedRight ) {
//                System.out.println("Unplaced:     "+expr) ;
//            } else if ( unplacedLeft ) {
//                System.out.println("Unplaced(L):  "+expr) ;
//            } else if ( unplacedRight ) {
//                System.out.println("Unplaced(R):  "+expr) ;
//            } else
//                System.out.println("Placed(L+R):  "+expr) ;
           
            boolean placed = !unplacedLeft && !unplacedRight ;
            if ( placed )
                // Went into both arms - expression has been handled completely.
                continue ;
           
            if ( exprs2 == null )
                exprs2 = new ExprList() ;
            exprs2.add(expr) ;
        }
       
       
        Op newLeft = (pLeft == null ) ? left : pLeft.op ;
        Op newRight = (pRight == null ) ? right : pRight.op ;
View Full Code Here

    }

    private Placement processExtendAssign(ExprList exprs, OpExtendAssign input) {
        // Could break up the VarExprList
        Collection<Var> vars1 = input.getVarExprList().getVars() ;
        ExprList pushed = new ExprList() ;
        ExprList unpushed = new ExprList() ;
       
        for ( Expr expr : exprs ) {
            Set<Var> exprVars = expr.getVarsMentioned() ;
            if ( disjoint(vars1, exprVars) )
                pushed.add(expr);
            else
                unpushed.add(expr) ;
        }
               
        if ( pushed.isEmpty() )
            return resultNoChange(input) ;
       
        // (filter ... (extend ... ))
        //   ===>
        // (extend ... (filter ... ))
        Op opSub = input.getSubOp() ;
       
        // And try down the expressions
        Placement p = transform(pushed, opSub) ;

        if ( p == null ) {
            // Couldn't place an filter expressions.  Do nothing.
            return null ;
        }
       
        if ( ! p.unplaced.isEmpty() )
            // Some placed, not all.
            // Pass back out all untouched expressions.
            unpushed.addAll(p.unplaced) ;
        Op op1 = input.copy(p.op) ;
       
        return result(op1, unpushed) ;
    }
View Full Code Here

        return result(op1, unpushed) ;
    }

    private Placement placeProject(ExprList exprs, OpProject input) {
        Collection<Var> varsProject = input.getVars() ;
        ExprList pushed = new ExprList() ;
        ExprList unpushed = new ExprList() ;
       
        for ( Expr expr : exprs ) {
            Set<Var> exprVars = expr.getVarsMentioned() ;
            if ( varsProject.containsAll(exprVars) )
                pushed.add(expr);
            else
                unpushed.add(expr) ;
        }
        if ( pushed.isEmpty() )
            return resultNoChange(input) ;
        // (filter (project ...)) ===> (project (filter ...))
        Op opSub = input.getSubOp() ;
View Full Code Here

   
    private OpFilter(Op sub)
    {
        super(sub) ;
        expressions = new ExprList() ;
    }
View Full Code Here

    }
   
    /** Compress multiple filters:  (filter (filter (filter op)))) into one (filter op) */
    public static OpFilter tidy(OpFilter base)
    {
        ExprList exprs = new ExprList() ;
       
        Op op = base ;
        while ( op instanceof OpFilter )
        {
            OpFilter f = (OpFilter)op ;
            exprs.addAll(f.getExprs()) ;
            op = f.getSubOp() ;
        }
        return new OpFilter(exprs, op) ;
    }
View Full Code Here

    public TransformFilterPlacementConservative( ) {}

    @Override
    public Op transform(OpFilter opFilter, Op x) {
        // Destructive use of exprs - copy it.
        ExprList exprs = ExprList.copy(opFilter.getExprs());
        Set<Var> varsScope = new HashSet<Var>();

        Op op = transform(exprs, varsScope, x);
        if (op == x)
            // Didn't do anything.
View Full Code Here

        else
            acc.add(opUnion.getRight()) ;
    }

    protected QueryIterator execute(OpFilter opFilter, QueryIterator input) {
        ExprList exprs = opFilter.getExprs() ;

        Op base = opFilter.getSubOp() ;
        QueryIterator qIter = exec(base, input) ;

        for (Expr expr : exprs)
View Full Code Here

        return new OpTriple(t2) ;
    }
   
    @Override public Op transform(OpFilter opFilter, Op subOp)
    {
        ExprList exprList = opFilter.getExprs() ;
        ExprList exprList2 = NodeTransformLib.transform(transform, exprList) ;
        if ( exprList2 == exprList )
            return super.transform(opFilter, subOp) ;
        return OpFilter.filter(exprList2, subOp) ;
    }       
View Full Code Here

TOP

Related Classes of com.hp.hpl.jena.sparql.expr.ExprList

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.