Discussion:
QueryParseException: java.lang.StackOverflowError
Laurent Rucquoy
2017-02-22 14:21:32 UTC
Permalink
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)
...
Rob Vesse
2017-02-22 14:44:51 UTC
Permalink
The standard SPARQL 1.1 parser strictly follows the grammar. The grammar is recursive which can lead to stack overflow errors when there are too many individual updates within the overall update request. If you use the ARQ Version of the parser it uses a slightly modified modified version of the grammar which avoids this issue.

Rob

On 22/02/2017 14:21, "Laurent Rucquoy" <***@telemis.com> wrote:

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)
...
Andy Seaborne
2017-02-22 16:12:39 UTC
Permalink
Now that standards are settled, we could consider making SPARQL 1.1 have
this change. It is not a language change, it is only a grammar change
(different grammar accepting and rejecting the same language).

The spec grammar is simple LL(1) - the rewrite uses a javacc feature and
so its not pure LL(1).

(if Java had tail recursion optimization this would not be necessary ...)

Andy
Post by Rob Vesse
The standard SPARQL 1.1 parser strictly follows the grammar. The grammar is recursive which can lead to stack overflow errors when there are too many individual updates within the overall update request. If you use the ARQ Version of the parser it uses a slightly modified modified version of the grammar which avoids this issue.
Rob
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
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> .
} ;
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
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)
...
Laurent Rucquoy
2017-03-01 12:22:55 UTC
Permalink
Thank you for your help.
I'll try the ARQ parser.
Sincerely,
Laurent
Post by Andy Seaborne
Now that standards are settled, we could consider making SPARQL 1.1 have
this change. It is not a language change, it is only a grammar change
(different grammar accepting and rejecting the same language).
The spec grammar is simple LL(1) - the rewrite uses a javacc feature and
so its not pure LL(1).
(if Java had tail recursion optimization this would not be necessary ...)
Andy
Post by Rob Vesse
The standard SPARQL 1.1 parser strictly follows the grammar. The grammar
is recursive which can lead to stack overflow errors when there are too
many individual updates within the overall update request. If you use the
ARQ Version of the parser it uses a slightly modified modified version of
the grammar which avoids this issue.
Rob
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
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.2474926
736.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.2474926
736.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.2474926
736.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.2474926
736.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.2474926
736.930.1452584764.259.503>
<http://company.com/model/sopInstanceUid> ?imageSopInstanceUid .
}
} ;
DELETE {
<
http://company.com/data/Image/1.2.840.114619.2.327.3.2474926
736.930.1452584764.259.503>
<http://company.com/model/isImageOf> ?imageSeries .
}
INSERT {
<
http://company.com/data/Image/1.2.840.114619.2.327.3.2474926
736.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.2474926
736.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.2474927
796.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.2474927
796.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.2474927
796.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.2474927
796.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.2474927
796.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> .
} ;
java.lang.StackOverflowError
at
org.apache.jena.sparql.lang.ParserSPARQL11Update._parse(Pars
erSPARQL11Update.java:79)
at
org.apache.jena.sparql.lang.ParserSPARQL11Update.parse$(Pars
erSPARQL11Update.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(UpdateActio
n.java:136)
at
org.apache.jena.update.UpdateAction.parseExecute(UpdateActio
n.java:118)
at
org.apache.jena.update.UpdateAction.parseExecute(UpdateActio
n.java:109)
at
com.telemis.semantics.jena.JenaModelUpdate.execute(JenaModel
Update.java:35)
at
com.telemis.semantics.jena.JenaRdfConnectivityTemplate.acces
sModel(JenaRdfConnectivityTemplate.java:299)
at
com.telemis.semantics.jena.JenaRdfConnectivityTemplate.updat
e(JenaRdfConnectivityTemplate.java:509)
at
com.telemis.annotation.dao.jena.JenaTdbAnnotationDao.registe
rAnnotationList(JenaTdbAnnotationDao.java:125)
... 4 common frames omitted
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(CacheGu
ava.java:58)
at
org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.re
solveSilentCache(IRIResolver.java:470)
at
org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.re
solveSilent(IRIResolver.java:454)
at
org.apache.jena.sparql.lang.ParserBase.resolveIRI(ParserBase
.java:259)
at
org.apache.jena.sparql.lang.ParserBase.resolveQuotedIRI(Pars
erBase.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(SPA
RQLParser11.java:4836)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.GraphTe
rm(SPARQLParser11.java:3360)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.VarOrTe
rm(SPARQLParser11.java:3277)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.GraphNo
de(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.ObjectL
ist(SPARQLParser11.java:2557)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Propert
yListNotEmpty(SPARQLParser11.java:2503)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Triples
SameSubject(SPARQLParser11.java:2468)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.Triples
Template(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.QuadPat
tern(SPARQLParser11.java:1479)
at
org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.InsertC
lause(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)
...
Loading...