我使用 RDFlib 从 DBpedia 解析了一些数据:
dbpediaSparqlEndpoint = 'http://dbpedia.org/sparql/'
sparql = SPARQLWrapper(dbpediaSparqlEndpoint)
dbpedia_query = 'PREFIX : <http://dbpedia.org/resource/> SELECT ?s ?p ?o WHERE {{?s ?p ?o FILTER (?s=:Benin)} UNION {?s ?p ?o . FILTER (?o=:Benin)}}'
dataGraph = Graph()
sparql.setQuery(dbpedia_query)
sparql.method = 'GET'
sparql.setReturnFormat(JSON)
output = sparql.query().convert()
我想创建一个转储文件,然后可以使用该文件上传到三重存储。这些是我认为我现在需要采取的步骤:
- 将输出数据添加到图表中
- 使用
output.serialize(destination="dbpediaDump.txt", format='turtle')
生成转储
这是最有效的方法吗?另外,是否有一种快捷方式可以将输出中的所有数据一次添加到图表中,而不是迭代列表并一一添加三元组?
DBpedia SPARQL 结果数量有限,这意味着为了获取所有请求的结果,通常需要使用 OFFSET
和 LIMIT
约束重复查询。此外,DBpedia 的可用性无法得到保证,并且必须考虑到错误。
将 rdf 数据加载到私有(private)图数据库中的最有效方法是使用像 LinkedData.Center 这样的服务使用此配置:
@PREFIX <http://linkeddata.center/kees/v1#> .
[] a kees:SparqlIngestion
kees:queryName <http://mydata.example.com/resource/Benin> ;
kees:sparqlEndpoint <http://dbpedia.org/sparql> ;
kees:constructQuery """
PREFIX : <http://dbpedia.org/resource/>
CONSTRUCT {?s ?p ?o}
WHERE {{?s ?p ?o FILTER (?s=:Benin)} UNION {?s ?p ?o . FILTER (?o=:Benin)}}
"""
.
已提供所用摄取 API 的完整文档 here
免责声明:我是 LinkedData.Center 实习生
我是一名优秀的程序员,十分优秀!