是否有一个库,可以像CriteriaBuilderJPA中那样以编程方式构建SPARQL查询,或者可以像使用PreparedStatementfor SQL 一样构建查询?
CriteriaBuilder
PreparedStatement
您可以使用两种方法在Jena中以编程方式构建查询:语法或代数。耶拿维基上有一个介绍。
使用代数,您将执行以下操作:
Op op; BasicPattern pat = new BasicPattern(); // Make a pattern pat.add(pattern); // Add our pattern match op = new OpBGP(pat); // Make a BGP from this pattern op = OpFilter.filter(e, op); // Filter that pattern with our expression op = new OpProject(op, Arrays.asList(Var.alloc("s"))); // Reduce to just ?s Query q = OpAsQuery.asQuery(op); // Convert to a query q.setQuerySelectType(); // Make is a select query
(摘自Wiki页面)
不是CriteriaBuilder(也不是预期的),但是那是其中的一些方式。您OpJoin而不是AND,OpUnion而您想要进行OR等。痛点是我的经验中的表达式:您可能想从字符串中解析它们。
OpJoin
OpUnion