首页 文章

如何迭代rdflib的CONSTRUCT输出?

提问于
浏览
0

这是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 回答

  • 0
    • 我仍然需要添加由于将CONSTRUCT查询运行到RDFlib图而创建的联合图表中的语句 . 为什么?因为在执行INSERT时解析前者存在问题 . CONSTRUCT查询的输出:a)不处理非ASCII字符(因此需要输出.encode('utf-8')) .

    • 要从CONSTRUCT查询生成的图中检索三元组,我们需要在上面的代码中使用XML格式输出而不是JSON .

    有趣的是:使用XML时的类型(输出)是Conjunctive Graph . 对于我尝试的其他一切,它是一个字符串 .

相关问题