From: <tr...@do...> - 2012-12-01 11:31:42
|
<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>Querying dates from Virtuoso</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Dimitri</td> </tr> <tr> <td><b>Milestone:</b></td> <td>none</td> </tr> <tr> <td><b>Category:</b></td> <td>Parsing</td> </tr> <tr> <td><b>Priority:</b></td> <td>Normal</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 everyone,</p> <p> I have had some trouble querying dates using VDS.RDF.Query.SparqlRemoteEndpoint and connecting to a Virtuoso server.</p> <p> The following code</p> <p> </p> <div> <em>var endp = new VDS.RDF.Query.SparqlRemoteEndpoint(new Uri("http://localhost:8890/sparql"));</em></div> <div> </div> <div> <em> var dateResult = endp.QueryWithResultSet(@"</em></div> <div> <em> prefix res: <http://localhost/rdf/resource/></em></div> <div> <em> prefix onto: <http://localhost/rdf/ontology#></em></div> <div> <em> select str(?date) as ?date1 where {res:AvoidTheBugListed onto:hasDate ?date}</em></div> <div> <em> ");</em></div> <div> </div> <div> <em> var datefound = DateTime.Parse(dateResult[0][0].ToString());</em></div> <div> </div> <div> causes the following error:</div> <div> </div> <div> <div> <em>VDS.RDF.Parsing.RdfParseException : [Line 4 Column 73] Date</em></div> <div> <em>Unexpected Token 'Date' encountered, expected a Property Value describing one of the properties of an Variable Binding</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.Error(SparqlJsonParserContext context, String message) in SparqlJsonParser.cs: line 754</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseBoundVariable(SparqlJsonParserContext context, String var, SparqlResult r) in SparqlJsonParser.cs: line 589</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseBinding(SparqlJsonParserContext context) in SparqlJsonParser.cs: line 531</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseBindings(SparqlJsonParserContext context) in SparqlJsonParser.cs: line 498</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseResults(SparqlJsonParserContext context) in SparqlJsonParser.cs: line 456</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseBody(SparqlJsonParserContext context) in SparqlJsonParser.cs: line 381</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.ParseResultSetObject(SparqlJsonParserContext context) in SparqlJsonParser.cs: line 195</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.Parse(TextReader input, ISparqlResultsHandler handler) in SparqlJsonParser.cs: line 146</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.Load(ISparqlResultsHandler handler, TextReader input) in SparqlJsonParser.cs: line 116</em></div> <div> <em> at VDS.RDF.Parsing.SparqlJsonParser.Load(ISparqlResultsHandler handler, StreamReader input) in SparqlJsonParser.cs: line 125</em></div> <div> <em> at VDS.RDF.Query.SparqlRemoteEndpoint.QueryWithResultSet(ISparqlResultsHandler handler, String sparqlQuery) in SparqlRemoteEndpoint.cs: line 337</em></div> <div> <em> at VDS.RDF.Query.SparqlRemoteEndpoint.QueryWithResultSet(String sparqlQuery) in SparqlRemoteEndpoint.cs: line 293</em></div> <div> <em> at DotNetRdfDatesVirtuoso.DateTests.SelectDate() in DateTests.cs: line 18</em></div> </div> <p> </p> <p> </p> <p> On my local installation, I have managed to circumvent this by changing the dotNetRDF library source code.</p> <p> In the file dotNetRdf/Parsing/SparqlJsonParser.cs, line 587 I have changed the following code:</p> <p> </p> <div> <em>if (context.Input.TokenType != JsonToken.String)</em></div> <div> <em>{</em></div> <div> <em> throw Error(context, "Unexpected Token '" + context.Input.TokenType.ToString() + "' encountered, expected a Property Value describing one of the properties of an Variable Binding");</em></div> <div> <em>}</em></div> <div> </div> <div> to this</div> <div> </div> <div> <div> <em>if (context.Input.TokenType != JsonToken.String && context.Input.TokenType != JsonToken.Date)</em></div> <div> <em>{</em></div> <div> <em> throw Error(context, "Unexpected Token '" + context.Input.TokenType.ToString() + "' encountered, expected a Property Value describing one of the properties of an Variable Binding");</em></div> <div> <em>}</em></div> <div> </div> <div> and everything seems to work fine.</div> <div> </div> <div> The version of the dotNetRdf library I have performed the change on is 0.7.2</div> <div> </div> <div> I have made the same test on 0.8.2 and the same problem arises, so the fix should work there to.</div> <div> </div> <div> The Virtuoso version I am using is 06.01.3127</div> <div> </div> <div> If it would be best for the project, I could perform this sort of improvements in a branch in the future and ask for your approval but I am not sure if my fix is even correct at this point (it just works for me) :)</div> <div> </div> <div> Best regards,</div> <div> </div> <div> Dimitri</div> <div> </div> </div> <p> </p> <p> </p> <p> </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=290" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=290</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> |