5

RDFlib Python で次のクエリを使用して、ユーザーのファーストネーム リテラルに対して uri を取得しようとしています。

plugin.register(
    'sparql', rdflib.query.Processor,
    'rdfextras.sparql.processor', 'Processor')
plugin.register(
    'sparql', rdflib.query.Result,
    'rdfextras.sparql.query', 'SPARQLQueryResult')

f1Str="Thomas"

ecsuri= GraphS.query("""
                    PREFIX akt: <http://www.aktors.org/ontology/portal#>

                    SELECT ?akturi WHERE{
                        ?akturi akt:family-name ?fname.
                        FILTER (?fname = """+f1Str+""")

                    }""")

次のエラーが発生し、f1Strが原因のようです。変数に格納された値を使用して SPARQL でデータをフィルタリングするにはどうすればよいですか。助けてください。

*Exception Type: ParseException
Exception Value: Expected "}" (at char 481), (line:10, col:29)*
4

2 に答える 2

3

SPARQL変数をstr()フィルターで文字列にキャストしてみてください

FILTER (str(?fname) = """+f1Str+""")

大文字と小文字を区別しない検索が必要な場合は、次のような正規表現クエリを実行することもできます。

FILTER (regex(str(?fname),"""+f1Str+""","i"))

于 2012-10-11T09:31:58.617 に答える
0

f1Strが SPARQL 構文であることを確認してください。

f1Str="'Thomas'"   # SPARQL quoted string.

また

f1Str="Thomas"
FILTER (?fname = '"""+f1Str+"""') # Add SPARQL quotes

また、クエリ文字列にいくつかの改行を入れてください。エラー メッセージがより役に立ちます。

于 2012-10-11T10:55:21.507 に答える