blazegraph / database

Blazegraph High Performance Graph Database
GNU General Public License v2.0
871 stars 170 forks source link

Nested Optionals cause RuntimeException: Named subquery results are not used by this query: %-bottom-up-1 #157

Closed fkleedorfer closed 1 year ago

fkleedorfer commented 4 years ago

I'm getting this exception for this query and I suspect that it's a bug:

prefix ex: <http://example.com/>
SELECT  ?result ?score
WHERE 

  {

    OPTIONAL
          { ?result  ex:travelAction  ?a50fa3f3
              OPTIONAL
                { OPTIONAL
                    { ?a50fa3f3  a                    <http://schema.org/TravelAction>
                      BIND(1 AS ?v_0_0)
                    }
                  OPTIONAL
                    { ?a50fa3f3  <http://schema.org/fromLocation>  ?d4096e41
                        OPTIONAL
                          { OPTIONAL
                              { ?d4096e41  a                    <http://schema.org/Place>
                                BIND(1 AS ?v_0_1_0)
                              }
                            OPTIONAL
                              {  ?d4096e41  <http://schema.org/geo>  ?bbe0e23d
                                  OPTIONAL
                                    { OPTIONAL
                                        { ?bbe0e23d  a                    <http://schema.org/GeoCoordinates>
                                          BIND(1 AS ?v_0_1_1_0)
                                        }
                                      OPTIONAL
                                        { ?bbe0e23d  <http://schema.org/latitude>  "10.00000"
                                          BIND(1 AS ?v_0_1_1_1)
                                        }
                                      OPTIONAL
                                        { ?bbe0e23d  <http://schema.org/longitude>  "10.00000"
                                          BIND(1 AS ?v_0_1_1_2)
                                        }

                                    }

                                BIND(1 AS ?v_0_1_1)
                              }
                            OPTIONAL
                              { ?d4096e41  <http://schema.org/name>  "Some place"
                                BIND(1 AS ?v_0_1_2)
                              }
                          }

                      BIND(1 AS ?v_0_1)
                    }
                  OPTIONAL
                    {  ?a50fa3f3  <http://schema.org/toLocation>  ?43460a90
                        OPTIONAL
                          { OPTIONAL
                              { ?43460a90  a                    <http://schema.org/Place>
                                BIND(1 AS ?v_0_2_0)
                              }
                            OPTIONAL
                              { ?43460a90  <http://schema.org/geo>  ?c7c8bf0c
                                  OPTIONAL
                                    { OPTIONAL
                                        { ?c7c8bf0c  a                    <http://schema.org/GeoCoordinates>
                                          BIND(1 AS ?v_0_2_1_0)
                                        }
                                      OPTIONAL
                                        { ?c7c8bf0c  <http://schema.org/latitude>  "20.0000"
                                          BIND(1 AS ?v_0_2_1_1)
                                        }
                                      OPTIONAL
                                        { ?c7c8bf0c  <http://schema.org/longitude>  "20.0000"
                                          BIND(1 AS ?v_0_2_1_2)
                                        }

                                    }

                                BIND(1 AS ?v_0_2_1)
                              }
                            OPTIONAL
                              { ?43460a90  <http://schema.org/name>  "Some other place"
                                BIND(1 AS ?v_0_2_2)
                              }
                          }

                      BIND(1 AS ?v_0_2)
                    }
                }
            BIND(1 AS ?v_0)
          }
        ?result  a                     ex:Thing

      BIND(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( if(bound(?v_0_1_1), ?v_0_1_1, 0) + if(bound(?v_0_1_2), ?v_0_1_2, 0) ) + if(bound(?v_0_2_1), ?v_0_2_1, 0) ) + if(bound(?v_0_1_0), ?v_0_1_0, 0) ) + if(bound(?v_0_2_0), ?v_0_2_0, 0) ) + if(bound(?v_0_0), ?v_0_0, 0) ) + if(bound(?v_0_2_2), ?v_0_2_2, 0) ) + if(bound(?v_0_1), ?v_0_1, 0) ) + if(bound(?v_0_2), ?v_0_2, 0) ) + if(bound(?v_0_2_1_3), ?v_0_2_1_3, 0) ) + if(bound(?v_0_2_1_2), ?v_0_2_1_2, 0) ) + if(bound(?v_0_2_1_1), ?v_0_2_1_1, 0) ) + if(bound(?v_0), ?v_0, 0) ) + if(bound(?v_0_2_1_0), ?v_0_2_1_0, 0) ) + if(bound(?v_0_1_1_0), ?v_0_1_1_0, 0) ) + if(bound(?v_0_1_1_1), ?v_0_1_1_1, 0) ) + if(bound(?v_0_1_1_2), ?v_0_1_1_2, 0) ) + if(bound(?v_0_1_1_3), ?v_0_1_1_3, 0) ) / 18 ) AS ?score)

    FILTER ( ?score > 0 )
  }

Exception:

ERROR: SPARQL-QUERY: queryStr=prefix hint: 
prefix ex: 
SELECT  ?result ?score
WHERE 

  {

    OPTIONAL
          { ?result  ex:travelAction  ?a50fa3f3
              OPTIONAL
                { OPTIONAL
                    { ?a50fa3f3  a                    
                      BIND(1 AS ?v_0_0)
                    }
                  OPTIONAL
                    { ?a50fa3f3    ?d4096e41
                        OPTIONAL
                          { OPTIONAL
                              { ?d4096e41  a                    
                                BIND(1 AS ?v_0_1_0)
                              }
                            OPTIONAL
                              {  ?d4096e41    ?bbe0e23d
                                  OPTIONAL
                                    { OPTIONAL
                                        { ?bbe0e23d  a                    
                                          BIND(1 AS ?v_0_1_1_0)
                                        }
                                      OPTIONAL
                                        { ?bbe0e23d    "10.00000"
                                          BIND(1 AS ?v_0_1_1_1)
                                        }
                                      OPTIONAL
                                        { ?bbe0e23d    "10.00000"
                                          BIND(1 AS ?v_0_1_1_2)
                                        }

                                    }

                                BIND(1 AS ?v_0_1_1)
                              }
                            OPTIONAL
                              { ?d4096e41    "Some place"
                                BIND(1 AS ?v_0_1_2)
                              }
                          }

                      BIND(1 AS ?v_0_1)
                    }
                  OPTIONAL
                    {  ?a50fa3f3    ?43460a90
                        OPTIONAL
                          { OPTIONAL
                              { ?43460a90  a                    
                                BIND(1 AS ?v_0_2_0)
                              }
                            OPTIONAL
                              { ?43460a90    ?c7c8bf0c
                                  OPTIONAL
                                    { OPTIONAL
                                        { ?c7c8bf0c  a                    
                                          BIND(1 AS ?v_0_2_1_0)
                                        }
                                      OPTIONAL
                                        { ?c7c8bf0c    "20.0000"
                                          BIND(1 AS ?v_0_2_1_1)
                                        }
                                      OPTIONAL
                                        { ?c7c8bf0c    "20.0000"
                                          BIND(1 AS ?v_0_2_1_2)
                                        }

                                    }

                                BIND(1 AS ?v_0_2_1)
                              }
                            OPTIONAL
                              { ?43460a90    "Some other place"
                                BIND(1 AS ?v_0_2_2)
                              }
                          }

                      BIND(1 AS ?v_0_2)
                    }
                }
            BIND(1 AS ?v_0)
          }
        ?result  a                     ex:Thing

      BIND(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( if(bound(?v_0_1_1), ?v_0_1_1, 0) + if(bound(?v_0_1_2), ?v_0_1_2, 0) ) + if(bound(?v_0_2_1), ?v_0_2_1, 0) ) + if(bound(?v_0_1_0), ?v_0_1_0, 0) ) + if(bound(?v_0_2_0), ?v_0_2_0, 0) ) + if(bound(?v_0_0), ?v_0_0, 0) ) + if(bound(?v_0_2_2), ?v_0_2_2, 0) ) + if(bound(?v_0_1), ?v_0_1, 0) ) + if(bound(?v_0_2), ?v_0_2, 0) ) + if(bound(?v_0_2_1_3), ?v_0_2_1_3, 0) ) + if(bound(?v_0_2_1_2), ?v_0_2_1_2, 0) ) + if(bound(?v_0_2_1_1), ?v_0_2_1_1, 0) ) + if(bound(?v_0), ?v_0, 0) ) + if(bound(?v_0_2_1_0), ?v_0_2_1_0, 0) ) + if(bound(?v_0_1_1_0), ?v_0_1_1_0, 0) ) + if(bound(?v_0_1_1_1), ?v_0_1_1_1, 0) ) + if(bound(?v_0_1_1_2), ?v_0_1_1_2, 0) ) + if(bound(?v_0_1_1_3), ?v_0_1_1_3, 0) ) / 18 ) AS ?score)

    FILTER ( ?score > 0 )
  }
java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Named subquery results are not used by this query: %-bottom-up-1
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at com.bigdata.rdf.sail.webapp.BigdataServlet.submitApiTask(BigdataServlet.java:281)
    at com.bigdata.rdf.sail.webapp.QueryServlet.doSparqlQuery(QueryServlet.java:653)
    at com.bigdata.rdf.sail.webapp.QueryServlet.doPost(QueryServlet.java:273)
    at com.bigdata.rdf.sail.webapp.RESTServlet.doPost(RESTServlet.java:269)
    at com.bigdata.rdf.sail.webapp.MultiTenancyServlet.doPost(MultiTenancyServlet.java:193)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:769)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1125)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:610)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Named subquery results are not used by this query: %-bottom-up-1
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at com.bigdata.rdf.sail.webapp.QueryServlet$SparqlQueryTask.call(QueryServlet.java:864)
    at com.bigdata.rdf.sail.webapp.QueryServlet$SparqlQueryTask.call(QueryServlet.java:670)
    at com.bigdata.rdf.task.ApiTaskForIndexManager.call(ApiTaskForIndexManager.java:68)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    ... 1 more
Caused by: java.lang.RuntimeException: Named subquery results are not used by this query: %-bottom-up-1
    at com.bigdata.rdf.sparql.ast.optimizers.ASTNamedSubqueryOptimizer.assertEachNamedSubqueryIsUsed(ASTNamedSubqueryOptimizer.java:307)
    at com.bigdata.rdf.sparql.ast.optimizers.ASTNamedSubqueryOptimizer.optimize(ASTNamedSubqueryOptimizer.java:125)
    at com.bigdata.rdf.sparql.ast.optimizers.ASTOptimizerList.optimize(ASTOptimizerList.java:126)
    at com.bigdata.rdf.sparql.ast.eval.AST2BOpUtility.convert(AST2BOpUtility.java:267)
    at com.bigdata.rdf.sparql.ast.eval.ASTEvalHelper.optimizeQuery(ASTEvalHelper.java:426)
    at com.bigdata.rdf.sparql.ast.eval.ASTEvalHelper.evaluateTupleQuery(ASTEvalHelper.java:211)
    at com.bigdata.rdf.sail.BigdataSailTupleQuery.evaluate(BigdataSailTupleQuery.java:79)
    at com.bigdata.rdf.sail.BigdataSailTupleQuery.evaluate(BigdataSailTupleQuery.java:61)
    at org.openrdf.repository.sail.SailTupleQuery.evaluate(SailTupleQuery.java:75)
    at com.bigdata.rdf.sail.webapp.BigdataRDFContext$TupleQueryTask.doQuery(BigdataRDFContext.java:1713)
    at com.bigdata.rdf.sail.webapp.BigdataRDFContext$AbstractQueryTask.innerCall(BigdataRDFContext.java:1569)
    at com.bigdata.rdf.sail.webapp.BigdataRDFContext$AbstractQueryTask.call(BigdataRDFContext.java:1534)
    at com.bigdata.rdf.sail.webapp.BigdataRDFContext$AbstractQueryTask.call(BigdataRDFContext.java:747)
    ... 4 more

Blazegraph Status:

Build Version=2.1.4
Build Git Commit=738d05f08cffd319233a4bfbb0ec2a858e260f9c

Build Git Branch=refs/heads/BLAZEGRAPH_RELEASE_2_1_4

Accepted query count=942290

Running query count=0

Show queries, query details.

/GeoSpatial/bigMinCalculationTimeMS=539
/GeoSpatial/filterCalculationTimeMS=765838
/GeoSpatial/geoSpatialSearchRequests=3564
/GeoSpatial/geoSpatialServiceCallSubRangeTasks=3564
/GeoSpatial/geoSpatialServiceCallTasks=3564
/GeoSpatial/rangeCheckCalculationTimeMS=108512
/GeoSpatial/zOrderIndexHitRatio=0.9990886458541299
/GeoSpatial/zOrderIndexHits=57198894
/GeoSpatial/zOrderIndexMisses=52176
/GeoSpatial/zOrderIndexScannedValues=57251070
/blockedWorkQueueCount=0
/blockedWorkQueueRunningTotal=1267701
/bufferedChunkMessageBytesOnNativeHeap=0
/bufferedChunkMessageCount=-34840402
/deadlineQueueSize=0
/operatorActiveCount=0
/operatorHaltCount=30327906
/operatorStartCount=30327906
/operatorTasksPerQuery=20.47862796548711
/queriesPerSecond=71.12621217286329
/queryDoneCount=1480954
/queryErrorCount=0
/queryStartCount=1480954