2

我有一些编程基础,但我对 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. 这种推理方式是否正确?

任何有关如何解决该问题的建议表示赞赏。谢谢!

4

1 回答 1

2
  1. 从他们的下载区域下载所有 RDF/XML 文件,并将它们加载到Virtuoso的本地实例(恰好是他们用于公共 SPARQL 端点的引擎)。您将拥有运行更新版本(v7.2.5.1 或更高版本)的优势,无论是开源版还是企业版,而不是他们所拥有的版本(开源 v7.1.0,从 2014 年 3 月开始!)。

  2. 使用新的本地 SPARQL 端点,默认情况下位于http://localhost:8890/sparql。您可以将其配置为对结果集大小、查询运行时或其他方面没有限制。

  3. 似乎很有可能。

(PS 您可能会鼓励 dati.camera.it (assistenza-dati@camera.it) 上的人们升级他们的 Virtuoso 实例。有大量的性能和功能增强等待!)

于 2018-10-25T21:22:14.647 回答