Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
440 views
in Technique[技术] by (71.8m points)

sparql - How to create a parameterised query in SPARQLWrapper in python

I am using the following sparql query using SPARQLWrapper as follows.

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'])

This query returns False which is the correct output.

I try to modify the aforementioned code by convering the query to a parameterised query (by using a variable for the category name as follows).

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'])

After doing this modification, now the code returns True, which is incorrect. Just wondering where I have made my code wrong.

I am happy to provide more details if needed.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

If you use Python 3.6+, you can use f-strings:

f" ASK {{ {my_variable}  skos:broader{{1,7}} dbc:Medicine }} "

will be

' ASK { dbc:Meteorological_concepts  skos:broader{1,7} dbc:Medicine } '

for older versions, you can use format:

" ASK {{ {}  skos:broader{{1,7}} dbc:Medicine }} ".format(my_variable)

yielding the same output.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...