I tried as well, using Fuseki 2.4.0 and both openjdk version "9-internal" OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src) OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) and I was unable to reproduce with your provided data.ttl and query - I also get 8 results (all missing ?reason and ?finalSimilarity) Which Java version are you using? (java -version). Do you always get the same error, or does it sometimes work? I think this relate to your various conditional BINDs - perhaps some race condition is triggered - my gut feeling points at the ?skip_ hacks - am I right that if you remove those bits of the query you don't get the exception? As you are running through Fuseki, I assume you have not done any local modifications, added your own functions or similar? If you have Docker installed, could you have a quick go with image stain/jena-fuseki and see if that also fails? (Currently Fuseki 2.3.1 - I couldn't update it as alpinelinux.org has a DNS error today) sudo docker run -p 3030:3030 -it stain/jena-fuseki (Note the generated admin password in the log) That would test on a Linux VM rather than using your Mac OS Java install - I can't see why it would make any difference, but perhaps worth a try? ------------------- Below are some wild stack trace speculations you are all free to ignore.. :-) The first stacktrace in your earlier email [1] seemed to me to indicate a concurrency issue (e.g. because a sparql query was being closed while being iterated over? ) [1] https://lists.apache.org/thread.html/Zp5ikb2cqx1ycqg https://github.com/apache/jena/blob/jena-3.0.1/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterProcessBinding.java#L68 where Binding input = getInput().nextBinding() ; thus getInput() is null right after calling getInput().hasNext(); -- but getInput() is from https://github.com/apache/jena/blob/jena-3.0.1/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIter1.java#L39 and as a private field can only be made by null by closeIterator(): https://github.com/apache/jena/blob/jena-3.0.1/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIter1.java#L43 However the stack trace in this email is different, it indicate that a binding variable is null while calculating a hashCode, as https://github.com/apache/jena/blob/jena-3.1.0/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java#L203 iterates over the variable names and ask for their hashCode, assuming they are not null. The implementation https://github.com/apache/jena/blob/jena-3.1.0/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingHashMap.java can't add any null-bindings However this implementation for manual bindings CAN potentially hold a null value: https://github.com/apache/jena/blob/jena-3.1.0/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/Binding1.java This is used by BindingFactory.binding() -- presumably called by the various conditional BIND()s in the query? (I've not checked any further) On 18 May 2016 at 20:35, Andy Seaborne <[email protected]> wrote: > Using Fuseki 2.4.0 in a clean runtime area > > I create a persistent dataset via the UI > Loaded the sample data (1026 triples) in the default graph via the UI > > Made the query. > > Got 8 result rows. > > Andy > > > > On 18/05/16 10:45, Ania david wrote: >> >> I was able to reduce the query and still get the error >> >> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >> PREFIX owl: <http://www.w3.org/2002/07/owl#> >> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> >> PREFIX rs: <http://www.SemanticRecommender.com/rs#> >> PREFIX bo: <http://www.BookOntology.com/bo#> >> PREFIX : <http://www.SemanticBookOntology.com/sbo#> >> SELECT distinct ?item ?itemClass ?userContext ?skip ?userContextWeight >> ?reason ((?similarity * ?importance * ?levelImportance * ?ratingValue) as >> ?finalSimilarity) ?userClass >> WHERE >> { >> >> { >> >> VALUES ?user { bo:ania } >> values ?item {:exampleBook} >> } >> # >> OPTIONAL >> { >> # VALUES ?user { rs:Issac_Newton } >> >> ?userContext rdf:type rs:UserContext ; >> rs:appliedOnItems ?itemClass ; >> rs:appliedOnUsers ?userClass . >> >> OPTIONAL >> { ?userContext rs:hasWeightIfContextMatched ?weightMatched } >> OPTIONAL >> { ?userContext rs:hasWeightIfContextDoesNotMatch >> ?weightNotMatched } >> OPTIONAL >> { ?userContext rs:doNotRecommendInCaseNotMatch true >> BIND(1 AS ?skip_) >> } >> } >> VALUES ?user { bo:ania } >> bind(if (bound(?skip_) && (not EXISTS {?user a ?userClass}) && >> (EXISTS {?item a ?itemClass}) , ?skip_, 0) as ?skip1) >> >> values (?defaultUserMatched ?defaultUserNotMatched) {(1 0.5)} >> BIND(if(EXISTS { ?user rdf:type ?userClass }, >> coalesce(?weightMatched, ?defaultUserMatched), coalesce(?weightNotMatched, >> ?defaultUserNotMatched)) AS ?weight) >> >> bind (if ( exists {?item a ?itemClass }, true , false) as >> ?doesItemBelongToUserContextItemClass) >> >> values ?defaultNoUserContext {1} >> BIND(if(bound(?skip1), ?skip1, 0) as ?skip) >> >> BIND( if ( !?doesItemBelongToUserContextItemClass , >> ?defaultNoUserContext ,if(bound(?weight), ?weight, ?defaultNoUserContext)) >> AS ?userContextWeight) >> >> >> >> } >> >> ________________________________________ >> From: Ania david <[email protected]> >> Sent: Wednesday, May 18, 2016 10:39:06 AM >> To: [email protected] >> Subject: Fuseki null pointer exception with minimum data >> >> Hello, >> >> >> I have a small data, which I uploaded for you on this link >> >> http://www.mediafire.com/download/0bv89wfc65a50sl/data.ttl >> data.ttl<http://www.mediafire.com/download/0bv89wfc65a50sl/data.ttl> >> www.mediafire.com >> MediaFire is a simple to use free service that lets you put all your >> photos, documents, music, and video in a single place so you can access them >> anywhere and share them everywhere. >> >> >> >> >> and when I apply the query that I uploaded for you on this link >> >> http://www.mediafire.com/download/bjz4zpnj0220szz/query.sparql >> >> I am working with fuseki apache-jena-fuseki-2.4.0 >> >> Fuseki gives me this error: >> >> >> java.lang.NullPointerException >> at >> org.apache.jena.sparql.engine.binding.BindingBase.hashCode(BindingBase.java:203) >> at >> org.apache.jena.sparql.engine.binding.BindingBase.hashCode(BindingBase.java:183) >> at java.util.HashMap.hash(HashMap.java:338) >> at java.util.HashMap.containsKey(HashMap.java:595) >> at java.util.HashSet.contains(HashSet.java:203) >> at >> org.apache.jena.sparql.engine.iterator.QueryIterDistinct.getInputNextUnseen(QueryIterDistinct.java:106) >> at >> org.apache.jena.sparql.engine.iterator.QueryIterDistinct.hasNextBinding(QueryIterDistinct.java:70) >> at >> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:111) >> at >> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39) >> at >> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:111) >> at >> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39) >> at >> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:111) >> at >> org.apache.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:74) >> at >> org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext(ResultSetCheckCondition.java:59) >> at >> org.apache.jena.sparql.resultset.ResultSetApply.apply(ResultSetApply.java:38) >> at >> org.apache.jena.sparql.resultset.JSONOutput.format(JSONOutput.java:34) >> at >> org.apache.jena.query.ResultSetFormatter.outputAsJSON(ResultSetFormatter.java:500) >> at >> org.apache.jena.fuseki.servlets.ResponseResultSet$2.output(ResponseResultSet.java:211) >> at >> org.apache.jena.fuseki.servlets.ResponseResultSet.output(ResponseResultSet.java:303) >> at >> org.apache.jena.fuseki.servlets.ResponseResultSet.jsonOutput(ResponseResultSet.java:229) >> at >> org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet$(ResponseResultSet.java:149) >> at >> org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet(ResponseResultSet.java:93) >> at >> org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.java:396) >> at >> org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:272) >> at >> org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:228) >> at >> org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:213) >> at >> org.apache.jena.fuseki.servlets.ActionSPARQL.executeLifecycle(ActionSPARQL.java:134) >> at >> org.apache.jena.fuseki.servlets.SPARQL_UberServlet.executeRequest(SPARQL_UberServlet.java:354) >> at >> org.apache.jena.fuseki.servlets.SPARQL_UberServlet.serviceDispatch(SPARQL_UberServlet.java:315) >> at >> org.apache.jena.fuseki.servlets.SPARQL_UberServlet.executeAction(SPARQL_UberServlet.java:271) >> at >> org.apache.jena.fuseki.servlets.ActionSPARQL.execCommonWorker(ActionSPARQL.java:85) >> at >> org.apache.jena.fuseki.servlets.ActionBase.doCommon(ActionBase.java:81) >> at >> org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:72) >> at >> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) >> at >> org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) >> at >> org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) >> at >> org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) >> at >> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) >> at >> org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) >> at >> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) >> at >> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) >> at >> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) >> at >> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) >> at >> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) >> at >> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) >> at >> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) >> at >> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) >> at >> org.apache.jena.fuseki.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:285) >> at >> org.apache.jena.fuseki.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:248) >> at >> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) >> at >> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) >> at >> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) >> at >> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) >> at >> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) >> at >> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1156) >> at >> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) >> at >> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) >> at >> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1088) >> at >> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) >> at >> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) >> at org.eclipse.jetty.server.Server.handle(Server.java:517) >> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306) >> at >> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) >> at >> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245) >> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) >> at >> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) >> at >> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) >> at >> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) >> at >> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) >> at >> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) >> at java.lang.Thread.run(Thread.java:745) >> [2016-05-18 10:20:00] Fuseki INFO [11] 500 Server Error (186 ms) >> r >> >> >> >> <http://www.mediafire.com/download/bjz4zpnj0220szz/query.sparql> >> >> query.sparql<http://www.mediafire.com/download/bjz4zpnj0220szz/query.sparql> >> www.mediafire.com >> MediaFire is a simple to use free service that lets you put all your >> photos, documents, music, and video in a single place so you can access them >> anywhere and share them everywhere. >> >> >> >> >> > -- Stian Soiland-Reyes Apache Commons, Apache Taverna (incubating), Apache Commons RDF (incubating) http://orcid.org/0000-0001-9842-9718
