问题描述
我正在尝试将参数提供给 SPARQL 查询;它不显示任何结果,也不显示任何错误。之前看过How to create a parameterised query in SPARQLWrapper in python等帖子,但是这个问题之前没有讨论过。
from rdflib import Graph
sparql = SPARQLWrapper("https://agrovoc.uniroma2.it/sparql")
my_variable = 'biomass'
sparql.setQuery("""
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX skosxl: <http://www.w3.org/2008/05/skos-xl#>
SELECT *
WHERE {
?subject a skos:Concept .
?subject skosxl:prefLabel ?xLab .
?xLab skosxl:literalForm "+my_variable+"@en .
} """)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
但是下面的工作正常。
from SPARQLWrapper import SPARQLWrapper,RDFXML,JSON,XML,N3
from rdflib import Graph
sparql = SPARQLWrapper("https://agrovoc.uniroma2.it/sparql")
sparql.setQuery("""
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX skosxl: <http://www.w3.org/2008/05/skos-xl#>
SELECT *
WHERE {
?subject a skos:Concept .
?subject skosxl:prefLabel ?xLab .
?xLab skosxl:literalForm "biomass"@en .
} """)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
解决方法
你应该把你的变量:这两个标记之间的标签'',即。 '"+my_variable+"'@en 它将起作用,因为这个变量应该是一个字符串,
我想问你如何在这个查询中插入一个自定义函数,因为它只接受 python 变量而不是函数?