一尘不染

如何在Java中构建SPARQL查询?

java

是否有一个库,可以像CriteriaBuilderJPA中那样以编程方式构建SPARQL查询,或者可以像使用PreparedStatementfor
SQL 一样构建查询?


阅读 372

收藏
2020-12-03

共1个答案

一尘不染

您可以使用两种方法在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等。痛点是我的经验中的表达式:您可能想从字符串中解析它们。

2020-12-03