带有正则表达式的Java字符串中的SPARQL请求

带有正则表达式的Java字符串中的SPARQL请求,java,regex,sparql,jena,Java,Regex,Sparql,Jena,我不熟悉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)) {

我不熟悉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());
    }
}
本体变量包含一个名称中带有“e”的概念的OntModel。我希望这个请求能够检索这些概念,但是如果我用更简单的东西替换正则表达式,这段代码将不会显示任何内容。
我不明白我的请求有什么问题,有人能帮我吗?

在我看来,你没有什么可以应用过滤器的。试一试

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
前缀skos:
选择
哪里
{?o skos:prefLabel?a。
过滤正则表达式(?a,'e,'i')。
}
点菜人

或者提供有关用例的更多详细信息。

如果您只想检查字符串是否包含“e”或“e”,那么就没有真正的理由使用regex;只需检查它是否包含“e”或“e”,或者检查它的小写(大写)版本是否包含“e”(“e”)。