Python 有没有办法参数化sparql筛选器条件?

Python 有没有办法参数化sparql筛选器条件?,python,filter,sparql,rdf,Python,Filter,Sparql,Rdf,我试图找出用浮点值作为输入参数化过滤条件的最佳方法 count=25.67 FILTER(?price < count) count=25.67 过滤器(?价格

我试图找出用浮点值作为输入参数化过滤条件的最佳方法

count=25.67
FILTER(?price < count)
count=25.67
过滤器(?价格<计数)
而不是:

FILTER ( ?price < 25.67 )
过滤器(?价格<25.67)
“计数”的值将作为输入

我想知道在FILTER命令中包含对象计数的语法


提前谢谢。

没有神奇的SPARQL语法可以做到这一点:与SQL一样,您必须使用字符串进行SPARQL查询,至少在Python中是这样。因此,您需要的任何用户输入都必须生成字符串,然后将其作为查询发送。假设您希望所有价格都大于
price\u到小于
,您可以在Python中这样做:

def get_prices(g,price_to_be_小于_):
q=”“”
选择?项目
在哪里{{
?商品出厂价:hasPrice?价格。
过滤器(?价格<{})
}}
“.”格式(价格小于)
项目=[]
对于g.query(q)中的r:
items.append(r[“item”])
退货项目

我使用
.format()
,而不是f字串(个人喜好),因此我必须使用双大括号“{”,在查询中,没有神奇的SPARQL语法可以做到这一点:与SQL一样,您必须使用字符串进行SPARQL查询,至少在Python中是这样。因此,您需要的任何用户输入都必须生成字符串,然后将其作为查询发送。假设您希望所有价格都大于
price\u to\u小于
,则可以在Python中执行此操作:

def get_prices(g,price_to_be_小于_):
q=”“”
选择?项目
在哪里{{
?商品出厂价:hasPrice?价格。
过滤器(?价格<{})
}}
“.”格式(价格小于)
项目=[]
对于g.query(q)中的r:
items.append(r[“item”])
退货项目

我使用的是
.format()
,而不是f字符串(个人喜好),因此我必须在查询中使用双大括号“{{”,这是一个通过“.format()”添加参数的
setQuery
使用示例:

从SPARQLWrapper导入SPARQLWrapper,JSON
def query_dbpedia(我的uri)
sparql=SPARQLWrapper(“http://dbpedia.org/sparql")
q=”“”
前缀rdfs:
选择?标签
在哪里{{
{}rdfs:label?label。
}}
“”格式(我的uri)
sparql.setQuery(q)
setReturnFormat(JSON)
结果=sparql.query().convert()
结果到返回=[]
对于结果[“结果”][“绑定”]:
结果返回。追加(结果[“标签”][“值”])
返回结果\u到\u返回
打印(查询)http://dbpedia.org/resource/Asturias"))

(改编自SPARQLWrapper文档,位于)

下面是一个通过“.format()”添加参数的
setQuery
使用示例:

从SPARQLWrapper导入SPARQLWrapper,JSON
def query_dbpedia(我的uri)
sparql=SPARQLWrapper(“http://dbpedia.org/sparql")
q=”“”
前缀rdfs:
选择?标签
在哪里{{
{}rdfs:label?label。
}}
“”格式(我的uri)
sparql.setQuery(q)
setReturnFormat(JSON)
结果=sparql.query().convert()
结果到返回=[]
对于结果[“结果”][“绑定”]:
结果返回。追加(结果[“标签”][“值”])
返回结果\u到\u返回
打印(查询)http://dbpedia.org/resource/Asturias"))

(改编自SPARQLWrapper文档,位于)

和标准python内联字符串不起作用?有些API也支持参数化查询,有些triple Store甚至支持通过HTTP param提供变量绑定。但对我来说,显而易见的原因是为什么只使用python f-string或其他东西,或者这不是你所要求的?内联字符串确实起作用。但我想将其自动化到一个新的高度接受用户提供的输入。比如说,我将其存储在一个浮点变量中,我的问题是,在rdf中使用sparql的筛选命令中的对象的语法是什么?不确定您在问什么,对我来说,用户输入值,然后创建查询字符串并执行它。您可以通过替换一些占位符或JU来创建字符串不创建内联字符串。
s=f“选择…其中{…过滤器(?price<{count})}”
-为什么不起作用?在我看来,这是最明显也是最简单的方法。或者不起作用?事实上,f-string是Python 3.6,但您也可以在以前的Python版本中使用
str.format
,标准的Python内联字符串不起作用?一些API也支持参数化查询,一些三联存储甚至支持提供变量但对我来说,显而易见的原因是为什么只使用Python f-string或其他东西,或者这不是你所要求的?内联字符串可以工作。但我想自动化它以接受用户提供的输入。比如说,我将其存储在一个浮点变量中,我的问题是,rdf中使用FILTER命令o中的对象的语法是什么f sparql?不确定您在问什么,对于我来说,用户输入值,然后您创建查询字符串并执行它。您可以通过替换占位符或只创建内联字符串来创建字符串。
s=f“选择…其中{…过滤器(?price<{count})”
-为什么不起作用?这是最明显的,在我看来也是最简单的方式。或者不起作用?事实上,f-string是Python 3.6,但您也可以在以前的Python版本中使用
str.format
。谢谢Nicholas。我正在使用sparqlwrapper的.setQuery()发送查询。我知道我应该使用{}在FILTER命令中,然后使用.format(count)。如何使用sparql.setQuery(“--query-->”)包含.format?@savi这正是我已经告诉过你的,查询只是一个简单的字符串-没有更多,没有更少。我也不明白你在这里的后续问题,q是一个字符串,你可以把它传递给方法
sparql.setQuery(q)
,什么意思