如何在python中使用SPARQLWrapper处理参数化查询中的字符串

问题描述

我正在尝试将参数提供给 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 变量而不是函数?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...