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

Reply via email to