All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.sparql.ast.eval.TestAST Maven / Gradle / Ivy

There is a newer version: 2.1.4
Show newest version
/**

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
/*
 * Created on Sep 7, 2011
 */

package com.bigdata.rdf.sparql.ast.eval;

import com.bigdata.rdf.internal.constraints.INeedsMaterialization;

/**
 * Port of unit tests originally written at the AST layer.
 *
 * @author Bryan Thompson
 * @version $Id$
 */
public class TestAST extends AbstractDataDrivenSPARQLTestCase {

    /**
     *
     */
    public TestAST() {
    }

    /**
     * @param name
     */
    public TestAST(String name) {
        super(name);
    }

    /**
     * 
     * select ?s where { ?s ?p ?o }
     * 
* * Note: This is a port of TestASTTriplesModeEvaluation#testAST() (as are * all of the ast_01x methods). */ public void test_ast_01() throws Exception { new TestHelper("ast_01").runTest(); } /** *
     * select ?s where { ?s ?p ?o } order by ?s limit 1
     * 
* * Note: I had to add an ORDER BY into this method in order to make the * results stable. The original unit test only checked the #of results but * not their data. */ public void test_ast_01b() throws Exception { new TestHelper("ast_01b").runTest(); } /** *
     * select DISTINCT ?s where { ?s ?p ?o }
     * 
*/ public void test_ast_01c() throws Exception { new TestHelper("ast_01c").runTest(); } /** *
     * select (count(*) as ?count) where { ?s ?p ?o } limit 1
     * 
*/ public void test_ast_01d() throws Exception { new TestHelper("ast_01d").runTest(); } /** *
     * select ?s ?o
     * where {
     *    ?s rdf:type :C .
     *    OPTIONAL {
     *       ?s :B ?o
     *    }
     * }
     * 
* * Note: This is a port of * TestASTTriplesModeEvaluation#testOptionalDistinct() (as are all of the * ast_02x methods). */ public void test_ast_02() throws Exception { new TestHelper("ast_02").runTest(); } /** *
     * select DISTINCT ?s ?o
     * where {
     *    ?s rdf:type :C .
     *    OPTIONAL {
     *       ?s :B ?o
     *    }
     * }
     * 
*/ public void test_ast_02b() throws Exception { new TestHelper("ast_02b").runTest(); } /** *
     * select ?index
     * where {
     *   ?s rdf:type :C .
     *   ?s :predicate1 ?o .
     * }
     * GROUP BY (?o+1 as ?index)
     * 
* * Note: This is a port of * TestASTTriplesModeEvaluation#testProjectedGroupWithConstant(). */ public void test_ast_03() throws Exception { new TestHelper("ast_03").runTest(); } /** * Unit test developed to demonstrate a problem where the incorrect * materialization requirements are computed. *

* I just happened to run into an issue dealing with materialization. Say I * have a constraint that needs materialization, Str(...) If * that constraint has as its arg another constraint: * Coalesce (?x,?y) [this returns the first none null value in * the list of ?x,?y] *

* Its seems that the logic that determines the extra materialization steps * doesn't handle the fact that Coalesce (?x,?y) doesn't need any * materialization, so never sets the {@link INeedsMaterialization} * interface, so the result of that valueExpression is going to be either ?x * or ?y, and Str does need those variables materialized, but the * materialization steps would never have seem that lists of terms(?x,?y) as * something that needs materialization. Does the fact that a * ValueExpression returns a non computed IV value, ie returns one of its * arguments, have to be captured in order to somehow handle this? * *

     *
     * QueryType: SELECT
     * SELECT VarNode(index)
     *   JoinGroupNode {
     *     StatementPatternNode(VarNode(s), ConstantNode(TermId(4U)), ConstantNode(TermId(2U)), DEFAULT_CONTEXTS)
     *     StatementPatternNode(VarNode(s), ConstantNode(TermId(5U)), VarNode(o), DEFAULT_CONTEXTS)
     *     ( com.bigdata.rdf.sparql.ast.ValueExpressionNode()[ valueExpr=com.bigdata.rdf.internal.constraints.StrBOp(com.bigdata.rdf.internal.constraints.CoalesceBOp(s,o))[ com.bigdata.rdf.internal.constraints.StrBOp.namespace=kb]] AS VarNode(index) )
     *   }
     * 
* * Note: This is a port of * TestASTTriplesModeEvaluation#testProjectedGroupByWithNestedVars() */ public void test_ast_04() throws Exception { new TestHelper("ast_04").runTest(); } public void test_materialization_extensions() throws Exception { new TestHelper("materialization-extensions").runTest(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy