繁体   English   中英

如何在 SPARQLWrapper 中使用三引号 (""") 在 SPARQL 查询中插入变量(Jupyter notebook)

[英]How to insert a variable in a SPARQL query with triple-quotation (""") in SPARQLWrapper (Jupyter notebook)

关于在 Wrapper 库的 SPARQL 查询中插入变量的非常简单的问题。 下面的示例在 Jupyter 笔记本中,我在 SPARQL 查询之外定义了一个变量'q' ,并希望在 SPARQL 查询中使用它。 我找不到如何逃避三引号( """ )。快速帮助将不胜感激。非常感谢!

!pip install SPARQLWrapper
from SPARQLWrapper import SPARQLWrapper, JSON, XML

q = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>'
query_content = """
select *
where {
?providerProxy ore:proxyFor 'q' ; ?p ?o 
}
"""

query = prefix + query_content
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
print('------')
for result in results["results"]["bindings"]:
  p = result["p"]["value"]
  o = result["o"]["value"]
  print(p + " : " + o)

不知何故,以下方法(.format)不起作用。

query_content = """
select ?providerProxy
where {
?providerProxy ore:proxyFor {var}
}
LIMIT 100
""".format(var = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>')

query = prefix + query_content
sparql.setQuery(query)
sparql.setReturnFormat(JSON)

错误看起来像:

HTTPError                                 Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/SPARQLWrapper/Wrapper.py in _query(self)
    925             else:
--> 926                 response = urlopener(request)
    927             return response, self.returnFormat

HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:

QueryBadFormed                            Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/SPARQLWrapper/Wrapper.py in _query(self)
    928         except urllib.error.HTTPError as e:
    929             if e.code == 400:
--> 930                 raise QueryBadFormed(e.read())
    931             elif e.code == 404:
    932                 raise EndPointNotFound(e.read())

QueryBadFormed: QueryBadFormed: A bad request has been sent to the endpoint: probably the SPARQL query is badly formed. 
    results = sparql.query().convert()
    print(results)
    print('------')

同样, f""" {} """ 方法不起作用:

var = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>'
query_content = f"""
select ?providerProxy
where {
?providerProxy ore:proxyFor {var}
LIMIT 100
"""

返回错误:

  File "<fstring>", line 2
    ?providerProxy ore)
    ^
SyntaxError: invalid syntax

query_content = f""" select ?providerProxy where {{ ?providerProxy ore:proxyFor {var} }} """

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM