|
From: <tr...@do...> - 2013-09-10 14:29:58
|
<p>The following issue has been added to a project that you are monitoring.</p>
<table border="0">
<tr>
<td width="90px" valign="top"><b>Title:</b></td>
<td>Exception raised while parsing an UpdateCommand with FILTER EXISTS clause</td>
</tr>
<tr>
<td><b>Project:</b></td>
<td>Core Library (dotNetRDF.dll)</td>
</tr>
<tr>
<td><b>Created By:</b></td>
<td>Max</td>
</tr>
<tr>
<td><b>Milestone:</b></td>
<td>Unassigned</td>
</tr>
<tr>
<td><b>Category:</b></td>
<td>Query</td>
</tr>
<tr>
<td><b>Priority:</b></td>
<td>Unassigned</td>
</tr>
<tr>
<td><b>Type:</b></td>
<td>Bug</td>
</tr>
<tr>
<td><b>Description:</b></td>
</tr>
<tr>
<td colspan="2"><p>
Hi Rob,</p>
<p>
I'm trying to build an access-controlled TripleStore with DotNetRdf. So I try to dispatch an rdf input triples into different graphs using SPARQL Updates.</p>
<p>
When I use a (NOT?) EXISTS filter pattern like in the following query :</p>
<p>
PREFIX myschema: <http://www.example.com/schema#><br />
INSERT {<br />
GRAPH <data:public> {<br />
?s ?p ?o<br />
}<br />
} WHERE {<br />
GRAPH <input:source> {<br />
?s ?p ?o .<br />
} .<br />
FILTER( NOT EXISTS {<br />
{?p a myschema:PrivateProperty}<br />
UNION { ?s a myschema:PrivateResource }<br />
UNION { ?o a myschema:PrivateResource }<br />
})<br />
}<br />
</p>
<p>
I get an exception from the query parser and this stack trace :</p>
<p>
<strong>VDS.RDF.Parsing.RdfParseException: Unable to parse an EXISTS/NOT EXISTS as there is no Query Parser to call into</strong><br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseBuiltInCall(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 803<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParsePrimaryExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 440<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseUnaryExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 370<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseMultiplicativeExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 330<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseAdditiveExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 301<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseNumericExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 295<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseRelationalExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 255<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseValueLogical(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 249<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseConditionalAndExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 224<br />
à VDS.RDF.Query.SparqlExpressionParser.TryParseConditionalOrExpression(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 200<br />
à VDS.RDF.Query.SparqlExpressionParser.Parse(Queue`1 tokens) dans D:\Projects\dotnetrdf\Libraries\core\net40\Query\SparqlExpressionParser.cs:ligne 188<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseExpression(SparqlQueryParserContext context, Boolean commasTerminate, Boolean asTerminates) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 2556<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseExpression(SparqlQueryParserContext context, Boolean commasTerminate) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 2500<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseFilterExpression(SparqlQueryParserContext context, GraphPattern p) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 2302<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseFilterClause(SparqlQueryParserContext context, GraphPattern p) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 2219<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseTriplePatterns(SparqlQueryParserContext context, GraphPattern p) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 1557<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseTriplePatterns(SparqlQueryParserContext context, GraphPattern p) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 1626<br />
à VDS.RDF.Parsing.SparqlQueryParser.TryParseGraphPattern(SparqlQueryParserContext context, Boolean requireOpeningLeftBracket) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlQueryParser.cs:ligne 1443<br />
à VDS.RDF.Parsing.SparqlUpdateParser.TryParseInsertCommand(SparqlUpdateParserContext context, Boolean allowData) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlUpdateParser.cs:ligne 717<br />
à VDS.RDF.Parsing.SparqlUpdateParser.ParseInternal(SparqlUpdateParserContext context) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlUpdateParser.cs:ligne 307<br />
à VDS.RDF.Parsing.SparqlUpdateParser.Parse(TextReader input) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlUpdateParser.cs:ligne 185<br />
à VDS.RDF.Parsing.SparqlUpdateParser.ParseFromString(String updates) dans D:\Projects\dotnetrdf\Libraries\core\net40\Parsing\SparqlUpdateParser.cs:ligne 221<br />
à VDS.RDF.TripleStore.ExecuteUpdate(String update) dans D:\Projects\dotnetrdf\Libraries\core\net40\Core\TripleStore.cs:ligne 530</p>
<p>
If I understand, the SparqlExpressionParser._exprParser instance that is used is not configured properly but I'm lost to why and how to correct this.</p>
<p>
Could you have a peek on this one, please ?</p>
<p>
Thanks in advance,<br />
Max.</p></td>
</tr>
</table>
<p>
More information on this issue can be found at
<a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=373" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=373</a></p>
<p style="text-align:center;font-size:8pt;padding:5px;">
If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options.
</p>
|