Храните данные RDF в Triplestore через конечную точку SPARQL с использованием python

Я пытаюсь сохранить данные по следующему 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)

После того, как я запустил приведенный выше код, я получил ответ вроде: введите здесь описание изображения

Мой вопрос: как вставить данные 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)

Но похоже, что это не работает. Как я могу решить эту проблему? Спасибо за вашу помощь!


person SpongeBob    schedule 06.05.2018    source источник
comment
Что вы хотите преобразовать? Это уже РДФ...   -  person UninformedUser    schedule 06.05.2018


Ответы (1)


Ответ, который вы показываете на изображении, представлен в тройном формате RDF, он просто некрасиво напечатан.

Чтобы сохранить данные RDF в хранилище RDF, вы можете использовать RDFlib. Вот пример того, как это сделать.

Если вы используете сервер Jena Fuseki, вы должны иметь доступ к нему из python так же, как вы получаете доступ к любой другой конечной точке SPARQL из python.

Возможно, вы захотите увидеть мой ответ на соответствующий ТАК вопрос тоже.

person Henriette Harmse    schedule 06.05.2018
comment
Спасибо за вашу помощь. Я новичок в семантической сети и связанных данных, поэтому я не очень понимаю взаимосвязь между rdflib, jena fuseki и конечной точкой SPARQL. Как и в случае с SQL в реляционной базе данных, нам сначала нужна база данных, и мы делаем запросы, используя SQL, чтобы получить нужные результаты. Но в этом случае нужно ли мне создавать тройное хранилище для хранения данных, отображаемых в RDF, а затем использовать SPARQL для запроса данных RDF? Или я могу напрямую хранить данные RDF с помощью обновления SPARQL? - person SpongeBob; 07.05.2018
comment
Подобно SQL для СУБД, вы можете использовать оператор вставки SQL, чтобы сначала создать данные в базе данных. То же самое со SPARQL. Вы используете обновление RDFlib, которое вставляет SPARQL в вашу конечную точку Fuseki. Следовательно, вам сначала нужно настроить Fuseki. - person Henriette Harmse; 07.05.2018