use of org.eclipse.rdf4j.query.parser.sparql.ast.ASTModify in project rdf4j by eclipse.
the class DatasetDeclProcessor method process.
/**
* Extracts a SPARQL {@link Dataset} from an ASTQueryContainer, if one is contained. Returns null
* otherwise.
*
* @param qc
* The query model to resolve relative URIs in.
* @throws MalformedQueryException
* If DatasetClause does not contain a valid URI.
*/
public static Dataset process(ASTOperationContainer qc) throws MalformedQueryException {
SimpleDataset dataset = null;
ASTOperation op = qc.getOperation();
if (op != null) {
List<ASTDatasetClause> datasetClauses = op.getDatasetClauseList();
if (!datasetClauses.isEmpty()) {
dataset = new SimpleDataset();
for (ASTDatasetClause dc : datasetClauses) {
ASTIRI astIri = dc.jjtGetChild(ASTIRI.class);
try {
IRI uri = SESAME.NIL;
if (astIri != null) {
uri = SimpleValueFactory.getInstance().createIRI(astIri.getValue());
}
boolean withClause = false;
if (op instanceof ASTModify) {
if (dc.equals(((ASTModify) op).getWithClause())) {
withClause = true;
dataset.setDefaultInsertGraph(uri);
dataset.addDefaultRemoveGraph(uri);
}
}
// clauses.
if (!withClause || datasetClauses.size() == 1) {
if (dc.isNamed()) {
dataset.addNamedGraph(uri);
} else {
dataset.addDefaultGraph(uri);
}
}
} catch (IllegalArgumentException e) {
throw new MalformedQueryException(e.getMessage(), e);
}
}
}
}
return dataset;
}
use of org.eclipse.rdf4j.query.parser.sparql.ast.ASTModify in project rdf4j by eclipse.
the class UpdateExprBuilder method visit.
@Override
public Modify visit(ASTModify node, Object data) throws VisitorException {
ASTWhereClause whereClause = node.getWhereClause();
TupleExpr where = null;
if (whereClause != null) {
where = (TupleExpr) whereClause.jjtAccept(this, data);
}
TupleExpr delete = null;
ASTDeleteClause deleteNode = node.getDeleteClause();
if (deleteNode != null) {
delete = (TupleExpr) deleteNode.jjtAccept(this, data);
}
TupleExpr insert = null;
ASTInsertClause insertNode = node.getInsertClause();
if (insertNode != null) {
insert = (TupleExpr) insertNode.jjtAccept(this, data);
}
Modify modifyExpr = new Modify(delete, insert, where);
return modifyExpr;
}
Aggregations