首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python的SPARQLWrapper中创建参数化查询

如何在python的SPARQLWrapper中创建参数化查询
EN

Stack Overflow用户
提问于 2019-02-22 20:21:18
回答 3查看 957关注 0票数 2

我通过SPARQLWrapper使用下面的sparql查询,如下所示。

代码语言:javascript
复制
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的变量,如下所示)。

代码语言:javascript
复制
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,这是不正确的。我只是想知道我的代码哪里错了。

如果需要,我很乐意提供更多的细节。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-22 20:25:32

因为您想引入变量的值,所以它必须在字符串之外。而不是使用?,而是字符串的开头+ your_variable +字符串的结尾的串联。

代码语言:javascript
复制
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'])
票数 1
EN

Stack Overflow用户

发布于 2019-02-22 20:30:20

如果你使用Python字符串,你可以使用f- 3.6+:

代码语言:javascript
复制
f" ASK {{ {my_variable}  skos:broader{{1,7}} dbc:Medicine }} "

将会是

代码语言:javascript
复制
' ASK { dbc:Meteorological_concepts  skos:broader{1,7} dbc:Medicine } '

对于旧版本,您可以使用format

代码语言:javascript
复制
" ASK {{ {}  skos:broader{{1,7}} dbc:Medicine }} ".format(my_variable)

产生相同的输出。

票数 2
EN

Stack Overflow用户

发布于 2019-02-25 05:42:50

这段代码应该可以解决您的问题,请检查它。

代码语言:javascript
复制
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("\n"
                    "    PREFIX dbpedia: <http://dbpedia.org/resource/>"
                    " PREFIX dbo: <http://dbpedia.org/ontology/>"
                    "PREFIX dbp: <http://dbpedia.org/property/>\n"
                    "PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n"
                    "PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>\n"
                    "PREFIX dct:    <http://purl.org/dc/terms/>\n"
                    "SELECT DISTINCT ?name  ?birthDate   WHERE {\n"
                   "dbpedia:"+d+" foaf:name ?name\n"
                    "}\n"
                    "                   ")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54827065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档