使用 python RDFLib 的参数化 SPARQL 查询

灰熊 11

我正在尝试使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章