【问题标题】:Store RDF data into Triplestore via SPARQL endpoint using python使用 python 通过 SPARQL 端点将 RDF 数据存储到 Triplestore
【发布时间】:2025-12-15 00:35:02
【问题描述】:

我正在尝试将以下 url 中的数据作为三元组保存到三元组存储中以供将来查询。这是我的代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import re

url='http://gnafld.net/address/?per_page=10&page=7'
page = requests.get(url)
response = requests.get(url)
response.raise_for_status()
results = re.findall('\"Address ID: (GAACT[0-9]+)\"', response.text)
address1=results[0]
a = "http://gnafld.net/address/"
new_url = a + address1
r  = requests.get(new_url).content
print(r)

运行上面的代码后,我得到的答案如下: enter image description here

我的问题是如何将 RDF 数据插入到 Fuseki Server SPARQL 端点?我尝试这样的代码:

import rdflib
from rdflib.plugins.stores import sparqlstore
#the following sparql endpoint is provided by the GNAF website
endpoint = 'http://gnafld.net/sparql' 

store = sparqlstore.SPARQLUpdateStore(endpoint)
gs=rdflib.ConjunctiveGraph(store)
gs.open((endpoint,endpoint))
for stmt in r:
    gs.add(stmt)

但是好像不行。我该如何解决这个问题?感谢您的帮助!

【问题讨论】:

  • 你想“转换”什么?它已经是 RDF ...

标签: python rdf jena rdflib triplestore


【解决方案1】:

您在图像中显示的答案是 RDF 三元组格式,只是打印得不太好。

要将RDF 数据存储在RDF 存储中,您可以使用RDFlib。这是一个example 说明如何做到这一点。

如果您使用 Jena Fuseki 服务器,您应该能够从 python 访问它,就像您从 python 访问任何其他 SPARQL 端点一样。

您可能还想查看我对相关SO question 的回答。

【讨论】:

  • 感谢您的帮助。我是语义网和链接数据的新手,所以我不太清楚 rdflib、jena fuseki 和 SPARQL 端点之间的关系。就像关系数据库中的SQL一样,我们首先需要数据库,然后使用SQL进行查询以获得我们想要的结果。但是在这种情况下,我是否需要创建一个三元存储来存储 RDF 中显示的数据,然后使用 SPARQL 查询 RDF 数据?或者我可以使用 SPARQL 更新直接存储 RDF 数据?
  • 与 RDBMS 的 SQL 一样,您可以先使用插入 SQL 语句在数据库中创建数据。与 SPARQL 相同。您使用 RDFLib 更新,它将 SPARQL 插入您的 Fuseki 端点。因此,您首先需要设置 Fuseki。