我是 SPARQL 和 Jena 框架的新手,我想使用正则表达式从 Java 执行 SPARQL 查询。这是我的代码:
String queryString = "select ?a where { filter regex(?a, 'e', 'i') }";
Query query = QueryFactory.create(queryString);
try (QueryExecution qexec = QueryExecutionFactory.create(query, ontology)) {
ResultSet results = qexec.execSelect() ;
for ( ; results.hasNext() ; )
{
QuerySolution soln = results.nextSolution() ;
System.out.println("a : " + soln.get("a").toString());
}
}
本体变量包含一个 OntModel,其名称中包含“e”概念。我希望此请求检索这些概念,但是如果我用更简单的内容替换正则表达式,则此代码不会显示任何内容。 我不明白我的请求有什么问题,有人可以帮助我吗?
最佳答案
在我看来,你没有什么可以应用过滤器的。一起尝试
PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
SELECT ?a
WHERE
{ ?o skos:prefLabel ?a .
FILTER REGEX(?a, 'e', 'i').
}
ORDER BY ?a
或提供有关您的用例的更多详细信息。
关于java - 带有正则表达式的 Java 字符串中的 SPARQL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390992/