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 не работает с локальными файлами.

Итак, мои вопросы:

  1. Как мне создать набор данных, содержащий все файлы RDF, чтобы я мог работать с ними, как если бы это был один объект?
  2. Как мне запросить такой объект для получения необходимой мне информации? Это возможно?
  3. Правильный ли это способ рассуждения?

Любое предложение о том, как решить проблему, приветствуется. Спасибо!

1 ответ

Решение
  1. Загрузите все файлы RDF/XML из их области загрузки и загрузите их в локальный экземпляр Virtuoso (который является механизмом, который они используют для своей общедоступной конечной точки SPARQL). У вас будет преимущество в том, что вы будете запускать гораздо более свежую версию (v7.2.5.1 или новее), будь то Open Source или Enterprise Edition, чем та, которую они получили (Open Source v7.1.0, с марта 2014 года!).

  2. Используйте новую локальную конечную точку SPARQL, которая по умолчанию находится по адресу http://localhost:8890/sparql. Вы можете настроить его так, чтобы он не ограничивал размеры результирующего набора, время выполнения запроса или иное.

  3. Кажется вероятным.

(PS Вы можете порекомендовать пользователям по адресу dati.camera.it (assistenza-dati@camera.it) обновить свой экземпляр Virtuoso. Ожидается значительное улучшение производительности и возможностей!)

Другие вопросы по тегам