我们如何在 SPARQL 查询中使用 python 字符串变量?

How can we use a python string variable in a SPARQL query?

我想在没有 IRI 的 SPARQL 查询中使用 python 字符串变量(为了遍历变量列表等)。我尝试了下面的代码,但它似乎不起作用。

请忽略前缀等。我只是为了在这里发布我的代码而更改了它们,它们并没有真正影响错误或问题。

这是我试过的:

variable = "apple"

knows_query = """ 
PREFIX example: <http://www.example.com>
SELECT DISTINCT ?s
WHERE {
    ?s rdfs:label | example:someExample | example:anotherExample """+variable+""" .
}"""

这给出了错误:

ParseException: Expected {SelectQuery | ConstructQuery | DescribeQuery | AskQuery}, found '?'  (at char 201), (line:6, col:9)

我已经试过了"+variable+",但还是不行。

以上代码应该实现这段代码所实现的:

knows_query = """ 
PREFIX example: <http://www.example.com>
SELECT DISTINCT ?s
WHERE {
    ?s rdfs:label | example:someExample | example:anotherExample "apple" .
}"""

我也试过,但由于某种原因似乎不起作用,给出了类似的错误。

您预期的查询字符串包含引号内的单词 apple,而您的查询只是将其包含在引号中而不带引号。 (如有疑问,请打印出来。)

您必须在单词出现前后添加引号。

我正在使用 Python f-strings,可在 Python 3.6 及更高版本中使用,这对于可读性和代码维护来说要好得多。

knows_query = f""" 
PREFIX example: <http://www.example.com>
SELECT DISTINCT ?s
WHERE {
    ?s rdfs:label | example:someExample | example:anotherExample "{variable}" .
}"""