如何在PYTHON的SPARQLWrapper中创建参数化查询
问题描述
我使用SPARQLWrapper使用以下SPARQL查询,如下所示。
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
sparql.setQuery(" ASK { dbc:Meteorological_concepts skos:broader{1,7} dbc:Medicine } ")
results = sparql.query().convert()
print(results['boolean'])
此查询返回False
,这是正确的输出。
我尝试通过将查询转换为参数化查询来修改上述代码(通过使用category name
的变量,如下所示)。
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
my_variable = 'dbc:Meteorological_concepts'
sparql.setQuery(" ASK { ?my_variable skos:broader{1,7} dbc:Medicine } ")
results = sparql.query().convert()
print(results['boolean'])
修改后,现在代码返回True
,这是不正确的。我只是想知道我的代码哪里错了。
如果需要,我很乐意提供更多详细信息。
解决方案
因为您要引入变量的值,所以它必须在字符串之外。而不是?
,而是字符串开头+your_variable
+字符串结尾的串联。
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
my_variable = 'dbc:Meteorological_concepts'
sparql.setQuery(" ASK { "+my_variable+" skos:broader{1,7} dbc:Medicine } ")
results = sparql.query().convert()
print(results['boolean'])
相关文章