Hello, We are currently working on TDB data migrations. These migrations imply massive writing operations using SPARQL update queries passed through UpdateAction.parseExecute(String updateString, Model model)
To improve migrations runtime duration, we decided to group several "unit" update queries per transaction (please see the "unit" update query sample here below.) We noted that when the "unit" update queries group size passes a threshold (about 250 "unit" updates), we get the stack overflow errors (please see the corresponding stacktrace here below.) Do I do something wrong? Are there recommendations about some limits? Thank you in advance for your help. Best regards, Laurent "Unit" update query sample: DELETE { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?annotationType ; <http://company.com/model/updated> ?annotationUpdatedTime . } INSERT { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Annotation> ; <http://company.com/model/updated> "2017-02-17T15:49:52.705Z"^^< http://www.w3.org/2001/XMLSchema#dateTime> . } WHERE { OPTIONAL { < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?annotationType . } OPTIONAL { < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> < http://company.com/model/updated> ?annotationUpdatedTime . } } ; DELETE { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://company.com/model/modifiedBy> ?annotationUser . } INSERT { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://company.com/model/modifiedBy> < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> . } WHERE { OPTIONAL { < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> < http://company.com/model/modifiedBy> ?annotationUser . } } ; DELETE { < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?userType ; <http://company.com/model/loginName> ?userLoginName ; <http://company.com/model/uid> ?userUid . } INSERT { < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/User> ; <http://company.com/model/loginName> "*******" ; <http://company.com/model/uid> "0684d3b0-dba8-43c8-9177-eb5892375032" . } WHERE { OPTIONAL { < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?userType . } OPTIONAL { < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> < http://company.com/model/loginName> ?userLoginName . } OPTIONAL { < http://company.com/data/User/Default/0684d3b0-dba8-43c8-9177-eb5892375032> < http://company.com/model/uid> ?userUid . } } ; DELETE { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://company.com/model/hasTarget> ?target . } INSERT { <http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> <http://company.com/model/hasTarget> < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> . } WHERE { OPTIONAL { < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> < http://company.com/model/hasTarget> ?target . } } ; DELETE { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?imageType ; <http://company.com/model/sopInstanceUid> ?imageSopInstanceUid . } INSERT { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Image> ; <http://company.com/model/sopInstanceUid> "1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503" . } WHERE { OPTIONAL { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?imageType . } OPTIONAL { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://company.com/model/sopInstanceUid> ?imageSopInstanceUid . } } ; DELETE { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://company.com/model/isImageOf> ?imageSeries . } INSERT { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://company.com/model/isImageOf> < http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> . } WHERE { OPTIONAL { < http://company.com/data/Image/1.2.840.114619.2.327.3.2474926736.930.1452584764.259.503> <http://company.com/model/isImageOf> ?imageSeries . } } ; DELETE { <http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?seriesType ; <http://company.com/model/instanceUid> ?seriesInstanceUid ; <http://company.com/model/internalId> ?seriesInternalId . } INSERT { <http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Series> ; <http://company.com/model/instanceUid> "1.2.840.113619.2.427.3.2474917736.930.1453583764.266" ; <http://company.com/model/internalId> "TMAACT.sileabeth.d9ea.eliSCT.391268.1" . } WHERE { OPTIONAL { < http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?seriesType . } OPTIONAL { < http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://company.com/model/instanceUid> ?seriesInstanceUid . } OPTIONAL { < http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://company.com/model/internalId> ?seriesInternalId . } } ; DELETE { <http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://company.com/model/isSeriesOf> ?seriesStudy . } INSERT { <http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://company.com/model/isSeriesOf> < http://company.com/data/Study/1.2.840.113619.2.427.3.2474927796.930.1458583764.219> . } WHERE { OPTIONAL { < http://company.com/data/Series/TMAACT.sileabeth.d9ea.eliSCT.391268.1> < http://company.com/model/isSeriesOf> ?seriesStudy . } } ; DELETE { < http://company.com/data/Study/1.2.840.113619.2.427.3.2474927796.930.1458583764.219> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?studyType ; <http://company.com/model/instanceUid> ?studyInstanceUid . } INSERT { < http://company.com/data/Study/1.2.840.113619.2.427.3.2474927796.930.1458583764.219> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Study> ; <http://company.com/model/instanceUid> "1.2.840.113619.2.427.3.2474927796.930.1458583764.219" . } WHERE { OPTIONAL { < http://company.com/data/Study/1.2.840.113619.2.427.3.2474927796.930.1458583764.219> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?studyType . } OPTIONAL { < http://company.com/data/Study/1.2.840.113619.2.427.3.2474927796.930.1458583764.219> <http://company.com/model/instanceUid> ?studyInstanceUid . } } ; DELETE { ?calculation <http://company.com/model/isCalculationOf> < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> ; ?cp ?co . ?measure <http://company.com/model/isMeasureOf> ?calculation ; ?mp ?mo . ?measureValue <http://company.com/model/isMeasureValueOf> ?measure ; ?mvp ?mvo . } WHERE { ?calculation <http://company.com/model/isCalculationOf> < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> . OPTIONAL { ?calculation ?cp ?co . } OPTIONAL { ?measure <http://company.com/model/isMeasureOf> ?calculation . OPTIONAL { ?measure ?mp ?mo . } OPTIONAL { ?measureValue <http://company.com/model/isMeasureValueOf> ?measure . OPTIONAL { ?measureValue ?mvp ?mvo . } } } } ; INSERT DATA { < http://company.com/data/Calculation/f4ed6c29-5d4d-4e3a-97d5-53a0b72e07b0> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Calculation> ; <http://company.com/model/isCalculationOf> < http://company.com/data/Annotation/ffa19568-9300-477f-4d5c-c2e715babac2> . } ; INSERT DATA { <http://company.com/data/Measure/6f46bf2a-a7b2-4b0a-add0-685dcd84de21> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/Measure/Distance> ; <http://company.com/model/isMeasureOf> < http://company.com/data/Calculation/f4ed6c29-5d4d-4e3a-97d5-53a0b72e07b0> . } ; INSERT DATA { < http://company.com/data/MeasureValue/5223f3d1-e8da-422c-8466-a32df2111368> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://company.com/model/MeasureValue/Distance> ; <http://company.com/model/physicalQuantity> < http://company.com/model/PhysicalQuantity/Length> ; <http://company.com/model/isMaster> true ; <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "24.4"^^< http://www.w3.org/2001/XMLSchema#float> ; <http://company.com/model/unit> < http://company.com/model/Unit/Millimeter> ; <http://company.com/model/isMeasureValueOf> < http://company.com/data/Measure/6f46bf2a-a7b2-4b0a-add0-685dcd84de21> . } ; StackOverflowError stacktrace: org.apache.jena.query.QueryParseException: java.lang.StackOverflowError at org.apache.jena.sparql.lang.ParserSPARQL11Update._parse(ParserSPARQL11Update.java:79) at org.apache.jena.sparql.lang.ParserSPARQL11Update.parse$(ParserSPARQL11Update.java:40) at org.apache.jena.sparql.lang.UpdateParser.parse(UpdateParser.java:39) at org.apache.jena.update.UpdateFactory.make(UpdateFactory.java:87) at org.apache.jena.update.UpdateFactory.create(UpdateFactory.java:78) at org.apache.jena.update.UpdateFactory.create(UpdateFactory.java:56) at org.apache.jena.update.UpdateFactory.create(UpdateFactory.java:46) at org.apache.jena.update.UpdateAction.parseExecute(UpdateAction.java:136) at org.apache.jena.update.UpdateAction.parseExecute(UpdateAction.java:118) at org.apache.jena.update.UpdateAction.parseExecute(UpdateAction.java:109) at com.telemis.semantics.jena.JenaModelUpdate.execute(JenaModelUpdate.java:35) at com.telemis.semantics.jena.JenaRdfConnectivityTemplate.accessModel(JenaRdfConnectivityTemplate.java:299) at com.telemis.semantics.jena.JenaRdfConnectivityTemplate.update(JenaRdfConnectivityTemplate.java:509) at com.telemis.annotation.dao.jena.JenaTdbAnnotationDao.registerAnnotationList(JenaTdbAnnotationDao.java:125) ... 4 common frames omitted Caused by: org.apache.jena.ext.com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError at org.apache.jena.ext.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) at org.apache.jena.ext.com.google.common.cache.LocalCache.get(LocalCache.java:3937) at org.apache.jena.ext.com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739) at org.apache.jena.atlas.lib.cache.CacheGuava.getOrFill(CacheGuava.java:58) at org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.resolveSilentCache(IRIResolver.java:470) at org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.resolveSilent(IRIResolver.java:454) at org.apache.jena.sparql.lang.ParserBase.resolveIRI(ParserBase.java:259) at org.apache.jena.sparql.lang.ParserBase.resolveQuotedIRI(ParserBase.java:243) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.IRIREF(SPARQLParser11.java:4893) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.iri(SPARQLParser11.java:4836) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.GraphTerm(SPARQLParser11.java:3360) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.VarOrTerm(SPARQLParser11.java:3277) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.GraphNode(SPARQLParser11.java:3191) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Object(SPARQLParser11.java:2576) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.ObjectList(SPARQLParser11.java:2557) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.PropertyListNotEmpty(SPARQLParser11.java:2503) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.TriplesSameSubject(SPARQLParser11.java:2468) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.TriplesTemplate(SPARQLParser11.java:1619) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Quads(SPARQLParser11.java:1516) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.QuadPattern(SPARQLParser11.java:1479) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.InsertClause(SPARQLParser11.java:1385) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Modify(SPARQLParser11.java:1333) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update1(SPARQLParser11.java:1132) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1084) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1088) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1088) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1088) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1088) at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Update(SPARQLParser11.java:1088) ...