我正在尝试使用RDFlib Python中的以下查询来获取uri对用户的firstname文字。
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)*
答案 0 :(得分:2)
尝试使用str()
过滤器
FILTER (str(?fname) = """+f1Str+""")
如果您需要不区分大小写的搜索,还可以执行如下所示的正则表达式查询:
FILTER (regex(str(?fname),"""+f1Str+""","i"))
答案 1 :(得分:0)
确保f1Str
采用SPARQL语法:
f1Str="'Thomas'" # SPARQL quoted string.
或
f1Str="Thomas"
FILTER (?fname = '"""+f1Str+"""') # Add SPARQL quotes
此外,在查询字符串中添加一些换行符 - 错误消息对您更有用。