SPARQL-запрос к нескольким RDF-файлам - PullRequest
0 голосов
/ 25 октября 2018

У меня есть некоторые основы программирования, но я совершенно новичок в 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()

Однако у меня естьпроблема, потому что веб-сайт позволяет загружать только 10 000 значений. Насколько я понял, этот предел не может быть изменен. Поэтому я решил загрузить наборы данных на свой компьютер. Я пытался работать со всеми этими файлами rdf, но я не знаюкак это сделать, поскольку, насколько я знаю, SparqlWrapper не работает с локальными файлами.

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

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

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

1 Ответ

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

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

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

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

...