如何迭代rdflib的CONSTRUCT输出



这是《如何防止三元组在以编程方式上传到Dydra时混淆?

我使用SPARQLCONSTRUCT查询创建了一个新的图。现在我想对它进行迭代,这样我就可以将语句添加到RDFlib图中,然后将数据插入另一个三元组存储中。我有以下问题:

  1. 如果SPARQLCONSTRUCT返回一个图,我还需要迭代这些语句并将它们添加到RDFlib图中吗?我可能需要这样做,以便能够使用循环将每个三元组插入到三元组存储中
  2. 如何对SPARQLCONSTRUCT生成的图进行迭代以检索三元组?'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)没有包含在<>中的URIb) 不处理非ASCII字符(因此需要输出.encode('utf-8'))
  2. 要从CONSTRUCT查询生成的图中检索三元组,我们需要使用XML格式进行输出,而不是上面代码中的JSON

有趣的一点是:使用XML时的类型(输出)是连接图。对于我尝试的其他一切,都是一串。

最新更新