From: <mrp...@us...> - 2012-04-03 16:38:49
|
Revision: 6253 http://bigdata.svn.sourceforge.net/bigdata/?rev=6253&view=rev Author: mrpersonick Date: 2012-04-03 16:38:42 +0000 (Tue, 03 Apr 2012) Log Message: ----------- fixed ticket 539 NotMaterializedException for REGEX on Vocab item Modified Paths: -------------- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/bop/rdf/join/ChunkedMaterializationOp.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/IVValueExpression.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/RegexBOp.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/test/com/bigdata/rdf/internal/constraints/TestRegexBOp.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailTupleQuery.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailEmbeddedFederationWithQuads.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuads.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithSids.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithoutSids.java Added Paths: ----------- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestRegex.java Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/bop/rdf/join/ChunkedMaterializationOp.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/bop/rdf/join/ChunkedMaterializationOp.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/bop/rdf/join/ChunkedMaterializationOp.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -304,7 +304,7 @@ } - if (!iv.isInline() || iv.isExtension() || materializeAll) { + if (iv.needsMaterialization() || materializeAll) { ids.add(iv); @@ -331,7 +331,7 @@ } - if (!iv.isInline() || iv.isExtension() || materializeAll) { + if (iv.needsMaterialization() || materializeAll) { ids.add(iv); @@ -414,7 +414,7 @@ final BigdataValue value = terms.get(iv); - if (value == null && (iv.isExtension() || !iv.isInline())) { + if (value == null && iv.needsMaterialization()) { throw new RuntimeException("Could not resolve: iv=" + iv); @@ -457,7 +457,7 @@ final BigdataValue value = terms.get(iv); - if (value == null && (iv.isExtension() || !iv.isInline())) { + if (value == null && iv.needsMaterialization()) { throw new RuntimeException("Could not resolve: iv=" + iv); Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/IVValueExpression.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/IVValueExpression.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/IVValueExpression.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -372,7 +372,7 @@ // final BigdataValueFactory vf = getValueFactory(); - if (iv.isInline() && !iv.isExtension()) { + if (iv.isInline() && !iv.needsMaterialization()) { // if (iv instanceof Literal) { @@ -405,7 +405,7 @@ * @param iv * The {@link IV}. * - * @return The {@link Literal}. + * @return The {@link Value}. * * @throws SparqlTypeErrorException * if the argument is <code>null</code>. @@ -419,7 +419,7 @@ if (iv == null) throw new SparqlTypeErrorException(); - if (iv.isInline() && !iv.isExtension()) { + if (iv.isInline() && !iv.needsMaterialization()) { return (Value) iv; Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/RegexBOp.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/RegexBOp.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/internal/constraints/RegexBOp.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -143,10 +143,10 @@ public boolean accept(final IBindingSet bs) { @SuppressWarnings("rawtypes") - final IV var = get(0).get(bs); + final Value var = asValue(getAndCheckBound(0, bs)); @SuppressWarnings("rawtypes") - final IV pattern = get(1).get(bs); + final IV pattern = getAndCheckBound(1, bs); @SuppressWarnings("rawtypes") final IV flags = arity() > 2 ? get(2).get(bs) : null; @@ -157,11 +157,7 @@ log.debug("regex flags: " + flags); } - // not yet bound - if (var == null || pattern == null) - throw new SparqlTypeErrorException(); - - return accept(var.getValue(), pattern.getValue(), + return accept(var, pattern.getValue(), flags != null ? flags.getValue() : null); } Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/test/com/bigdata/rdf/internal/constraints/TestRegexBOp.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/test/com/bigdata/rdf/internal/constraints/TestRegexBOp.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/test/com/bigdata/rdf/internal/constraints/TestRegexBOp.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -128,4 +128,5 @@ } } + } Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailTupleQuery.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailTupleQuery.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSailTupleQuery.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -77,20 +77,8 @@ @Override public TupleQueryResult evaluate() throws QueryEvaluationException { - final QueryRoot originalQuery = astContainer.getOriginalAST(); + return evaluate((BindingsClause) null); - if (getMaxQueryTime() > 0) - originalQuery.setTimeout(TimeUnit.SECONDS - .toMillis(getMaxQueryTime())); - - originalQuery.setIncludeInferred(getIncludeInferred()); - - final TupleQueryResult queryResult = ASTEvalHelper.evaluateTupleQuery( - getTripleStore(), astContainer, new QueryBindingSet( - getBindings())); - - return queryResult; - } public TupleQueryResult evaluate(final BindingsClause bc) @@ -98,7 +86,8 @@ final QueryRoot originalQuery = astContainer.getOriginalAST(); - originalQuery.setBindingsClause(bc); + if (bc != null) + originalQuery.setBindingsClause(bc); if (getMaxQueryTime() > 0) originalQuery.setTimeout(TimeUnit.SECONDS Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailEmbeddedFederationWithQuads.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailEmbeddedFederationWithQuads.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailEmbeddedFederationWithQuads.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -113,7 +113,8 @@ suite.addTestSuite(com.bigdata.rdf.sail.DavidsTestBOps.class); suite.addTestSuite(com.bigdata.rdf.sail.TestLexJoinOps.class); - + suite.addTestSuite(com.bigdata.rdf.sail.TestRegex.class); + // The Sesame TCK, including the SPARQL test suite. { Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuads.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuads.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithQuads.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -124,6 +124,7 @@ suite.addTestSuite(com.bigdata.rdf.sail.DavidsTestBOps.class); suite.addTestSuite(com.bigdata.rdf.sail.TestLexJoinOps.class); + suite.addTestSuite(com.bigdata.rdf.sail.TestRegex.class); // The Sesame TCK, including the SPARQL test suite. { Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithSids.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithSids.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithSids.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -100,6 +100,7 @@ suite.addTestSuite(com.bigdata.rdf.sail.TestTicket422.class); suite.addTestSuite(com.bigdata.rdf.sail.TestLexJoinOps.class); + suite.addTestSuite(com.bigdata.rdf.sail.TestRegex.class); return suite; Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithoutSids.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithoutSids.java 2012-04-03 16:33:46 UTC (rev 6252) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestBigdataSailWithoutSids.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -95,6 +95,7 @@ suite.addTestSuite(com.bigdata.rdf.sail.TestTicket473.class); suite.addTestSuite(com.bigdata.rdf.sail.TestLexJoinOps.class); + suite.addTestSuite(com.bigdata.rdf.sail.TestRegex.class); return suite; Added: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestRegex.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestRegex.java (rev 0) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/test/com/bigdata/rdf/sail/TestRegex.java 2012-04-03 16:38:42 UTC (rev 6253) @@ -0,0 +1,169 @@ +/** +Copyright (C) SYSTAP, LLC 2006-2007. All rights reserved. + +Contact: + SYSTAP, LLC + 4501 Tower Road + Greensboro, NC 27410 + lic...@bi... + +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 +*/ + +package com.bigdata.rdf.sail; + +import java.util.Properties; + +import org.apache.log4j.Logger; +import org.openrdf.model.Literal; +import org.openrdf.model.URI; +import org.openrdf.model.ValueFactory; +import org.openrdf.model.vocabulary.RDF; +import org.openrdf.model.vocabulary.RDFS; +import org.openrdf.query.QueryLanguage; +import org.openrdf.query.TupleQueryResult; +import org.openrdf.repository.RepositoryConnection; +import org.openrdf.repository.sail.SailTupleQuery; + +import com.bigdata.rdf.axioms.NoAxioms; +import com.bigdata.rdf.internal.XSD; +import com.bigdata.rdf.sparql.ast.QueryHints; +import com.bigdata.rdf.sparql.ast.QueryOptimizerEnum; +import com.bigdata.rdf.store.BD; +import com.bigdata.rdf.vocab.NoVocabulary; + +public class TestRegex extends ProxyBigdataSailTestCase { + + protected static final Logger log = Logger.getLogger(TestRegex.class); + + protected static final boolean INFO = log.isInfoEnabled(); + + /** + * + */ + public TestRegex() { + } + + /** + * @param arg0 + */ + public TestRegex(String arg0) { + super(arg0); + } + + @Override + public Properties getProperties() { + + Properties props = super.getProperties(); + + props.setProperty(BigdataSail.Options.TEXT_INDEX, "true"); + + return props; + + } + + public void testRegex() throws Exception { + + final BigdataSail sail = getSail(); + try { + sail.initialize(); + final BigdataSailRepository repo = new BigdataSailRepository(sail); + + final RepositoryConnection cxn = repo.getConnection(); + + try { + cxn.setAutoCommit(false); + + final ValueFactory vf = sail.getValueFactory(); + + /* + * Create some terms. + */ + final URI X = vf.createURI(BD.NAMESPACE + "X"); + final Literal label = vf.createLiteral("John"); + + /* + * Create some statements. + */ + cxn.add(X, RDF.TYPE, RDFS.RESOURCE); + cxn.add(X, RDFS.LABEL, label); + + /* + * Note: The either flush() or commit() is required to flush the + * statement buffers to the database before executing any operations + * that go around the sail. + */ + cxn.commit(); + + if (log.isInfoEnabled()) { + log.info(sail.getDatabase().dumpStore()); + } + + { + + String query = + "select * where { ?s ?p ?o . FILTER (regex(?o,\"John\",\"i\")) }"; + + final SailTupleQuery tupleQuery = (SailTupleQuery) + cxn.prepareTupleQuery(QueryLanguage.SPARQL, query); + tupleQuery.setIncludeInferred(true /* includeInferred */); + + if (log.isInfoEnabled()) { + + log.info(query); + +// final BigdataSailTupleQuery bdTupleQuery = +// (BigdataSailTupleQuery) tupleQuery; +// final QueryRoot root = (QueryRoot) bdTupleQuery.getTupleExpr(); +// final Projection p = (Projection) root.getArg(); +// final TupleExpr tupleExpr = p.getArg(); +// final SOpTreeBuilder stb = new SOpTreeBuilder(); +// final SOpTree tree = stb.collectSOps(tupleExpr); + +// log.info(tree); +// log.info(query); + + final TupleQueryResult result = tupleQuery.evaluate(); + while (result.hasNext()) { + log.info(result.next()); + } + + } + +// final Collection<BindingSet> answer = new LinkedList<BindingSet>(); +// answer.add(createBindingSet( +// new BindingImpl("a", paul), +// new BindingImpl("b", mary) +// )); +// answer.add(createBindingSet( +// new BindingImpl("a", brad), +// new BindingImpl("b", john) +// )); +// +// final TupleQueryResult result = tupleQuery.evaluate(); +// compare(result, answer); + + } + + } finally { + cxn.close(); + } + } finally { + if (sail instanceof BigdataSail) + ((BigdataSail)sail).__tearDownUnitTest();//shutDown(); + } + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |