tomatophantastico / sparqlmap

17 stars 2 forks source link

Query execution fails in BSBM scenario #35

Open mchaloupka opened 6 years ago

mchaloupka commented 6 years ago

I have tried SparqlMap for BSBM using my own R2RML mapping. It starts without issues but the querying does not work.

The used dataset is from BSBM. Used mapping is: bsbm.txt

If I use the web interface at http://localhost:8090/ with endpoint at /api/ROOT/sparql/ (I found that it is case sensitive) the following query does not return a single result although it should return a single result (different endpoint implementation works correctly over the same dataset with the same mapping).

PREFIX bsbm-inst: <http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/>
PREFIX bsbm: <http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/vocabulary/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?producer
WHERE {
    bsbm-inst:Product72 bsbm:producer ?p .
    ?p rdfs:label ?producer .
}

Moreover, if I try to use the BSBM runner, I am not able to run any query. I am using the following command to run it:

java -cp F:/github/bsbm/build/install/bsbm/lib/* benchmark.testdriver.TestDriver -o sparqlmap.xml -runs 1 -w 1 -ucf usecases/explore/sparql.txt http://localhost:8090/api/ROOT/sparql/

Whenever a query is executed, I get the following exception on the endpoint:

18:41:08,952 [qtp128946749-16] ERROR  SparqlMapWebController : Throwable caught:

java.lang.NullPointerException
        at java.util.Objects.requireNonNull(Unknown Source)
        at java.util.Arrays$ArrayList.<init>(Unknown Source)
        at java.util.Arrays.asList(Unknown Source)
        at org.aksw.sparqlmap.web.SparqlMapWebController.executeSparqlQuery(Spar
qlMapWebController.java:86)
        at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvok
e(InvocableHandlerMethod.java:220)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeF
orRequest(InvocableHandlerMethod.java:134)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocabl
eHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
andlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
andlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapt
er.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(Dispatch
erServlet.java:963)
        at org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
rServlet.java:897)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(Frame
workServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServl
et.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkSer
vlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845
)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1712)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(We
bSocketUpgradeFilter.java:247)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.do
FilterInternal(ApplicationContextHeaderFilter.java:55)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilter
Internal(WebRequestTraceFilter.java:105)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(
RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInter
nal(HttpPutFormContentFilter.java:89)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInterna
l(HiddenHttpMethodFilter.java:77)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterIntern
al(CharacterEncodingFilter.java:197)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilter
Internal(MetricsFilter.java:106)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1699)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java
:582)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.j
ava:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:548)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandl
er.java:226)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandl
er.java:1180)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:
512)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandle
r.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandle
r.java:1112)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.j
ava:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper
.java:134)
        at org.eclipse.jetty.server.Server.handle(Server.java:534)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.jav
a:251)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(Abstra
ctConnection.java:273)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoin
t.java:93)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeP
roduceConsume(ExecuteProduceConsume.java:303)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceC
onsume(ExecuteProduceConsume.java:148)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(Exec
uteProduceConsume.java:136)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPoo
l.java:671)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool
.java:589)
        at java.lang.Thread.run(Unknown Source)

Interestingly enough, if I try the query in the browser, it executes the query (although it usually does not return anything).

If I am correct, the SparqlMap was evaluated using BSBM. Can you please provide me information how to make it working?

tomatophantastico commented 6 years ago

Hi, i will look into it, sorry for the problems, i think the rewriter is a bit of a mess right now. I'll be busy over the pentecost holidays, so i cannot give you an immedate fix.

mchaloupka commented 6 years ago

Is there any update to this? For me, it would be enough if you will tell me which older version should be fine. According to the paper, SparqlMap was working with BSBM, am I right?