【发布时间】:2013-11-08 16:22:31
【问题描述】:
我正在尝试在 Python (v3.3) 中使用 SPARQLWrapper 查询 DBpedia。这是我的查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?slot WHERE {
<http://dbpedia.org/resource/Week> <http://www.w3.org/2002/07/owl#sameAs> ?slot
}
这会导致 SPARQLWrapper 包出错:
ValueError: Invalid \escape: line 118 column 74 (char 11126)
代码:
query = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?slot WHERE{{ {subject} {predicate} {object} }} "
query = query.format(subject=subject, predicate=predicate, object= objectfield)
self.sparql.setQuery(query)
self.sparql.setReturnFormat(JSON)
results = self.sparql.query().convert() # Error thrown at this line
错误:
Traceback (most recent call last):
File "getUriLiteralAgainstPredicate.py", line 84, in <module>
sys.exit(main())
File "getUriLiteralAgainstPredicate.py", line 61, in main
entity,predicateURI,result = p.getObject(dataAtURI,predicates, each["entity"])
File "getUriLiteralAgainstPredicate.py", line 30, in getObject
result = self.run_sparql("<"+subjectURI+">","<"+predicateURI+">","?slot")
File "getUriLiteralAgainstPredicate.py", line 24, in run_sparql
results = self.sparql.query().convert()
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/SPARQLWrapper-1.5.2-py3.3.egg/SPARQLWrapper/Wrapper.py", line 539, in convert
return self._convertJSON()
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/SPARQLWrapper-1.5.2-py3.3.egg/SPARQLWrapper/Wrapper.py", line 476, in _convertJSON
return jsonlayer.decode(self.response.read().decode("utf-8"))
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/SPARQLWrapper-1.5.2-py3.3.egg/SPARQLWrapper/jsonlayer.py", line 76, in decode
return _decode(string)
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/SPARQLWrapper-1.5.2-py3.3.egg/SPARQLWrapper/jsonlayer.py", line 147, in <lambda>
_decode = lambda string, loads=json.loads: loads(string)
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/json/decoder.py", line 352, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/json/decoder.py", line 368, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid \escape: line 118 column 74 (char 11126)
【问题讨论】:
-
您是否正在尝试加载页面?
-
请出示您的python代码。根据 sparql.org 的验证器,您的查询是合法的,而且它只有一行,所以如果有 118 行某事,这可能是结果,但我们看不到您要对它们做什么。另外,请逐字显示错误消息(即,在此处复制并粘贴)。可能是以意想不到的方式读取 DBpedia 结果。你是怎么查询的?
-
感谢您发布一些代码,但这对于任何人来说都是不够的,例如,复制并粘贴它以便在本地重现问题。请根据“有关您编写的代码问题的问题必须描述具体问题 - 并在问题本身中包含重现它的有效代码 - 发布一个最小的工作示例。请参阅SSCCE.org指导。”
-
即使这段代码确实有点帮助,因为现在我们知道了一些我们以前不知道的事情:您的结果集以 JSON 格式返回,并且“无效 \escape:第 118 行第 74 列 ( char 11126)”在解码 JSON (json/decoder.py) 时发生。
-
我是库的维护者,很乐意为您提供帮助。但是,如果不知道导致问题的原始 json 类型,很难评估解码 json 响应的问题。但是,根据目前的证据,我想说的是服务器端问题(生成了错误的 json)而不是客户端(在 sparqlwrapper 本身中)。
标签: python sparql dbpedia sparqlwrapper