Java fuseki.NullPointerException

Java fuseki.NullPointerException,java,jena,owl,fuseki,Java,Jena,Owl,Fuseki,我有一个小数据,我上传给你在这个链接上 当我在这个链接上为你应用我上传的查询时 Fuseki引发此异常: java.lang.NullPointerException at org.apache.jena.sparql.engine.binding.BindingBase.hashCode(BindingBase.java:203) at org.apache.jena.sparql.engine.binding.BindingBase.hashCode(BindingBas

我有一个小数据,我上传给你在这个链接上

当我在这个链接上为你应用我上传的查询时

Fuseki引发此异常:

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
我正在使用fuseki apache-jena-fuseki-2.4.0

您只需将数据上传到fuseki并运行查询即可获得异常

更新 我能够减少查询,但仍然得到相同的错误

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)

}

我不知道到底是什么问题,但看起来它正在发生。如果这些行号匹配,则看起来
节点
必须为空。如果绑定不必为其每个变量提供非空值,那么这似乎是可能的。修复方法可能是使用
Objects.hashCode(node)
而不是
node.hashCode()
@JoshuaTaylor,那么我应该向fuseki提交一张票据吗?我在邮件列表上问了alrady,虽然你在Jena邮件列表上问了同样的问题,Andy Seaborne已经回答了。那么我可以问一下,为什么你也在这里问这个问题?这个例子运行得很好,虽然这不是一个竞争性的、最小的、经过验证的例子。从创建一个干净的服务器开始,然后将查询缩减为更小的内容。对于任何后来加入的人,比如我,我在v2.4.0上也遇到了同样的问题,但升级到v3.4.0解决了。我不知道问题到底是什么,但看起来它正在发生。如果这些行号匹配,则看起来
节点
必须为空。如果绑定不必为其每个变量提供非空值,那么这似乎是可能的。修复方法可能是使用
Objects.hashCode(node)
而不是
node.hashCode()
@JoshuaTaylor,那么我应该向fuseki提交一张票据吗?我在邮件列表上问了alrady,虽然你在Jena邮件列表上问了同样的问题,Andy Seaborne已经回答了。那么我可以问一下,为什么你也在这里问这个问题?这个例子运行得很好,虽然这不是一个竞争性的、最小的、经过验证的例子。首先创建一个干净的服务器,然后将查询缩减到更小的部分。对于像我这样的后来加入的人,我在v2.4.0上遇到了同样的问题,但升级到v3.4.0解决了这个问题。