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



