use of org.eclipse.rdf4j.query.parser.ParsedTupleQuery in project rdf4j by eclipse.
the class SPARQLParserTest method testParsedTupleQueryRootNode.
@Test
public void testParsedTupleQueryRootNode() throws Exception {
StringBuilder qb = new StringBuilder();
qb.append("SELECT * {?a <foo:bar> \"test\"}");
ParsedTupleQuery q = (ParsedTupleQuery) parser.parseQuery(qb.toString(), null);
TupleExpr te = q.getTupleExpr();
assertNotNull(te);
assertTrue(te instanceof Projection);
assertNull(te.getParentNode());
}
use of org.eclipse.rdf4j.query.parser.ParsedTupleQuery in project rdf4j by eclipse.
the class SPARQLParser method parseQuery.
@Override
public ParsedQuery parseQuery(String queryStr, String baseURI) throws MalformedQueryException {
try {
ASTQueryContainer qc = SyntaxTreeBuilder.parseQuery(queryStr);
StringEscapesProcessor.process(qc);
BaseDeclProcessor.process(qc, baseURI);
Map<String, String> prefixes = PrefixDeclProcessor.process(qc);
WildcardProjectionProcessor.process(qc);
BlankNodeVarProcessor.process(qc);
if (qc.containsQuery()) {
// handle query operation
TupleExpr tupleExpr = buildQueryModel(qc);
ParsedQuery query;
ASTQuery queryNode = qc.getQuery();
if (queryNode instanceof ASTSelectQuery) {
query = new ParsedTupleQuery(queryStr, tupleExpr);
} else if (queryNode instanceof ASTConstructQuery) {
query = new ParsedGraphQuery(queryStr, tupleExpr, prefixes);
} else if (queryNode instanceof ASTAskQuery) {
query = new ParsedBooleanQuery(queryStr, tupleExpr);
} else if (queryNode instanceof ASTDescribeQuery) {
query = new ParsedDescribeQuery(queryStr, tupleExpr, prefixes);
} else {
throw new RuntimeException("Unexpected query type: " + queryNode.getClass());
}
// Handle dataset declaration
Dataset dataset = DatasetDeclProcessor.process(qc);
if (dataset != null) {
query.setDataset(dataset);
}
return query;
} else {
throw new IncompatibleOperationException("supplied string is not a query operation");
}
} catch (ParseException e) {
throw new MalformedQueryException(e.getMessage(), e);
} catch (TokenMgrError e) {
throw new MalformedQueryException(e.getMessage(), e);
}
}
use of org.eclipse.rdf4j.query.parser.ParsedTupleQuery in project rdf4j by eclipse.
the class QueryBuilderFactory method select.
/**
* Create a QueryBuilder for creating a select query
*
* @param theProjectionVars
* the list of elements in the projection of the query
* @return a select query builder
*/
public static QueryBuilder<ParsedTupleQuery> select(String... theProjectionVars) {
QueryBuilder<ParsedTupleQuery> aBuilder = new AbstractQueryBuilder<ParsedTupleQuery>(new ParsedTupleQuery());
aBuilder.addProjectionVar(theProjectionVars);
return aBuilder;
}
use of org.eclipse.rdf4j.query.parser.ParsedTupleQuery in project rdf4j by eclipse.
the class SeRQLParser method parseQuery.
public ParsedQuery parseQuery(String queryStr, String baseURI) throws MalformedQueryException {
try {
ASTQueryContainer qc = SyntaxTreeBuilder.parseQuery(queryStr);
// Replace deprecated NULL nodes with semantically equivalent
// alternatives
NullProcessor.process(qc);
StringEscapesProcessor.process(qc);
Map<String, String> namespaces = NamespaceDeclProcessor.process(qc);
ProjectionProcessor.process(qc);
qc.jjtAccept(new ProjectionAliasProcessor(), null);
qc.jjtAccept(new AnonymousVarGenerator(), null);
// TODO: check use of unbound variables?
TupleExpr tupleExpr = QueryModelBuilder.buildQueryModel(qc, SimpleValueFactory.getInstance());
ASTQuery queryNode = qc.getQuery();
ParsedQuery query;
if (queryNode instanceof ASTTupleQuery) {
query = new ParsedTupleQuery(tupleExpr);
} else if (queryNode instanceof ASTGraphQuery) {
query = new ParsedGraphQuery(tupleExpr, namespaces);
} else {
throw new RuntimeException("Unexpected query type: " + queryNode.getClass());
}
return query;
} catch (ParseException e) {
throw new MalformedQueryException(e.getMessage(), e);
} catch (TokenMgrError e) {
throw new MalformedQueryException(e.getMessage(), e);
} catch (VisitorException e) {
throw new MalformedQueryException(e.getMessage(), e);
}
}
use of org.eclipse.rdf4j.query.parser.ParsedTupleQuery in project rdf4j by eclipse.
the class SPARQLParserTest method testParseIntegerObjectValue.
@Test
public void testParseIntegerObjectValue() throws Exception {
// test that the parser correctly parses the object value as an integer, instead of as a decimal.
String query = "select ?Concept where { ?Concept a 1. ?Concept2 a 1. } ";
ParsedTupleQuery q = (ParsedTupleQuery) parser.parseQuery(query, null);
// all we're verifying is that the query is parsed without error. If it doesn't parse as integer but as a decimal, the
// parser will fail, because the statement pattern doesn't end with a full-stop.
assertNotNull(q);
}
Aggregations