From: <tho...@us...> - 2012-09-22 15:13:17
|
Revision: 6589 http://bigdata.svn.sourceforge.net/bigdata/?rev=6589&view=rev Author: thompsonbry Date: 2012-09-22 15:13:06 +0000 (Sat, 22 Sep 2012) Log Message: ----------- Added optional query hints that permit the override of the maximum #of iterations and the maximum #of statements for iterative DESCRIBE queries. These hints have defaults that are declared in QueryHints, may be overridden within a query using the named query hint, and may be overridden when the KB is configured using BigdataSail.Options. The two query hints may be set to ZERO to effectively disable the corresponding limit. When both limits are specified, the limits must BOTH be met before the query will be cutoff. The current defaults are a maximum of 5 iterations AND a maximum of 5000 statements. This AND logic means that you may have more iterations as long as there are not that many statements and more statements as long as there are not that many iterations. I have not added unit tests for these new query hints. @see http://sourceforge.net/apps/trac/bigdata/ticket/578 (Concise Bounded Descaription (CBD)) Modified Paths: -------------- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/ProjectionNode.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/QueryHints.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/AST2BOpContext.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/CBD.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeModeHint.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/QueryHintRegistry.java branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSail.java Added Paths: ----------- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeIterationLimitHint.java branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeStatementLimitHint.java Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/ProjectionNode.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/ProjectionNode.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/ProjectionNode.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -74,9 +74,27 @@ * Optional annotation specifies the {@link DescribeModeEnum} that will * be used to evaluate a DESCRIBE query. The default is controlled by * {@value QueryHints#DEFAULT_DESCRIBE_MODE}. + * + * @see QueryHints#DESCRIBE_MODE */ String DESCRIBE_MODE = "describeMode"; - + + /** + * Optional annotation specifies the limit on the #of iterations for an + * iterative DESCRIBE algorithm. + * + * @see QueryHints#DESCRIBE_ITERATION_LIMIT + */ + String DESCRIBE_ITERATION_LIMIT = "describeIterationLimit"; + + /** + * Optional annotation specifies the limit on the #of statements for an + * iterative DESCRIBE algorithm. + * + * @see QueryHints#DESCRIBE_STATEMENT_LIMIT + */ + String DESCRIBE_STATEMENT_LIMIT = "describeStatementLimit"; + } public ProjectionNode() { @@ -160,6 +178,8 @@ * @param describeMode * The {@link DescribeModeEnum} or <code>null</code> to use the * default. + * + * @see Annotations#DESCRIBE_MODE */ public void setDescribeMode(final DescribeModeEnum describeMode) { @@ -168,6 +188,50 @@ } /** + * Return the optional limit on the #of iterations for a DESCRIBE query. + * + * @return The limit -or- <code>null</code>. + * + * @see Annotations#DESCRIBE_ITERATION_LIMIT + */ + public Integer getDescribeIterationLimit() { + + return (Integer) getProperty(Annotations.DESCRIBE_ITERATION_LIMIT); + + } + + /** + * Return the optional limit on the #of statements for a DESCRIBE query. + * + * @return The limit -or- <code>null</code>. + * + * @see Annotations#DESCRIBE_STATEMENT_LIMIT + */ + public Integer getDescribeStatementLimit() { + + return (Integer) getProperty(Annotations.DESCRIBE_STATEMENT_LIMIT); + + } + + /** + * Set the optional limit on the #of iterations for a DESCRIBE query. + */ + public void setDescribeIterationLimit(final int newValue) { + + setProperty(Annotations.DESCRIBE_ITERATION_LIMIT, newValue); + + } + + /** + * Set the optional limit on the #of statements for a DESCRIBE query. + */ + public void setDescribeStatementLimit(final int newValue) { + + setProperty(Annotations.DESCRIBE_STATEMENT_LIMIT, newValue); + + } + + /** * Adds a variable to be projected. The variable is modeled as an assignment * of itself to itself, so everything in the projection node winds up * looking like an assignment. @@ -314,12 +378,28 @@ final DescribeModeEnum describeMode = getDescribeMode(); + final Integer describeIterationLimit = getDescribeIterationLimit(); + + final Integer describeStatementLimit = getDescribeStatementLimit(); + if (describeMode != null) { sb.append("[describeMode=" + describeMode + "]"); - + } - + + if (describeIterationLimit != null) { + + sb.append("[describeIterationLimit=" + describeIterationLimit + "]"); + + } + + if (describeStatementLimit != null) { + + sb.append("[describeStatement=" + describeStatementLimit + "]"); + + } + if (isWildcard()) { sb.append("* "); Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/QueryHints.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/QueryHints.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/QueryHints.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -437,6 +437,34 @@ DescribeModeEnum DEFAULT_DESCRIBE_MODE = DescribeModeEnum.SymmetricOneStep; /** + * For iterative {@link DescribeModeEnum}s, this property places a limit on + * the number of iterative expansions that will be performed before the + * DESCRIBE query is cut off, providing that the limit on the maximum #of + * statements in the description is also satisfied (the cut off requires + * that both limits are reached). May be ZERO (0) for NO limit. + * + * @see #DESCRIBE_MODE + * @see #DESCRIBE_STATEMENT_LIMIT + */ + String DESCRIBE_ITERATION_LIMIT = "describeIterationLimit"; + + int DEFAULT_DESCRIBE_ITERATION_LIMIT = 5; + + /** + * For iterative {@link DescribeModeEnum}s, this property places a limit on + * the number of statements that will be accumulated before the DESCRIBE + * query is cut off, providing that the limit on the maximum #of iterations + * in the description is also satisfied (the cut off requires that both + * limits are reached). May be ZERO (0) for NO limit. + * + * @see #DESCRIBE_MODE + * @see #DESCRIBE_ITERATION_LIMIT + */ + String DESCRIBE_STATEMENT_LIMIT = "describeStatementLimit"; + + int DEFAULT_DESCRIBE_STATEMENT_LIMIT = 5000; + + /** * Option controls whether or not the proposed SPARQL extension for * reification done right is enabled. * Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/AST2BOpContext.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/AST2BOpContext.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/AST2BOpContext.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -540,6 +540,16 @@ } + /** + * Return the effective {@link DescribeModeEnum}. + * + * @param projection + * The query projection. + * + * @return The effective {@link DescribeModeEnum} + * + * @see QueryHints#DESCRIBE_MODE + */ public DescribeModeEnum getDescribeMode(final ProjectionNode projection) { // The effective DescribeMode. @@ -575,6 +585,96 @@ } + /** + * Return the effective iteration limit for a DESCRIBE query. + * + * @param projection + * The query projection. + * + * @return The effective iteration limit. + * + * @see QueryHints#DESCRIBE_ITERATION_LIMIT + */ + public int getDescribeIterationLimit(final ProjectionNode projection) { + + // The effective limit. + Integer limit = projection.getDescribeIterationLimit(); + + if (limit != null) { + /* + * Explicitly specified on the project. E.g., set by a query hint or + * through code. + */ + return limit; + } + + /* + * Consult the KB for a configured default behavior. + */ + final String limitStr = db.getProperties().getProperty( + BigdataSail.Options.DESCRIBE_ITERATION_LIMIT); + + if (limitStr != null) { + + // The KB has specified a default DESCRIBE algorithm. + limit = Integer.valueOf(limitStr); + + } else { + + // Use the default specified on QueryHints. + limit = QueryHints.DEFAULT_DESCRIBE_ITERATION_LIMIT; + + } + + return limit; + + } + + /** + * Return the effective statement limit for a DESCRIBE query. + * + * @param projection + * The query projection. + * + * @return The effective statement limit. + * + * @see QueryHints#DESCRIBE_STATEMENT_LIMIT + */ + public int getDescribeStatementLimit(final ProjectionNode projection) { + + // The effective limit. + Integer limit = projection.getDescribeStatementLimit(); + + if (limit != null) { + /* + * Explicitly specified on the project. E.g., set by a query hint or + * through code. + */ + return limit; + } + + /* + * Consult the KB for a configured default behavior. + */ + final String limitStr = db.getProperties().getProperty( + BigdataSail.Options.DESCRIBE_STATEMENT_LIMIT); + + if (limitStr != null) { + + // The KB has specified a default DESCRIBE algorithm. + limit = Integer.valueOf(limitStr); + + } else { + + // Use the default specified on QueryHints. + limit = QueryHints.DEFAULT_DESCRIBE_STATEMENT_LIMIT; + + } + + return limit; + + } + @Override public ISolutionSetStats getSolutionSetStats(final String localName) { Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -478,6 +478,12 @@ final DescribeModeEnum describeMode = context .getDescribeMode(optimizedQuery.getProjection()); + final int describeIterationLimit = context + .getDescribeIterationLimit(optimizedQuery.getProjection()); + + final int describeStatementlimit = context + .getDescribeStatementLimit(optimizedQuery.getProjection()); + final CloseableIteration<BindingSet, QueryEvaluationException> solutions2; final ConcurrentHashSet<BigdataValue> describedResources; if (describeCache != null) { @@ -553,7 +559,8 @@ * client, so there is no opportunity to cancel a running CBD * DESCRIBE. */ - src2 = new CBD(store, describeMode, bnodes).computeClosure(src); + src2 = new CBD(store, describeMode, describeIterationLimit, + describeStatementlimit, bnodes).computeClosure(src); break; } default: Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/CBD.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/CBD.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/CBD.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -64,22 +64,13 @@ * @see ASTConstructIterator * * @author <a href="mailto:tho...@us...">Bryan Thompson</a> + * + * FIXME Watch a timeout on the top-level query (if present) */ public class CBD { private static final Logger log = Logger.getLogger(CBD.class); - - /** - * Maximum #of expansions for recursive {@link DescribeModeEnum}s. - * - * TODO Configure. - * - * TODO Limit #of resources that are being described. - * - * FIXME Watch a timeout on the top-level query (if present) - */ - private static final int MAX_ROUNDS = 5; - + /** The {@link AbstractTripleStore}. */ private final AbstractTripleStore store; @@ -88,8 +79,20 @@ * DESCRIBE query. */ private final DescribeModeEnum describeMode; + + /** + * The limit on the #of iterations (iff the statement limit is also + * reached) -or- ZERO (0) for no limit. + */ + private final int describeIterationLimit; /** + * The limit on the #of statements (iff the iteration limit is also + * reached) -or- ZERO (0) for no limit. + */ + private final int describeStatementLimit; + + /** * The {@link DescribeModeEnum} specifying how to evaluate each expansion * round of the DESCRIBE query. */ @@ -108,6 +111,12 @@ * @param describeMode * The {@link DescribeModeEnum} specifying how to evaluate the * DESCRIBE query. + * @param describeIterationLimit + * The limit on the #of iterations (iff the statement limit is + * also reached) -or- ZERO (0) for no limit. + * @param describeStatementLimit + * The limit on the #of statements (iff the iteration limit is + * also reached) -or- ZERO (0) for no limit.. * @param bnodes * A mapping that is used to preserve a consistent assignment * from blank node IDs to {@link BigdataBNode}s scoped to the @@ -115,6 +124,8 @@ */ public CBD(final AbstractTripleStore store, final DescribeModeEnum describeMode, + final int describeIterationLimit, + final int describeStatementLimit, final Map<String, BigdataBNode> bnodes) { if (store == null) @@ -123,6 +134,12 @@ if (describeMode == null) throw new IllegalArgumentException(); + if (describeIterationLimit < 0) + throw new IllegalArgumentException(); + + if (describeStatementLimit < 0) + throw new IllegalArgumentException(); + if (bnodes == null) throw new IllegalArgumentException(); @@ -130,6 +147,10 @@ this.describeMode = describeMode; + this.describeIterationLimit = describeIterationLimit; + + this.describeStatementLimit = describeStatementLimit; + this.bnodes = bnodes; switch(describeMode) { @@ -188,10 +209,13 @@ // CBD expansion begins at round ONE (1). nrounds++; - if (nrounds > MAX_ROUNDS) { + // #of statements on entry to this round. + final int nstmts = stmts.size(); + + if (cutoffQuery(nrounds - 1, nstmts)) { src.close(); - throw new QueryEvaluationException( - "CSB would exceed "+MAX_ROUNDS+" rounds."); + throw new QueryEvaluationException("CBD cutoff: nrounds=" + + nrounds + ", nstatements=" + nstmts + "."); } /* @@ -261,6 +285,35 @@ } /** + * Return <code>true</code> iff the DESCRIBE query should be cutoff because + * the limits have been exceeded. + * + * @param nrounds + * The #of evaluation rounds that have already been computed and + * ZERO (0) if this is the ffirst round. + * @param nstmts + * The #of statements at the start of this round. + * + * @return <code>true</code> iff evaluation should be cutoff. + */ + private boolean cutoffQuery(int nrounds, int nstmts) { + + // ZERO implies MAX_INT + final int describeIterationLimit = this.describeIterationLimit == 0 ? Integer.MAX_VALUE + : this.describeIterationLimit; + + final int describeStatementLimit = this.describeStatementLimit == 0 ? Integer.MAX_VALUE + : this.describeStatementLimit; + + final boolean cutoffRounds = nrounds >= describeIterationLimit; + + final boolean cutoffStatements =nrounds >= describeStatementLimit; + + return cutoffRounds && cutoffStatements; + + } + + /** * Log the statements and bnode {@link IV}s @ DEBUG. * * @param stmts Added: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeIterationLimitHint.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeIterationLimitHint.java (rev 0) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeIterationLimitHint.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -0,0 +1,75 @@ +/** + +Copyright (C) SYSTAP, LLC 2006-2011. 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 +*/ +/* + * Created on Nov 27, 2011 + */ + +package com.bigdata.rdf.sparql.ast.hints; + +import com.bigdata.rdf.sparql.ast.ASTBase; +import com.bigdata.rdf.sparql.ast.ProjectionNode; +import com.bigdata.rdf.sparql.ast.QueryHints; +import com.bigdata.rdf.sparql.ast.eval.AST2BOpContext; + +/** + * Query hint used to indicate optional iteration limit for a DESCRIBE query. + * + * @see <a href="https://sourceforge.net/apps/trac/bigdata/ticket/578"> Concise + * Bounded Description </a> + * + * @see QueryHints#DESCRIBE_ITERATION_LIMIT + */ +final class DescribeIterationLimitHint extends AbstractIntQueryHint { + + protected DescribeIterationLimitHint() { + super(QueryHints.DESCRIBE_ITERATION_LIMIT, + QueryHints.DEFAULT_DESCRIBE_ITERATION_LIMIT); + } + + @Override + public void handle(final AST2BOpContext context, + final QueryHintScope scope, final ASTBase op, + final Integer value) { + + if (op instanceof ProjectionNode) { + + //_setQueryHint(context, scope, op, getName(), value); + ((ProjectionNode) op).setDescribeIterationLimit(value); + + return; + + } + + // throw new QueryHintException(scope, op, getName(), value); + + } + + @Override + public Integer validate(final String value) { + + return Integer.valueOf(value); + + } + +} \ No newline at end of file Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeModeHint.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeModeHint.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeModeHint.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -39,6 +39,8 @@ * * @see <a href="https://sourceforge.net/apps/trac/bigdata/ticket/578"> Concise * Bounded Description </a> + * + * @see QueryHints#DESCRIBE_MODE */ final class DescribeModeHint extends AbstractQueryHint<DescribeModeEnum> { Added: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeStatementLimitHint.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeStatementLimitHint.java (rev 0) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/DescribeStatementLimitHint.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -0,0 +1,75 @@ +/** + +Copyright (C) SYSTAP, LLC 2006-2011. 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 +*/ +/* + * Created on Nov 27, 2011 + */ + +package com.bigdata.rdf.sparql.ast.hints; + +import com.bigdata.rdf.sparql.ast.ASTBase; +import com.bigdata.rdf.sparql.ast.ProjectionNode; +import com.bigdata.rdf.sparql.ast.QueryHints; +import com.bigdata.rdf.sparql.ast.eval.AST2BOpContext; + +/** + * Query hint used to indicate optional statement limit for a DESCRIBE query. + * + * @see <a href="https://sourceforge.net/apps/trac/bigdata/ticket/578"> Concise + * Bounded Description </a> + * + * @see QueryHints#DESCRIBE_STATEMENT_LIMIT + */ +final class DescribeStatementLimitHint extends AbstractIntQueryHint { + + protected DescribeStatementLimitHint() { + super(QueryHints.DESCRIBE_STATEMENT_LIMIT, + QueryHints.DEFAULT_DESCRIBE_STATEMENT_LIMIT); + } + + @Override + public void handle(final AST2BOpContext context, + final QueryHintScope scope, final ASTBase op, + final Integer value) { + + if (op instanceof ProjectionNode) { + + //_setQueryHint(context, scope, op, getName(), value); + ((ProjectionNode) op).setDescribeStatementLimit(value); + + return; + + } + + // throw new QueryHintException(scope, op, getName(), value); + + } + + @Override + public Integer validate(final String value) { + + return Integer.valueOf(value); + + } + +} \ No newline at end of file Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/QueryHintRegistry.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/QueryHintRegistry.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/hints/QueryHintRegistry.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -114,6 +114,8 @@ add(new AccessPathSampleLimitHint()); add(new AccessPathScanAndFilterHint()); add(new DescribeModeHint()); + add(new DescribeIterationLimitHint()); + add(new DescribeStatementLimitHint()); /* * BufferAnnotations Modified: branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSail.java =================================================================== --- branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSail.java 2012-09-19 10:38:19 UTC (rev 6588) +++ branches/BIGDATA_RELEASE_1_2_0/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataSail.java 2012-09-22 15:13:06 UTC (rev 6589) @@ -357,6 +357,26 @@ public static final String DESCRIBE_MODE = BigdataSail.class .getPackage().getName() + ".describeMode"; + /** + * Option specifies the iteration limit for the algorithm used to + * compute DESCRIBE responses (optional). + * + * @see QueryHints#DESCRIBE_ITERATION_LIMIT + * @see QueryHints#DEFAULT_DESCRIBE_ITERATION_LIMIT + */ + public static final String DESCRIBE_ITERATION_LIMIT = BigdataSail.class + .getPackage().getName() + ".describeIterationLimit"; + + /** + * Option specifies the statement limit for the algorithm used to + * compute DESCRIBE responses (optional). + * + * @see QueryHints#DESCRIBE_STATEMENT_LIMIT + * @see QueryHints#DEFAULT_DESCRIBE_STATEMENT_LIMIT + */ + public static final String DESCRIBE_STATEMENT_LIMIT = BigdataSail.class + .getPackage().getName() + ".describeIterationStatementLimit"; + } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |