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)
    ...

Reply via email to