python 如何在SPARQL查询中添加外部变量?

5lhxktic  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(111)

我有以下代码:

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 {
        ?mov ?rel ?obj .
        ?obj rdfs:label ?lbl .
    }
    ''')]

非常感谢您的帮助!

wnavrhmk

wnavrhmk1#

您可以尝试使用双大括号和.format方法。请参阅:

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

我可能会将其分解并将查询格式化为字符串,然后调用graph.query()

skeleton_query = '''
    SELECT ?lbl 
    WHERE {{
        {} {} ?obj .
        ?obj rdfs:label ?lbl .
    }}
    '''

formatted_query = skeleton_query.format("<http://www.wikidata.org/entity/Q59692464>", "<http://www.wikidata.org/prop/direct/P1657>")

result = graph.query(formatted_query)

相关问题