SPARQL-запрос к нескольким RDF-файлам
У меня есть некоторые основы программирования, но я совершенно новичок в RDF или Sparql, поэтому я надеюсь, что будет понятно в дальнейшем. Я пытаюсь загрузить некоторые данные, доступные по адресу http://data.camera.it/data/en/datasets/, и все данные организованы в формате rdf-xml в онтологии.
Я заметил, что на этом веб-сайте есть редактор запросов SPARQL онлайн ( http://dati.camera.it/sparql), и, используя некоторые из их примеров, я смог получить и преобразовать некоторые данные, которые мне нужны, с помощью Python. Я использовал следующий код и запрос, используя SparqlWrapper
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://dati.camera.it/sparql")
sparql.setQuery(
'''
SELECT distinct ?deputatoId ?cognome ?nome ?data ?argomento titoloSeduta ?testo
WHERE {
?dibattito a ocd:dibattito; ocd:rif_leg <http://dati.camera.it/ocd/legislatura.rdf/repubblica_17>.
?dibattito ocd:rif_discussione ?discussione.
?discussione ocd:rif_seduta ?seduta.
?seduta dc:date ?data; dc:title ?titoloSeduta.
?seduta ocd:rif_assemblea ?assemblea.
?discussione rdfs:label ?argomento.
?discussione ocd:rif_intervento ?intervento.
?intervento ocd:rif_deputato ?deputatoId; dc:relation ?testo.
?deputatoId foaf:firstName ?nome; foaf:surname ?cognome .
}
ORDER BY ?data ?cognome ?nome
LIMIT 100
'''
)
sparql.setReturnFormat(JSON)
results_raw = sparql.query().convert()
Однако у меня есть проблема, потому что веб-сайт позволяет загружать только 10000 значений. Насколько я понял, этот предел не может быть изменен. Поэтому я решил загрузить наборы данных на свой компьютер. Я пытался работать со всеми этими файлами rdf, но я не знаю, как это сделать, поскольку, насколько я знаю, SparqlWrapper не работает с локальными файлами.
Итак, мои вопросы:
- Как мне создать набор данных, содержащий все файлы RDF, чтобы я мог работать с ними, как если бы это был один объект?
- Как мне запросить такой объект для получения необходимой мне информации? Это возможно?
- Правильный ли это способ рассуждения?
Любое предложение о том, как решить проблему, приветствуется. Спасибо!
1 ответ
Загрузите все файлы RDF/XML из их области загрузки и загрузите их в локальный экземпляр Virtuoso (который является механизмом, который они используют для своей общедоступной конечной точки SPARQL). У вас будет преимущество в том, что вы будете запускать гораздо более свежую версию (v7.2.5.1 или новее), будь то Open Source или Enterprise Edition, чем та, которую они получили (Open Source v7.1.0, с марта 2014 года!).
Используйте новую локальную конечную точку SPARQL, которая по умолчанию находится по адресу http://localhost:8890/sparql. Вы можете настроить его так, чтобы он не ограничивал размеры результирующего набора, время выполнения запроса или иное.
Кажется вероятным.
(PS Вы можете порекомендовать пользователям по адресу dati.camera.it (assistenza-dati@camera.it) обновить свой экземпляр Virtuoso. Ожидается значительное улучшение производительности и возможностей!)