这是How to prevent triples from getting mixed up while uploading to Dydra programmatically?的后续问题
我使用SPARQL CONSTRUCT查询创建了一个新图 . 我现在想迭代它,以便我可以将语句添加到RDFlib图,然后将数据插入另一个三元组 . 我有以下问题:
-
如果SPARQL CONSTRUCT返回一个图形,我还需要迭代这些语句并将它们添加到RDFlib图形中吗?我可能需要这样做才能使用循环将每个三元组插入到三元组中 .
-
如何迭代SPARQL CONSTRUCT产生的图形来检索三元组?
'output'
的'type'
显示为字符串 .
这是我的代码:
sesameSparqlEndpoint = 'http://my.ip.ad.here:8080/openrdf-sesame/repositories/rep_name'
sparql = SPARQLWrapper(sesameSparqlEndpoint)
queryStringDownload = 'CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o FILTER REGEX(str(?s), "http")}'
dataGraph = Graph()
sparql.setQuery(queryStringDownload)
sparql.method = 'GET'
sparql.setReturnFormat(JSON)
output = sparql.query().convert()
# print output
#Print all statements in dataGraph
for stmt in output:
print stmt
这段代码只给了我三元组中的一列字符 .
1 回答
我仍然需要添加由于将CONSTRUCT查询运行到RDFlib图而创建的联合图表中的语句 . 为什么?因为在执行INSERT时解析前者存在问题 . CONSTRUCT查询的输出:a)不处理非ASCII字符(因此需要输出.encode('utf-8')) .
要从CONSTRUCT查询生成的图中检索三元组,我们需要在上面的代码中使用XML格式输出而不是JSON .
有趣的是:使用XML时的类型(输出)是Conjunctive Graph . 对于我尝试的其他一切,它是一个字符串 .