这是我的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")}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句