Corese Corese

Abstract Query Language

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);