Olivier Corby, INRIA, June 2008.
We present our SPARQL abstract syntax query language.
See also:
Corese
import fr.inria.acacia.corese.triple.parser.*
Create a triple:
Variable x = Variable.create("?x");
Variable p = Variable.create("?p");
Variable y = Variable.create("?y");
Triple t1 = Triple.create(x, p, y);
Create a filter:
Term filter = Term.create("!=", x, Constant.create("rdf:nil"));
Term f2 = Term.function("isURI", x);
Triple t2 = Triple.create(filter);
Create patterns:
BasicGraphPattern pat = BasicGraphPattern.create();
pat.add(t1);
pat.add(t2);
Variable g = Variable.create("?g");
// graph pattern
Source gpat = Source.create(g, pat);
// union
Or or = Or.create(pat, pat);
// optional
Option opt = Option.create(pat);
Create an Abstract Syntax Tree:
ASTQuery ast = ASTQuery.create(gpat);
Select, distinct:
ast.setSelect(p);
ast.setSelect(g);
Variable cc = Variable.create("?count");
ast.setSelect(cc, Term.function("count", p));
ast.setSelectAll(true);
ast.setDistinct(true);
Describe, construct:
ast.setDescribe(x); BasicGraphPattern cons = BasicGraphPattern.create(t1); ast.setConstruct(cons);
Order by and group by:
ast.setGroup(g); ast.setSort(cc, true);
Query using the AST:
IEngine engine = factory.newInstance(); IResults res = engine.SPARQLQuery(ast);