Search code examples
sparqlblazegraph

Blazegraph INSERT DATA crashes with NoSuchMethodError


In Blazegraph I attempted the following query:

INSERT DATA {
    <http://my.site/User/instances/1>
    :comment
    <http://my.site/Comment/instances/16>.
}

and it crashes with the following exception trace:

java.lang.NoSuchMethodError: com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.read()I
    at com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.checkSparqlStarSyntax(SPARQLStarUpdateDataBlockParser.java:107)
    at com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.parseValue(SPARQLStarUpdateDataBlockParser.java:100)
    at org.openrdf.rio.trig.TriGParser.parseGraph(TriGParser.java:158)
    at org.openrdf.repository.sail.helpers.SPARQLUpdateDataBlockParser.parseGraph(SPARQLUpdateDataBlockParser.java:87)
    at org.openrdf.rio.trig.TriGParser.parseStatement(TriGParser.java:128)
    at org.openrdf.rio.turtle.TurtleParser.parse(TurtleParser.java:214)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.doUnparsedQuadsDataBlock(UpdateExprBuilder.java:746)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.visit(UpdateExprBuilder.java:161)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.visit(UpdateExprBuilder.java:119)
    at com.bigdata.rdf.sail.sparql.ast.ASTInsertData.jjtAccept(ASTInsertData.java:23)
    at com.bigdata.rdf.sail.sparql.Bigdata2ASTSPARQLParser.parseUpdate2(Bigdata2ASTSPARQLParser.java:289)
    at com.bigdata.rdf.sail.BigdataSailRepositoryConnection.prepareNativeSPARQLUpdate(BigdataSailRepositoryConnection.java:278)
    at com.bigdata.rdf.sail.BigdataSailRepositoryConnection.prepareUpdate(BigdataSailRepositoryConnection.java:182)
    at org.openrdf.repository.base.RepositoryConnectionBase.prepareUpdate(RepositoryConnectionBase.java:180)

However normal DELETE INSERT WHERE queries work fine.

Any ideas how to solve?


Solution

  • Simply removed the following line in my build.gradle:

    compile('org.openrdf.sesame:sesame-runtime:2.8.6')
    

    and refreshed dependencies. You simply don't need to declare a Sesame dependency if you're using bigdata-core, since Sesame is already a sub-dependency of that.

    The reason for the crash was that bigdata-core relies on Sesame version 2.7.12 which was being superseded by my 2.8.6 declaration, which doesn't have an implementation of the method called, and hence the crash.

    Thanks to @AKSW for the guidance behind this solution.