cambridge-cares / TheWorldAvatar

A knowledge-graph-based digital twin of the world.
https://theworldavatar.io/
MIT License
84 stars 25 forks source link

FIA: Blank nodes kill all queries #564

Open sm453 opened 1 year ago

sm453 commented 1 year ago

If there is any blazegraph namespace (even if unrelated to any Feature Info Agent query) that contains blank nodes, all requests to the FIA seem to fail, with the container log showing an exception complaining about blank nodes.

Steps to reproduce: Take any working example of a query where the FIA returns valid results, create a new blazegraph namespace, upload this file into it: https://github.com/cambridge-cares/OM/blob/master/om-2.0.rdf, restart the FIA, and retry the query.

sm453 commented 1 year ago

I am no longer able to reproduce this.

sm453 commented 1 year ago

Reopening this - it is definitely an issue, but I'm still unsure as to how to reliably reproduce it... For the moment I believe starting a fresh stack that includes the FIA and uploading triples (through the uploader) with blank nodes should reproduce it, although sufficient fiddling around (deleting/recreating the relevant namespace and restarting the FIA) seems to make it go away...

sm453 commented 1 year ago

2023-03-15 15:52:20.166 (FeatureInfoAgent)[http-nio-8080-exec-10] ERROR - Exception occurred when determining class match! org.eclipse.rdf4j.query.QueryEvaluationException: java.lang.IllegalArgumentException: BNode references not supported by SPARQL enpoints at org.eclipse.rdf4j.query.impl.QueueCursor.convert(QueueCursor.java:58) ~[rdf4j-query-3.7.7.jar:3.7.7] at org.eclipse.rdf4j.federated.evaluation.concurrent.FedXQueueCursor.convert(FedXQueueCursor.java:55) ~[rdf4j-tools-federion-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.federated.evaluation.concurrent.FedXQueueCursor.convert(FedXQueueCursor.java:28) ~[rdf4j-tools-federion-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.common.iteration.QueueIteration.checkException(QueueIteration.java:165) ~[rdf4j-util-3.7.7.jar:3.7.7 at org.eclipse.rdf4j.common.iteration.QueueIteration.handleClose(QueueIteration.java:155) ~[rdf4j-util-3.7.7.jar:3.7.7] at org.eclipse.rdf4j.federated.evaluation.concurrent.FedXQueueCursor.handleClose(FedXQueueCursor.java:82) ~[rdf4j-tools-feration-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration.close(AbstractCloseableIteration.java:63) ~[rdf4j-util-3.7.jar:3.7.7] at org.eclipse.rdf4j.common.iteration.QueueIteration.checkException(QueueIteration.java:162) ~[rdf4j-util-3.7.7.jar:3.7.7 at org.eclipse.rdf4j.common.iteration.QueueIteration.getNextElement(QueueIteration.java:137) ~[rdf4j-util-3.7.7.jar:3.7.7 at org.eclipse.rdf4j.common.iteration.LookAheadIteration.lookAhead(LookAheadIteration.java:81) ~[rdf4j-util-3.7.7.jar:3.7] at org.eclipse.rdf4j.common.iteration.LookAheadIteration.hasNext(LookAheadIteration.java:49) ~[rdf4j-util-3.7.7.jar:3.7.7 at org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase.getNextElement(ParallelExecutorBase.java:122) ~df4j-tools-federation-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.common.iteration.LookAheadIteration.lookAhead(LookAheadIteration.java:81) ~[rdf4j-util-3.7.7.jar:3.7] at org.eclipse.rdf4j.common.iteration.LookAheadIteration.hasNext(LookAheadIteration.java:49) ~[rdf4j-util-3.7.7.jar:3.7.7 at org.eclipse.rdf4j.common.iteration.ConvertingIteration.hasNext(ConvertingIteration.java:62) ~[rdf4j-util-3.7.7.jar:3.7] at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63) ~[rdf4j-util-3.7.7.jar:3.7.7] at org.eclipse.rdf4j.common.iteration.FilterIteration.findNextElement(FilterIteration.java:74) ~[rdf4j-util-3.7.7.jar:3.7] at org.eclipse.rdf4j.common.iteration.FilterIteration.hasNext(FilterIteration.java:45) ~[rdf4j-util-3.7.7.jar:3.7.7] at org.eclipse.rdf4j.federated.evaluation.iterator.StopRemainingExecutionsOnCloseIteration.hasNext(StopRemainingExecutionnCloseIteration.java:45) ~[rdf4j-tools-federation-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63) ~[rdf4j-util-3.7.7.jar:3.7.7] at org.eclipse.rdf4j.sail.helpers.SailBaseIteration.hasNext(SailBaseIteration.java:41) ~[rdf4j-sail-api-3.1.0.jar:3.1.0+290d1] at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63) ~[rdf4j-util-3.7.7.jar:3.7.7] at uk.ac.cam.cares.jps.base.query.RemoteStoreClient.executeFederatedQuery(RemoteStoreClient.java:744) ~[jps-base-lib-1.30.jar:?] at com.cmclinnovations.featureinfo.kg.ClassHandler.runClassQuery(ClassHandler.java:181) ~[classes/:?] at com.cmclinnovations.featureinfo.kg.ClassHandler.getClasses(ClassHandler.java:146) ~[classes/:?] at com.cmclinnovations.featureinfo.kg.ClassHandler.getClassMatch(ClassHandler.java:111) ~[classes/:?] at com.cmclinnovations.featureinfo.FeatureInfoAgent.getClass(FeatureInfoAgent.java:318) [classes/:?] at com.cmclinnovations.featureinfo.FeatureInfoAgent.runLogic(FeatureInfoAgent.java:258) [classes/:?] at com.cmclinnovations.featureinfo.FeatureInfoAgent.getRoute(FeatureInfoAgent.java:195) [classes/:?] at com.cmclinnovations.featureinfo.FeatureInfoAgent.doGet(FeatureInfoAgent.java:162) [classes/:?] at javax.servlet.http.HttpServlet.service(HttpServlet.java:670) [servlet-api.jar:4.0.FR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) [servlet-api.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) [catalina.jar:9.0.69 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [catalina.jar:9.0.69] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [catalina.jar:9.0.69 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [catalina.jar:9.0.69] at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [log4j-web-2.17.1.jar:2.17.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [catalina.jar:9.0.69 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [catalina.jar:9.0.69] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) [catalina.jar:9.0.69] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [catalina.jar:9.0.69] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.69] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) [catalina.jar:9.0.69] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.69] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) [catalina.jar:9.0.69] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [catalina.jar:9.0.69] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) [catalina.jar:9.0.69] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) [tomcat-coyote.jar:9.0.69] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.69] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) [tomcat-coyote.jar:9.0.69] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) [tomcat-coyote.jar:9.0.69] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-util.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-util.jar:9.0.69] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.69] at java.lang.Thread.run(Thread.java:833) [?:?] Caused by: java.lang.IllegalArgumentException: BNode references not supported by SPARQL end-points at org.eclipse.rdf4j.repository.sparql.query.QueryStringUtil.appendValueAsString(QueryStringUtil.java:154) ~[rdf4j-reposiry-sparql-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.repository.sparql.federation.RepositoryFederatedService.buildVALUESClause(RepositoryFederatedServiceava:600) ~[rdf4j-repository-sparql-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.repository.sparql.federation.RepositoryFederatedService.evaluateInternal(RepositoryFederatedService.va:354) ~[rdf4j-repository-sparql-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.repository.sparql.federation.RepositoryFederatedService.evaluate(RepositoryFederatedService.java:300~[rdf4j-repository-sparql-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.federated.evaluation.FederationEvalStrategy.evaluateService(FederationEvalStrategy.java:622) ~[rdf4jools-federation-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.federated.evaluation.join.ParallelServiceJoinTask.performTask(ParallelServiceJoinTask.java:49) ~[rdf-tools-federation-3.1.0.jar:3.1.0+2a190d1] at org.eclipse.rdf4j.federated.evaluation.concurrent.ControlledWorkerScheduler$WorkerRunnable.run(ControlledWorkerSchedul.java:205) ~[rdf4j-tools-federation-3.1.0.jar:3.1.0+2a190d1] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] ... 1 more