繁体   English   中英

正则表达式SPARQL查询

[英]Regex SPARQL query

这是我的SPARQL查询:

  String queryString = 
            "SELECT ?URI "
                    + "WHERE{ ?URI ?predicate ?object ."
                    + "FILTER regex(?URI, \"p\", \"i\")}";


    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    try
    {
        ResultSet results = qexec.execSelect();
        while(results.hasNext()) {
        QuerySolution soln = results.nextSolution();
        Resource z = (Resource) soln.getResource("URI");
        System.out.println(z.toString());
        }
    finally {
        qexec.close();
    }

如您所见,我想选择包含字母P的URI资源。我使用了正则表达式过滤器,但是II没有获得任何输出,甚至没有空指针异常。

当您对URI进行模式匹配时,由于它不是文字,您需要使用str将其转换为字符串。 一种过滤方法是仅使用contains

Select ?uri
where {?uri ?p?o.
filter (contains(str(?uri), "p"))
}

或者您可以使用正则表达式:

Select ?uri
where {?uri ?p?o.
FILTER regex(str(?uri), "p", "i")}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM