[
https://issues.apache.org/jira/browse/JENA-1337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16013848#comment-16013848
]
Gilles Habran edited comment on JENA-1337 at 5/17/17 10:54 AM:
---------------------------------------------------------------
Hi,
you are probably right, they are too big for the reasoner and thanks for info
regarding the reasoners.
The end goal was to be able to create an inferred model in Jena and use this
model in a SHACL implementation to be validated. I now create my inferred model
with SPARQL queries and I don't have any problem in the validation since the
reasoner is not called anymore.
This issue can be closed.
Thank you.
was (Author: gillesh):
Hi,
you are probably right, they are too big for the reasoner and thanks for info
regarding the reasoners.
The end goal was to be able to create an inferred model in Jena and use this
model in a SHACL implementation to be validated. I now create my inferred model
with SPARQL queries and I don't have any problem in the validation since the
reasoner is not called anymore.
Thank you.
> 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
>
> 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)