[ 
https://issues.apache.org/jira/browse/JENA-1337?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Reynolds resolved JENA-1337.
---------------------------------
    Resolution: Won't Fix
      Assignee: Dave Reynolds

Thanks for confirming.

Scalability limitations of reasoners is a known issue. Though some 
modifications to the presenting code (as discussed in the Jira) might mitigate 
the effects.

> Trying to write an infered model to a String or a file never ends
> -----------------------------------------------------------------
>
>                 Key: JENA-1337
>                 URL: https://issues.apache.org/jira/browse/JENA-1337
>             Project: Apache Jena
>          Issue Type: Bug
>    Affects Versions: Jena 3.1.1, Jena 3.2.0
>            Reporter: Gilles Habran
>            Assignee: Dave Reynolds
>
> Good morning,
> I am trying to print an infered model but it never ends.
> The ontologies I am using are huge and can be found here : 
> http://publications.europa.eu/mdr/cdm/index.html
> I tried with an OWL Reasoner or a Micro OWL Reasoner.
> I created a small project with a Main class, a model and the ontologies here 
> to show the problem : https://gitlab.com/gillouche/jena-perf
> The thread dump shows that kind of stacktrace:
> {code:java}
> "main" #1 prio=5 os_prio=0 tid=0x00007f22f403f000 nid=0x3330 runnable 
> [0x00007f22fbc92000]
>    java.lang.Thread.State: RUNNABLE
>       at java.util.LinkedList.remove(LinkedList.java:364)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine.detach(LPBRuleEngine.java:233)
>       - locked <0x00000005cfe72990> (a 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPInterpreter.close(LPInterpreter.java:168)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.setComplete(Generator.java:160)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.postCompletionCheckScan(Generator.java:371)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.checkForCompletions(Generator.java:313)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine.pump(LPBRuleEngine.java:364)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.moveForward(LPTopGoalIterator.java:107)
>       - locked <0x00000005d58aa060> (a 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator)
>       - locked <0x00000005cfe72990> (a 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.hasNext(LPTopGoalIterator.java:223)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>       at 
> org.apache.jena.util.iterator.Map1Iterator.hasNext(Map1Iterator.java:49)
>       at 
> org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
>       at 
> org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
>       at org.apache.jena.graph.GraphUtil.listSubjects(GraphUtil.java:50)
>       at 
> org.apache.jena.riot.writer.RDFJSONWriter.output(RDFJSONWriter.java:76)
>       at 
> org.apache.jena.riot.writer.RDFJSONWriter.output(RDFJSONWriter.java:51)
>       at 
> org.apache.jena.riot.writer.RDFJSONWriter.write(RDFJSONWriter.java:63)
>       at 
> org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:74)
>       at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:358)
>       at Main.main(Main.java:72)
> {code}
> In a Java Mission Control, the LinkedList.remove() hot methods take 80%.
> If I don't infer the model, I can print it without any problem.
> Note : I have another project using SHACL to validate an infered model 
> against shapes. A simple model can be validated with SHACL but an infered 
> model cannot be. The stacktrace of the thread dumps block with the same code 
> (LPInterpreter.close() then LinkedList.remove()).
> Here is the stacktrace from a thread dump:
> {code:java}"http-nio-auto-1-exec-1" #18 daemon prio=5 os_prio=0 
> tid=0x00007f09592c4000 nid=0x6537 runnable [0x00007f0934e79000]
>    java.lang.Thread.State: RUNNABLE
>       at java.util.LinkedList.remove(LinkedList.java:364)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine.detach(LPBRuleEngine.java:233)
>       - locked <0x00000005f3da67e0> (a 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPInterpreter.close(LPInterpreter.java:168)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.setComplete(Generator.java:160)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.postCompletionCheckScan(Generator.java:371)
>       at 
> org.apache.jena.reasoner.rulesys.impl.Generator.checkForCompletions(Generator.java:313)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine.pump(LPBRuleEngine.java:364)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.moveForward(LPTopGoalIterator.java:107)
>       - locked <0x00000005f890e638> (a 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator)
>       - locked <0x00000005f3da67e0> (a 
> org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine)
>       at 
> org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.hasNext(LPTopGoalIterator.java:223)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>       at 
> org.apache.jena.util.iterator.Map1Iterator.hasNext(Map1Iterator.java:49)
>       at 
> org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>       at 
> org.topbraid.spin.util.JenaUtil.addTransitiveSubjects(JenaUtil.java:171)
>       at 
> org.topbraid.spin.util.JenaUtil.addTransitiveSubjects(JenaUtil.java:178)
>       at 
> org.topbraid.spin.util.JenaUtil.getAllTransitiveSubjects(JenaUtil.java:240)
>       at 
> org.topbraid.spin.util.JenaUtil.getAllTransitiveSubjects(JenaUtil.java:435)
>       at org.topbraid.spin.util.JenaUtil.getAllSubClasses(JenaUtil.java:377)
>       at org.topbraid.spin.util.JenaUtil.getAllInstances(JenaUtil.java:359)
>       at org.topbraid.shacl.util.SHACLUtil.getTargetNodes(SHACLUtil.java:536)
>       at 
> org.topbraid.shacl.validation.ValidationEngine.validateAll(ValidationEngine.java:307)
>       at 
> org.topbraid.shacl.validation.ValidationUtil.validateModel(ValidationUtil.java:65)
>       at 
> eu.europa.ec.opoce.cellar.validation.impl.TopBraidShaclValidationService.validate(TopBraidShaclValidationService.java:25)
>       at 
> eu.europa.ec.opoce.cellar.validation.controller.ValidationController.validate(ValidationController.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at 
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
>       at 
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
>       at 
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
>       at 
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
>       at 
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
>       at 
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
>       at 
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
>       at 
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
>       at 
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
>       at 
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
>       at 
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
>       at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
>       at 
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
>       at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
>       at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
>       at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
>       at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>       - locked <0x00000005eddcf178> (a 
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>       at java.lang.Thread.run(Thread.java:748){code}
> Would you have any idea what's happening? 
> Thank you.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to