Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-2197

illegal argument exception when querying dateTime literals with tabs and linefeeds

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Jena 3.17.0, Jena 4.3.0
    • Jena 4.3.0
    • SPARQL
    • None

    Description

      I queried the lod-a-lot HDT file http://lod-a-lot.lod.labs.vu.nl/ to get some statistics about datatypes.

      PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
      PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
      SELECT ?pred ?type (COUNT(*) AS ?cType) WHERE {
        ?sub ?pred ?obj .
        BIND( datatype(?obj) as ?type)
      } 
      GROUP BY ?pred ?type 

      Unfortunately the query aborts with the following stacktrace due to some strange datetime literal in the data (tabs and newline feeds)

      java.lang.IllegalArgumentException:                     2010-08-05T12:32:31    at org.apache.jena.ext.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parseYear (XMLGregorianCalendarImpl.java:2990)
          at org.apache.jena.ext.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse (XMLGregorianCalendarImpl.java:2900)
          at org.apache.jena.ext.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<init> (XMLGregorianCalendarImpl.java:479)
          at org.apache.jena.ext.xerces.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar (DatatypeFactoryImpl.java:235)
          at org.apache.jena.sparql.expr.nodevalue.NodeValueDT.<init> (NodeValueDT.java:53)
          at org.apache.jena.sparql.expr.NodeValue._setByValue (NodeValue.java:1044)
          at org.apache.jena.sparql.expr.NodeValue.nodeToNodeValue (NodeValue.java:963)
          at org.apache.jena.sparql.expr.NodeValue.makeNode (NodeValue.java:256)
          at org.apache.jena.sparql.expr.nodevalue.NodeFunctions.strDatatype (NodeFunctions.java:504)
          at org.apache.jena.sparql.expr.E_StrDatatype.eval (E_StrDatatype.java:37)
          at org.apache.jena.sparql.expr.ExprFunction2.eval (ExprFunction2.java:84)
          at org.apache.jena.sparql.expr.ExprFunction2.eval (ExprFunction2.java:78)
          at org.apache.jena.sparql.expr.ExprNode.eval (ExprNode.java:93)
          at org.apache.jena.sparql.expr.ExprFunction1.eval (ExprFunction1.java:68)
          at org.apache.jena.sparql.core.VarExprList.get (VarExprList.java:106)
          at org.apache.jena.sparql.engine.iterator.QueryIterAssign.accept (QueryIterAssign.java:62)
          at org.apache.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding (QueryIterProcessBinding.java:69)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext (QueryIteratorBase.java:114)
          at org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding (QueryIterConvert.java:58)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext (QueryIteratorBase.java:114)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding (QueryIteratorWrapper.java:38)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext (QueryIteratorBase.java:114)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding (QueryIteratorWrapper.java:38)
          at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext (QueryIteratorBase.java:114)
          at org.apache.jena.sparql.engine.ResultSetStream.hasNext (ResultSetStream.java:74)
          at org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext (ResultSetCheckCondition.java:55)
          at org.apache.jena.sparql.resultset.CSVOutput.format (CSVOutput.java:81)
          at org.apache.jena.riot.resultset.ResultSetWriterRegistry$1.write (ResultSetWriterRegistry.java:89)
          at org.apache.jena.riot.resultset.rw.ResultsWriter.write (ResultsWriter.java:127)
          at org.apache.jena.riot.resultset.rw.ResultsWriter.write (ResultsWriter.java:97)
          at org.apache.jena.riot.resultset.rw.ResultsWriter$Builder.write (ResultsWriter.java:71)
          at org.apache.jena.query.ResultSetFormatter.output (ResultSetFormatter.java:310)
          at org.apache.jena.query.ResultSetFormatter.outputAsCSV (ResultSetFormatter.java:629)
          at org.rdfhdt.hdtjena.cmd.HDTSparql.execute (HDTSparql.java:66)
          at org.rdfhdt.hdtjena.cmd.HDTSparql.main (HDTSparql.java:131)
          at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke (Method.java:498)
          at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282)
          at java.lang.Thread.run (Thread.java:748)
       

      I could reproduce the issue with a "standalone" SPARQL query (attached)  in Jena 3.17 and a 4.3 snapshot  without using the HDT setup 

      the base64 encoding of the query is

      UFJFRklYIHJkZjogPGh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyM+ClBSRUZJWCByZGZzOiA8aHR0cDovL3d3dy53My5vcmcvMjAwMC8wMS9yZGYtc2NoZW1hIz4KCnNlbGVjdCAoREFUQVRZUEUoU1RSRFQoIiIiIAkJCTIwMTAtMDgtMDVUMTI6MzI6MzEKCQkiIiIsIDxodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNkYXRlVGltZT4pKSAgQVMgP3gpIHt9Cg== 

      md5sum e9e88f204fbb3b45935300c8472c39b2

       

      Attachments

        1. date-issue.sparql
          0.2 kB
          Johannes Frey

        Activity

          People

            andy Andy Seaborne
            jj-author Johannes Frey
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: