Search in sources :

Example 1 with ParsedDescribeQuery

use of org.eclipse.rdf4j.query.parser.ParsedDescribeQuery 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);
    }
}
Also used : ASTAskQuery(org.eclipse.rdf4j.query.parser.sparql.ast.ASTAskQuery) ParsedDescribeQuery(org.eclipse.rdf4j.query.parser.ParsedDescribeQuery) IncompatibleOperationException(org.eclipse.rdf4j.query.IncompatibleOperationException) ParsedQuery(org.eclipse.rdf4j.query.parser.ParsedQuery) Dataset(org.eclipse.rdf4j.query.Dataset) ParsedGraphQuery(org.eclipse.rdf4j.query.parser.ParsedGraphQuery) ASTQueryContainer(org.eclipse.rdf4j.query.parser.sparql.ast.ASTQueryContainer) TokenMgrError(org.eclipse.rdf4j.query.parser.sparql.ast.TokenMgrError) ASTDescribeQuery(org.eclipse.rdf4j.query.parser.sparql.ast.ASTDescribeQuery) TupleExpr(org.eclipse.rdf4j.query.algebra.TupleExpr) ASTQuery(org.eclipse.rdf4j.query.parser.sparql.ast.ASTQuery) ParsedBooleanQuery(org.eclipse.rdf4j.query.parser.ParsedBooleanQuery) MalformedQueryException(org.eclipse.rdf4j.query.MalformedQueryException) ASTConstructQuery(org.eclipse.rdf4j.query.parser.sparql.ast.ASTConstructQuery) ASTSelectQuery(org.eclipse.rdf4j.query.parser.sparql.ast.ASTSelectQuery) ParseException(org.eclipse.rdf4j.query.parser.sparql.ast.ParseException) ParsedTupleQuery(org.eclipse.rdf4j.query.parser.ParsedTupleQuery)

Example 2 with ParsedDescribeQuery

use of org.eclipse.rdf4j.query.parser.ParsedDescribeQuery in project rdf4j by eclipse.

the class QueryBuilderFactory method describe.

/**
 * Create a QueryBuilder for creating a describe query
 *
 * @param theVars
 *        the variables to be described
 * @param theValues
 *        the specific bound URI values to be described
 * @return a describe query builder
 */
public static QueryBuilder<ParsedGraphQuery> describe(String[] theVars, Resource... theValues) {
    QueryBuilder<ParsedGraphQuery> aBuilder = new AbstractQueryBuilder<ParsedGraphQuery>(new ParsedDescribeQuery());
    aBuilder.reduced();
    aBuilder.addProjectionVar("descr_subj", "descr_pred", "descr_obj");
    GroupBuilder<?, ?> aGroup = aBuilder.group();
    if (theVars != null) {
        for (String aVar : theVars) {
            Var aVarObj = new Var(aVar);
            aVarObj.setAnonymous(true);
            aGroup.filter().or(new SameTerm(aVarObj, new Var("descr_subj")), new SameTerm(aVarObj, new Var("descr_obj")));
        }
    }
    if (theValues != null) {
        for (Resource aVar : theValues) {
            Var aSubjVar = new Var("descr_subj");
            aSubjVar.setAnonymous(true);
            Var aObjVar = new Var("descr_obj");
            aObjVar.setAnonymous(true);
            aGroup.filter().or(new SameTerm(new ValueConstant(aVar), aSubjVar), new SameTerm(new ValueConstant(aVar), aObjVar));
        }
    }
    aGroup.atom("descr_subj", "descr_pred", "descr_obj");
    return aBuilder;
}
Also used : ParsedDescribeQuery(org.eclipse.rdf4j.query.parser.ParsedDescribeQuery) Var(org.eclipse.rdf4j.query.algebra.Var) ParsedGraphQuery(org.eclipse.rdf4j.query.parser.ParsedGraphQuery) SameTerm(org.eclipse.rdf4j.query.algebra.SameTerm) ValueConstant(org.eclipse.rdf4j.query.algebra.ValueConstant) Resource(org.eclipse.rdf4j.model.Resource)

Aggregations

ParsedDescribeQuery (org.eclipse.rdf4j.query.parser.ParsedDescribeQuery)2 ParsedGraphQuery (org.eclipse.rdf4j.query.parser.ParsedGraphQuery)2 Resource (org.eclipse.rdf4j.model.Resource)1 Dataset (org.eclipse.rdf4j.query.Dataset)1 IncompatibleOperationException (org.eclipse.rdf4j.query.IncompatibleOperationException)1 MalformedQueryException (org.eclipse.rdf4j.query.MalformedQueryException)1 SameTerm (org.eclipse.rdf4j.query.algebra.SameTerm)1 TupleExpr (org.eclipse.rdf4j.query.algebra.TupleExpr)1 ValueConstant (org.eclipse.rdf4j.query.algebra.ValueConstant)1 Var (org.eclipse.rdf4j.query.algebra.Var)1 ParsedBooleanQuery (org.eclipse.rdf4j.query.parser.ParsedBooleanQuery)1 ParsedQuery (org.eclipse.rdf4j.query.parser.ParsedQuery)1 ParsedTupleQuery (org.eclipse.rdf4j.query.parser.ParsedTupleQuery)1 ASTAskQuery (org.eclipse.rdf4j.query.parser.sparql.ast.ASTAskQuery)1 ASTConstructQuery (org.eclipse.rdf4j.query.parser.sparql.ast.ASTConstructQuery)1 ASTDescribeQuery (org.eclipse.rdf4j.query.parser.sparql.ast.ASTDescribeQuery)1 ASTQuery (org.eclipse.rdf4j.query.parser.sparql.ast.ASTQuery)1 ASTQueryContainer (org.eclipse.rdf4j.query.parser.sparql.ast.ASTQueryContainer)1 ASTSelectQuery (org.eclipse.rdf4j.query.parser.sparql.ast.ASTSelectQuery)1 ParseException (org.eclipse.rdf4j.query.parser.sparql.ast.ParseException)1