python - 如何向 SPARQL 查询添加外部变量?

标签 python sparql turtle-rdf knowledge-graph sparqlwrapper

我有以下代码:

name = [str(s) for s,  in graph.query('''
    SELECT ?lbl 
    WHERE {
        <http://www.wikidata.org/entity/Q59692464> <http://www.wikidata.org/prop/direct/P1657> ?obj .
        ?obj rdfs:label ?lbl .
    }
    ''')]

我想传递两个值<http://www.wikidata.org/entity/Q59692464><http://www.wikidata.org/prop/direct/P1657>作为变量?mov?rel .

我尝试使用 %s 但出现错误:

name = [str(s) for s,  in graph.query('''
    SELECT ?lbl 
    WHERE {
        <'%s'> <http://www.wikidata.org/prop/direct/P1657> ?obj .
        ?obj rdfs:label ?lbl .
    }
    '''%mov)]
TypeError: unsupported operand type(s) for %: 'SPARQLResult' and 'str'

我想要的是这样的:

name = [str(s) for s,  in graph.query('''
    SELECT ?lbl 
    WHERE {
        ?mov ?rel ?obj .
        ?obj rdfs:label ?lbl .
    }
    ''')]

非常感谢您的帮助!

最佳答案

假设您使用rdflib,您可以执行以下操作:

mov = rdflib.URIRef("http://www.wikidata.org/entity/Q59692464")
rel = rdflib.URIRef("http://www.wikidata.org/prop/direct/P1657")

name = [str(s) for s, in graph.query('''
SELECT ?lbl 
WHERE {
  ?mov ?rel ?obj .
  ?obj rdfs:label ?lbl .
}
''', initBindings={'mov': mov, 'rel': rel})]

关于python - 如何向 SPARQL 查询添加外部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74738408/

相关文章:

Python while 循环 popleft() - 错误 : Empty deque

sparql - 如何使用SPARQL查询同时获取字段和字段计数?

python - 减少嵌套列表,扩展或 append 列表的功能

python - 如何从网络浏览器调用 python get 方法

python - 我如何将 xml 格式的数据从 flex 传递到 python

rdf - 指定多个rdf :types in a SPARQL query

sparql - 维基数据的重复结果

SPARQL group by 和 order by : not ordered

java - 使用 Jena 迭代 RDF