我试图找出以浮点值作为输入来参数化过滤条件的最佳方法是什么。
count=25.67
FILTER(?price < count)
而不是:
FILTER ( ?price < 25.67 )
“ count”的值将作为输入。
我想知道在FILTER命令中包括对象计数的语法。
先谢谢您。
没有神奇的SPARQL语法可以做到这一点:像SQL一样,至少在Python中,您必须从字符串中进行SPARQL查询。因此,您想要的任何用户输入都必须输入随后作为查询发送的字符串。假设您想使所有价格都大于price_to_be_less_than
,则可以在RDFlib Python中执行此操作:
def get_prices(g, price_to_be_less_than):
q = """
SELECT ?item
WHERE {{
?item ex:hasPrice ?price .
FILTER (?price < {})
}}
""".format(price_to_be_less_than)
items = []
for r in g.query(q):
items.append(r["item"])
return items
我使用.format()
,而不是f字符串(个人喜好),因此我必须在查询中使用大括号“ {{”]]