Home
Categories
Dictionary
Download
Project Details
Changes Log
FAQ
License

FILTER and BIND content



Several methods allow to add FILTER or BIND content in SPARQL requests:

FILTER clause

It is possible to add a FILTER construct with the SPARQLRequest.addFilter() method. The returned Filter instance allows to add as many Expression elements as you want.

For example:
   SparqlRequest request = new SparqlRequest("sitac");
   request.addSelect("zone");
   request.addAdditionalVariable("index");
   request.addType("zone", "TaskZone");
   request.addPropertyValue("zone", "isTasked", true);
   request.addPropertyRef("zone", "hasIndex", "index");
      
   Filter filter = request.addFilter();
   VariableExpression varExpr = filter.createVariable("index");
   LiteralExpression literal = filter.createLiteral(5);
   ComparisonExpression comp = new ComparisonExpression(varExpr, ComparisonExpression.LESS, literal);
   filter.addExpression(comp);      
Will return the following SPARQL content:
   SELECT ?zone
   WHERE {
      ?zone rdf:type sitac:TaskZone .
      ?zone sitac:isTasked "true" .
      ?zone sitac:hasIndex ?index .
      FILTER (?index < 5)
   }

HAVING clause

It is possible to add a HAVING construct with the SPARQLRequest.addHaving() method. The returned Filter instance allows to add as many Expression elements as you want.

For example:
   SparqlRequest request = new SparqlRequest("sitac");
      
   SelectExpression selectExpr = new SelectExpression("asize", request);
   request.addAdditionalVariable("x");
   request.addAdditionalVariable("size");      
   FunctionExpression funcExpression = new FunctionExpression(FunctionTypes.FUNCTION_AVG);
   funcExpression.addArgument(new VariableExpression("size"));
   selectExpr.setExpression(funcExpression);
   request.addSelect(selectExpr);
      
   request.addPropertyRef("x", ":size", "size");
      
   request.setGroupBy("x");
      
   Filter having = request.addHaving();
   ComparisonExpression compExpr = new ComparisonExpression(ComparisonExpression.GREATER);
   funcExpression = new FunctionExpression(FunctionTypes.FUNCTION_AVG);
   funcExpression.addArgument(new VariableExpression("size"));
   compExpr.addExpression(funcExpression);
   compExpr.addExpression(new LiteralExpression(10));
   having.addExpression(compExpr);      
Will return the following SPARQL content:
   SELECT (AVG(?size) AS ?asize)
   WHERE {
      ?x :size ?size .
   }
   GROUP BY ?x
   HAVING (AVG(?size) > 10)

Binds

It is possible to add a BIND construct with the SPARQLRequest.addBIND(String var) method. The returned Bind instance allows to add as many Expression elements.

For example:
   SparqlRequest request = new SparqlRequest("sitac");
   request.addSelect("zone");
   request.addAdditionalVariable("index");
   request.addType("zone", "TaskZone");
   request.addPropertyValue("zone", "isTasked", true);
   request.addPropertyRef("zone", "hasIndex", "index");
      
   Bind bind = request.addBind("var");
   VariableExpression varExpr = bind.createVariable("index");
   LiteralExpression literal = bind.createLiteral(2);
   ArithmeticExpression ar = new ArithmeticExpression(varExpr, ArithmeticExpression.MULTIPLY, literal);
   bind.addExpression(ar);      
Will return the following SPARQL content:
   SELECT ?zone
   WHERE {
      ?zone rdf:type sitac:TaskZone .
      ?zone sitac:isTasked "true" .
      ?zone sitac:hasIndex ?index .
      BIND (?index * 2 as ?var)
   }

See also


Categories: Requestcreation

Copyright 2025 Dassault Aviation. All Rights Reserved. Documentation and source under the LGPL v3 licence

Project Web Hosted by SourceForge.net Copyright 1999-2010 - Geeknet, Inc., All Rights Reserved About - Legal - Help