1

これが私の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 リソースを選択したいと考えています。正規表現フィルターを使用していますが、ヌル ポインター例外でさえ、出力に何も得られません。

4

1 に答える 1

6

URI をパターン マッチングする場合、これはリテラルではないため、str文字列に変換するために使用する必要があります。これをフィルタリングする1つの方法は、次を使用することcontainsです:

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

または、正規表現を使用できます。

Select ?uri
where {?uri ?p?o.
FILTER regex(str(?uri), "p", "i")}
}
于 2015-05-11T08:17:25.397 に答える