如何使用python中的RDFlib将RDF数据存储到Fuseki SPARQL端点中的三元库中

时间:2018-05-08 07:19:36

标签: sparql rdf fuseki rdflib triplestore

新问题:

我首先启动Fuseki Server来创建一个名为' address_act'的新数据集:

fuseki-server --update --mem /address_act

以下是获取每个地址数据然后将其添加到Fuseki Server中的Triplestore(数据库)的代码:

import requests
import pandas as pd
import numpy as np
import re
from rdflib import Graph, Literal, URIRef
from rdflib.plugins.stores import sparqlstore

query_endpoint = 'http://localhost:3030/address_act/query'
update_endpoint = 'http://localhost:3030/address_act/update'
store = sparqlstore.SPARQLUpdateStore()
store.open((query_endpoint, update_endpoint))
g = Graph(identifier = URIRef('http://www.example.com'))

for i in range(1,3):
    results = []
    url = 'http://gnafld.net/address/?per_page=10&page=' + str(i)
    page = requests.get(url)
    response = requests.get(url)
    response.raise_for_status()
    results = re.findall('\"Address ID: (GAACT[0-9]+)\"', response.text)

    for ad in results:
        ad_url = 'http://gnafld.net/address/' + ad
        ad_info = requests.get(ad_url).content

        g.parse(data=ad_info, format='turtle')
        store.add_graph(g)

似乎代码有效,但是当我浏览http://localhost:3030/dataset.html?tab=info&ds=/address_act时,它总是显示图中有0个三元组。no triples in the graph我想知道它是否成功地将三元组插入到数据集中。如果是,那么我在哪里可以找到这些三元组?如果没有,我如何将三元组添加到默认图表中?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

如果你像这样开始fuseki:

$ fuseki-server --update --mem /ds

然后您可以使用以下方式在本地访问它:

from rdflib import Graph, Literal, URIRef
from rdflib.plugins.stores import sparqlstore

query_endpoint = 'http://localhost:3030/ds/query'
update_endpoint = 'http://localhost:3030/ds/update'
store = sparqlstore.SPARQLUpdateStore()
store.open((query_endpoint, update_endpoint))

...use store...
store.add_graph(graph)
store.remove_graph(graph)
store.query(...)

ds是fuseki数据集的名称)

看起来你有一个海龟格式文件,所以:

g = Graph(identifier = URIRef('http://www.example.com/'))
g.parse(data=r, format='turtle')

store.add_graph(g)