/** * Return a PROJECTION node. * * @param assignmentNodes * The BIND()s that will appear in the projection. */ protected ProjectionNode projection(final AssignmentNode... assignmentNodes) { // Setup projection. final ProjectionNode projection = new ProjectionNode(); for (AssignmentNode varNode : assignmentNodes) projection.addProjectionExpression(varNode); return projection; }
/** * Return a PROJECTION node. * * @param assignmentNodes * The BIND()s that will appear in the projection. */ protected ProjectionNode projection(final AssignmentNode... assignmentNodes) { // Setup projection. final ProjectionNode projection = new ProjectionNode(); for (AssignmentNode varNode : assignmentNodes) projection.addProjectionExpression(varNode); return projection; }
/** * Return a PROJECTION node. * * @param assignmentNodes * The BIND()s that will appear in the projection. */ protected ProjectionNode projection(final AssignmentNode... assignmentNodes) { // Setup projection. final ProjectionNode projection = new ProjectionNode(); for (AssignmentNode varNode : assignmentNodes) projection.addProjectionExpression(varNode); return projection; }
/** * Unit test with simple aggregate function in SELECT clause and no GROUP BY * clause (the aggregation is taken across all solutions as if they were a * single group). * * <pre> * SELECT SUM(?lprice) AS ?totalPrice * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_simpleAggregate_noGroupBy() { final VarNode lprice = new VarNode("lprice"); final VarNode totalPrice = new VarNode("totalPrice"); final IValueExpressionNode totalPriceExprNode = new FunctionNode( FunctionRegistry.SUM, null, lprice); final ProjectionNode select = new ProjectionNode(); select.addProjectionExpression(new AssignmentNode(totalPrice, totalPriceExprNode)); final GroupByNode groupBy = null; final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Unit test with SELECT clause having one value expression, which is a * simple variable also appearing as the sole value expression in the * GROUP_BY clause. However, in this case we rename the variable when it is * projected out of the SELECT expression. * * <pre> * SELECT ?org as ?newVar * GROUP BY ?org * </pre> */ public void test_aggregateExpr_02() { final VarNode org = new VarNode("org"); final VarNode newVar = new VarNode("newVar"); @SuppressWarnings({ "unchecked", "rawtypes" }) final ProjectionNode select = new ProjectionNode(); select.addProjectionExpression(new AssignmentNode(newVar, org)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(org); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Return an ASK subquery. * * @param varNode * The "ASK" variable. See * {@link SubqueryRoot.Annotations#ASK_VAR}. * @param where * The WHERE clause. * * @return the ASK subquery. */ protected SubqueryRoot ask(final VarNode varNode, final JoinGroupNode where) { final SubqueryRoot rslt = new SubqueryRoot(QueryType.ASK); final ProjectionNode projection = new ProjectionNode(); varNode.setAnonymous(true); rslt.setProjection(projection); projection.addProjectionExpression(new AssignmentNode(varNode, varNode)); rslt.setWhereClause(where); rslt.setAskVar(toValueExpression(varNode)); return rslt; }
/** * Return a named subquery. * * @param name * The name associated with the named subquery result. * @param varNode * The projected variable. * @param where * The where clause. * * @return The named subquyery. */ protected NamedSubqueryRoot namedSubQuery(final String name, final VarNode varNode, final JoinGroupNode where, ApplyAnnotation ... annotations) { final NamedSubqueryRoot namedSubquery = new NamedSubqueryRoot( QueryType.SELECT, name); final ProjectionNode projection = new ProjectionNode(); namedSubquery.setProjection(projection); projection.addProjectionExpression(new AssignmentNode(varNode, new VarNode(varNode))); namedSubquery.setWhereClause(where); return applyAnnotations(namedSubquery, annotations); }
/** * Unit test with simple aggregate function in SELECT clause. * <pre> * SELECT ?org, SUM(?lprice) AS ?totalPrice * GROUP BY ?org * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_simpleAggregate() { final VarNode org = new VarNode("org"); final VarNode lprice = new VarNode("lprice"); final VarNode totalPrice = new VarNode("totalPrice"); final IValueExpressionNode totalPriceExprNode = new FunctionNode( FunctionRegistry.SUM, null, lprice); final ProjectionNode select = new ProjectionNode(); select.addProjectionVar(org); select.addProjectionExpression(new AssignmentNode(totalPrice, totalPriceExprNode)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(org); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Unit test with simple aggregate function in SELECT clause and no GROUP BY * clause (the aggregation is taken across all solutions as if they were a * single group). * * <pre> * SELECT SUM(?lprice) AS ?totalPrice * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_simpleAggregate_noGroupBy() { final VarNode lprice = new VarNode("lprice"); final VarNode totalPrice = new VarNode("totalPrice"); final IValueExpressionNode totalPriceExprNode = new FunctionNode( FunctionRegistry.SUM, null, lprice); final ProjectionNode select = new ProjectionNode(); select.addProjectionExpression(new AssignmentNode(totalPrice, totalPriceExprNode)); final GroupByNode groupBy = null; final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Simple unit test for a value expression which is a URI. */ public void test_select_uri() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select ( <http://xmlns.com/foaf/0.1/> as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createURI("http://xmlns.com/foaf/0.1/"))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Simple unit test for a value expression which is a <code>xsd:int</code>. */ public void test_select_xsd_int() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select (\"12\"^^<http://www.w3.org/2001/XMLSchema#int> as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createLiteral(12))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Simple unit test for a value expression which is a plain literal. */ public void test_select_literal() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select (\"abc\" as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createLiteral("abc"))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Unit test with SELECT clause having one value expression, which is a * simple variable also appearing as the sole value expression in the * GROUP_BY clause. However, in this case we rename the variable when it is * projected out of the SELECT expression. * * <pre> * SELECT ?org as ?newVar * GROUP BY ?org * </pre> */ public void test_aggregateExpr_02() { final VarNode org = new VarNode("org"); final VarNode newVar = new VarNode("newVar"); @SuppressWarnings({ "unchecked", "rawtypes" }) final ProjectionNode select = new ProjectionNode(); select.addProjectionExpression(new AssignmentNode(newVar, org)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(org); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Return an ASK subquery. * * @param varNode * The "ASK" variable. See * {@link SubqueryRoot.Annotations#ASK_VAR}. * @param where * The WHERE clause. * * @return the ASK subquery. */ protected SubqueryRoot ask(final VarNode varNode, final JoinGroupNode where) { final SubqueryRoot rslt = new SubqueryRoot(QueryType.ASK); final ProjectionNode projection = new ProjectionNode(); varNode.setAnonymous(true); rslt.setProjection(projection); projection.addProjectionExpression(new AssignmentNode(varNode, varNode)); rslt.setWhereClause(where); rslt.setAskVar(toValueExpression(varNode)); return rslt; }
/** * Return a named subquery. * * @param name * The name associated with the named subquery result. * @param varNode * The projected variable. * @param where * The where clause. * * @return The named subquyery. */ protected NamedSubqueryRoot namedSubQuery(final String name, final VarNode varNode, final JoinGroupNode where, ApplyAnnotation ... annotations) { final NamedSubqueryRoot namedSubquery = new NamedSubqueryRoot( QueryType.SELECT, name); final ProjectionNode projection = new ProjectionNode(); namedSubquery.setProjection(projection); projection.addProjectionExpression(new AssignmentNode(varNode, new VarNode(varNode))); namedSubquery.setWhereClause(where); return applyAnnotations(namedSubquery, annotations); }
/** * Unit test with simple aggregate function in SELECT clause. * <pre> * SELECT ?org, SUM(?lprice) AS ?totalPrice * GROUP BY ?org * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_simpleAggregate() { final VarNode org = new VarNode("org"); final VarNode lprice = new VarNode("lprice"); final VarNode totalPrice = new VarNode("totalPrice"); final IValueExpressionNode totalPriceExprNode = new FunctionNode( FunctionRegistry.SUM, null, lprice); final ProjectionNode select = new ProjectionNode(); select.addProjectionVar(org); select.addProjectionExpression(new AssignmentNode(totalPrice, totalPriceExprNode)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(org); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Simple variable rename in select expression. * * <pre> * SELECT (?s as ?x) where {?s ?p ?o} * </pre> */ public void test_select_bind() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select (?s as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"),// new VarNode("s")// )); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Simple unit test for a value expression which is a plain literal. */ public void test_select_literal() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select (\"abc\" as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createLiteral("abc"))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Simple unit test for a value expression which is a <code>xsd:int</code>. */ public void test_select_xsd_int() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select (\"12\"^^<http://www.w3.org/2001/XMLSchema#int> as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createLiteral(12))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }
/** * Simple unit test for a value expression which is a URI. */ public void test_select_uri() throws MalformedQueryException, TokenMgrError, ParseException { final String sparql = "select ( <http://xmlns.com/foaf/0.1/> as ?x) where {?s ?p ?o}"; final QueryRoot expected = new QueryRoot(QueryType.SELECT); { final ProjectionNode projection = new ProjectionNode(); projection.addProjectionExpression(// new AssignmentNode(// new VarNode("x"), // new ConstantNode(makeIV(valueFactory .createURI("http://xmlns.com/foaf/0.1/"))))); expected.setProjection(projection); } final QueryRoot actual = parse(sparql, baseURI); assertSameAST(sparql, expected.getProjection(), actual.getProjection()); }