On 16/02/15 12:42, Rob Vesse wrote:
Michael

Was about to say roughly the same as Andy, btw an incomplete fragment is
hard to say much about.

Are the sub-queries literally just joined together I.e. no UNION in which
cases Andy's comment are accurate

If so then you are calculating a cross product of all your counts so with
1200 sub-queries you are going to get 1200! which is a number so big it
overflows the OS X calculator and the Google calculator reports infinity

So as not to overload Google as it's calculates that number, a cross product of N and M rows is N*M.

As a count without group returns one row, that's 1*1*1... = 1^^1200 which is a bit more manageable.

Just don't add a GROUP BY to the subqueries!

But it also means the query does all the work before returning a single row and I would not be surprised if some intermediary timed it out.

A UNION will result in 1200 rows, with a single different variable in each row. You could even label the rows as to what the variable means.

{ select (count(*) as ?s1091) "Thomas_Mills_Wood" { ... } }

The query speed will be affected by the number triples in each graph matching the inner WHERE clause.

        Andy


Either do separate queries or use UNION to combine the sub-queries which
will yield you one row with 1200 columns

Rob



On 16/02/2015 12:11, "Andy Seaborne" <[email protected]> wrote:

On 16/02/15 12:00, Michael Brunnbauer wrote:

re

thanks Rob and Andy - that makes sense!

What is a bit strange is that the query takes so long. It consists of
ca. 1200
subselects - each defining a separate binding with a simple query of the
form { graph ?g { ?s ?g <uri> }}. Like this:

   { select (count(*) as ?s1091) where { graph ?g { ?s ?p
<http://dbpedia.org/resource/Thomas_Mills_Wood>. } }}
   { select (count(*) as ?s1092) where { graph ?g { ?s ?p
<http://dbpedia.org/resource/John_Wood_(explorer)>. } }}
   { select (count(*) as ?s1093) where { graph ?g { ?s ?p
<http://sws.geonames.org/2633653/>. } }}

There are not many named graphs (ca. 7000) and not many triples that
would
match (I guess < 200). Do you think it would be faster to make 1200
separate
queries instead?

That's a cross-product (of one item) for what is essential a bunch of
separate queries.  I'd look at the optimized algebra to see what execute
plan it decided on.

And a stream of queries is worth trying out.

        Andy


Regards,

Michael Brunnbauer

On Mon, Feb 16, 2015 at 11:39:20AM +0000, Rob Vesse wrote:
Michael

The error is coming from Jetty, it simply means that one end of the
connection was closed.  I assume you see this in the Fuseki log?

Most likely your client is timing out and closing the connection since
15
minutes for a query to complete is longer than the default timeouts of
most browsers and HTTP clients/API.

Try upping the timeout significantly in your client/browser/API to
something higher than the expected runtime of the query.

Rob

On 16/02/2015 11:01, "Michael Brunnbauer" <[email protected]> wrote:


hi all,

I see this Exception with a very big SPARQL select query (182825
bytes)
on a TDB with jena-fuseki-1.0.2-20140315.080253-36. After an upgrade
to
jena-fuseki-1.1.1, the problem is still there. The query used to work
before
but took very long (ca. 900s).

What does the error mean? Is my TDB corrupted?

02:50:58 INFO  [1] exec/select
org.eclipse.jetty.io.EofException
         at

org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:914
)
         at

org.eclipse.jetty.http.AbstractGenerator.flush(AbstractGenerator.java:4
43)
         at
org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:100)
         at

org.eclipse.jetty.server.AbstractHttpConnection$Output.flush(AbstractHt
tpC
onnection.java:1123)
         at

org.apache.jena.fuseki.servlets.ResponseResultSet.output(ResponseResult
Set
.java:303)
         at

org.apache.jena.fuseki.servlets.ResponseResultSet.textOutput(ResponseRe
sul
tSet.java:249)
         at

org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet$(
Res
ponseResultSet.java:148)
         at

org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet(R
esp
onseResultSet.java:89)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.j
ava
:345)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:
242
)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQ
L_Q
uery.java:195)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:
96)
         at

org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeLifecycle(SPA
RQL
_ServletBase.java:171)
         at

org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeAction(SPARQL
_Se
rvletBase.java:152)
         at

org.apache.jena.fuseki.servlets.SPARQL_ServletBase.execCommonWorker(SPA
RQL
_ServletBase.java:140)
         at

org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_Serv
let
Base.java:69)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.doPost(SPARQL_Query.java:5
7)
         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
         at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
         at

org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHa
ndl
er.java:1496)
         at

org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.jav
a:8
2)
         at
org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:256)
         at

org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHa
ndl
er.java:1467)
         at

org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:4
99)
         at

org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler
.ja
va:229)
         at

org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler
.ja
va:1086)
         at

org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:42
8)
         at

org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.
jav
a:193)
         at

org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.
jav
a:1020)
         at

org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.jav
a:1
35)
         at

org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.j
ava
:116)
         at org.eclipse.jetty.server.Server.handle(Server.java:370)
         at

org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractH
ttp
Connection.java:494)
         at

org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpCon
nec
tion.java:982)
         at

org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(
Abs
tractHttpConnection.java:1043)
         at
org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
         at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
         at

org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection
.ja
va:82)
         at

org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndP
oin
t.java:667)
         at

org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPo
int
.java:52)
         at

org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.
jav
a:608)
         at

org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.j
ava
:543)
         at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Broken pipe
         at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
         at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
         at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
         at sun.nio.ch.IOUtil.write(IOUtil.java:51)
         at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
         at

org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:293
)
         at

org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPo
int
.java:401)
         at

org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:850
)
         ... 43 more
02:51:01 ERROR Internal error
java.lang.IllegalStateException: Committed
         at
org.eclipse.jetty.server.Response.resetBuffer(Response.java:1154)
         at
org.eclipse.jetty.server.Response.sendError(Response.java:317)
         at
org.eclipse.jetty.server.Response.sendError(Response.java:419)
         at

javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResp
ons
eWrapper.java:164)
         at

org.apache.jena.fuseki.servlets.HttpServletResponseTracker.sendError(Ht
tpS
ervletResponseTracker.java:53)
         at

org.apache.jena.fuseki.servlets.ServletBase.responseSendError(ServletBa
se.
java:73)
         at

org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_Serv
let
Base.java:82)
         at

org.apache.jena.fuseki.servlets.SPARQL_Query.doPost(SPARQL_Query.java:5
7)
         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
         at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
         at

org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHa
ndl
er.java:1496)
         at

org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.jav
a:8
2)
         at
org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:256)
         at

org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHa
ndl
er.java:1467)
         at

org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:4
99)
         at

org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler
.ja
va:229)
         at

org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler
.ja
va:1086)
         at

org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:42
8)
         at

org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.
jav
a:193)
         at

org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.
jav
a:1020)
         at

org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.jav
a:1
35)
         at

org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.j
ava
:116)
         at org.eclipse.jetty.server.Server.handle(Server.java:370)
         at

org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractH
ttp
Connection.java:494)
         at

org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpCon
nec
tion.java:982)
         at

org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(
Abs
tractHttpConnection.java:1043)
         at
org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
         at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
         at

org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection
.ja
va:82)
         at

org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndP
oin
t.java:667)
         at

org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPo
int
.java:52)
         at

org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.
jav
a:608)
         at

org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.j
ava
:543)
         at java.lang.Thread.run(Thread.java:745)

Regards,

Michael Brunnbauer

--
++  Michael Brunnbauer
++  netEstate GmbH
++  Geisenhausener Straße 11a
++  81379 München
++  Tel +49 89 32 19 77 80
++  Fax +49 89 32 19 77 89
++  E-Mail [email protected]
++  http://www.netestate.de/
++
++  Sitz: München, HRB Nr.142452 (Handelsregister B München)
++  USt-IdNr. DE221033342
++  Geschäftsführer: Michael Brunnbauer, Franz Brunnbauer
++  Prokurist: Dipl. Kfm. (Univ.) Markus Hendel










Reply via email to