如何检查SPARQL查询是Java中的查询还是更新?

如何检查SPARQL查询是Java中的查询还是更新?,java,sparql,rdf4j,Java,Sparql,Rdf4j,我需要在Java应用程序中解析SPARQL和SPARQL更新查询。我试图通过使用rdf4j库来实现这一点。此库提供了解析查询的可能性(例如QueryParserUtil.parseQuery(…)或SyntaxTreeBuilder.parseQuery(…)以及解析更新的可能性(例如QueryParserUtil.parseUpdate(…)或SyntaxTreeBuilder.parseUpdateSequence(…)。但是没有一种方法可以同时解析这两个函数。因此,我需要弄清楚查询字符串是

我需要在Java应用程序中解析SPARQL和SPARQL更新查询。我试图通过使用rdf4j库来实现这一点。此库提供了解析查询的可能性(例如QueryParserUtil.parseQuery(…)或SyntaxTreeBuilder.parseQuery(…)以及解析更新的可能性(例如QueryParserUtil.parseUpdate(…)或SyntaxTreeBuilder.parseUpdateSequence(…)。但是没有一种方法可以同时解析这两个函数。因此,我需要弄清楚查询字符串是表示查询还是表示更新

将更新字符串应用于parseQuery()方法时,将引发ParseException。反之亦然。当然,如果抛出异常,总是可以尝试其他方法。但那将是一种糟糕的编程风格

rdf4j库中是否有一种方法可用于检查queryString是表示更新还是表示简单查询

如果没有,还有其他解析更新和查询的解决方案吗?

您可以用于此目的。它解析字符串,并为您提供一个
parsedoOperation
对象,该对象有两个子类型:
ParsedUpdate
ParsedQuery
。然后,您可以执行一个简单的
instanceof
检查:

String str=“…”;
ParsedOperation=QueryParserUtil.parseOperation(QueryLanguage.SPARQL,str,null);
if(ParsedQuery的操作实例){
//这是一个疑问
}否则{
//这是一个更新
}