当前位置: 首页 > 面试题库 >

如何在Java中构建SPARQL查询?

弘涛
2023-03-14
问题内容

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


问题答案:

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



 类似资料:
  • 我一直在使用TopQuadran Composer Free Edition(TBC FE)将SPARQL/SPIN规则(主要是SPIN构造函数)嵌入到存储为RDF的OWL本体中。这个过程的一部分是SPARQL源代码根据http://spinrdf.org/sp.中指定的模式http://spinrdf.org/sp.html在RDF结构中标记/编码。正是这个结构实际上被RDF4J解释来运行SPI

  • 我正在尝试使用rdf4j文档构造SPARQL查询:https://rdf4j.org/documentation/tutorials/sparqlbuilder/ 我是java的新手(和stackoverflow,如果写得不好,很抱歉),但我想我已经包含了正确的开始步骤。我用以下方式实例化了一个选择查询、前缀和变量: URL已被右前缀替换 我试图编写的查询是:选择?在哪里{:team_1:draf

  • 问题内容: 我正在尝试使用耶拿创建一个SPARQL查询来查询DBpedia。 当我将查询与独立工具(Twinkle)一起使用时,该查询正在运行,但是当我将其插入此Java代码时,它将返回一个空集。 有什么想法我做错了吗? 问题答案: 问题是你的条款。删除它,一切都很好。有了该子句,我怀疑端点将查询限制在具有该名称的图上,但是不存在这样的图,因此没有结果。 令人困惑的是,查询似乎可以在http://

  • 我在读一本书的时候遇到了这句话: 我是Apache Jena的新手,所以这让我想到这么大的图联合是在内存中发生的吗? 因此,我使用TDB存储我的图,并使用SPARQL查询它们,我想查询“在多个FROM子句中给定的2个特定图的图联合”或“所有命名图的图联合”: 这些联合是否会发生在我的Java代码中的内存中,我使用ARQ查询TDB??

  • 问题内容: 我在想类似的东西: 哪种Java JSON库最适合这种流畅的构建? 更新 :我包GSON,并得到几乎理想的结果...... 问题答案: 我正在使用org.json库,发现它很好并且很友好。 例: 输出:

  • 他们说现在com.hp.hpl.jena.sparql.Engine.Binding.BindingMap在这个版本中不是一个简单的类,而是一个接口。 如果是这样,那么如何在当前版本中运行sparql查询。请根据我分享的代码给出一个例子。提前道谢。