我正在尝试使用 RDFLib 使用参数化 SPARQL 查询来查询关于合金的非常简单的数据库:
x = "Inconel_625"
g = Graph()
g.parse ("Desktop/materials.ttl")
knows_query = """
SELECT ?min ?max
WHERE
{ ?s rdfs:label """+x+""";
mydb:min ?min ;
mydb:max ?max.
}"""
qres = g.query(knows_query)
for x in qres:
print(x.min, x.max)
不幸的是,这段代码不起作用。如果我用“Inconel_625”替换“”“+x+”“”,它会以某种方式工作。我没有看到什么?不可能在RDFLib中对sparql查询进行参数化吗?
属性 rdf:label 在对象的位置需要一个字符串。您没有将对象放在引号中。你应该这样做:
knows_query = """
SELECT ?min ?max
WHERE
{ ?s rdfs:label \""""+x+"""\";
mydb:min ?min ;
mydb:max ?max.
}"""
现在,如果您要打印此查询,它将在控制台上显示以下输出:
SELECT ?min ?max
WHERE
{ ?s rdfs:label "Inconel_625";
mydb:min ?min ;
mydb:max ?max.
}
这就是你想要的,它应该可以工作。如果您仍然无法正常工作,请告诉我。我很乐意提供帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句