我正在使用python3进行SPARQL查询。我需要读一个virtuoso数据库并输出三元组。三元组中的一些数据包含特殊字符,如换行符等。
不管怎样,我可以像这样取出数据:
queryString = "some query"
sparql.setQuery(queryString)
sparql.setReturnFormat(JSON)
try:
jsonData = sparql.query()
for result in jsonData:
print('Result: ***')
f.write(str(result) + '\n')
except:
print("Oops:", sys.exc_info()[0], file=sys.stderr)
执行此操作时,文件中会显示以下输出:
b'{\n'
b' "head" : {\n'
b' "vars" : [\n'
b' "subject",\n'
b' "predicate",\n'
b' "object"\n'
b' ]\n'
b' },\n'
b' "results" : {\n'
b' "bindings" : [\n'
b' {\n'
b' "predicate" : {\n'
b' "type" : "uri",\n'
b' "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"\n'
b' },\n'
b' "subject" : {\n'
b' "type" : "uri",\n'
b' "value" : "http://www.ontologyrepository.com/CommonCoreOntologies/delimits"\n'
b' },\n'
b' "object" : {\n'
b' "type" : "uri",\n'
b' "value" : "http://www.w3.org/2002/07/owl#InverseFunctionalProperty"\n'
b' }\n'
b' },\n'
等等。我不确定
b
前缀在这些行上。不管怎样,我在JSON库中读不到这个。所以我会的
更喜欢
用JSON编写。
我想用一个简单的东西来代替for循环
json.dump(jsonData, f)
或
json.dumps(jsonData, f)
当我这样做时,我会收到错误消息
Oops: <class 'TypeError'>
.
我注意到
jsonData
是
<class 'SPARQLWrapper.Wrapper.QueryResult'>
.
SPARQL查询是否未返回JSON?我还需要做些其他的改变吗?