使用 SPARQL 将 CSV 格式的无向图转换为 RDF 格式

问题描述 投票:0回答:2

我有一个存储图表的 CSV 格式文件。它包含两列源顶点 ID 和目标顶点 ID。 Id 是 [0,max_vertex-1] 范围内的整数。我想将其转换为RDF格式文件。我知道我们可以通过使用“CONSTRUCT”短语的 SPARQL 查询来完成此操作。 但不完全确定如何编写我的查询,因为我这里没有主语、谓语和宾语。 如果所有边的权重相等或没有权重,只是一个简单的无向图,SPARQL 是否有助于编写查询以将 CSV 文件转换为 RDF 格式。

如果存在这样的查询,有人可以帮助我进行SPARQL查询吗?我对 SPARQL 不太了解。

sparql rdf graph-databases
2个回答
2
投票

听起来您正在尝试开发的是数据(csv 文件)和图表(然后您可以在其上运行 SPARQL 查询)之间的中间层。您所追求的中间层通常称为“三重化”,即将原始数据转换为 RDF 三元组的过程。 执行此操作的一种常见方法是使用 Python 的 rdflib。作为草图,您应该将 csv 加载到 python 中并循环每一行,在每次迭代时构建适当的三元组并将其添加到图表中。

您提到的一个直接问题是您没有任何谓词 - 这是 RDF 数据模型的绝对要求(这是连接节点的方式)。我建议找到一个具有适当术语的本体并使用它来连接节点,或者如果您正在探索数据,请像我在下面所做的那样组成您自己的术语。

一些伪代码...

import rdflib # Create the graph object which holds the triples graph = rdflib.Graph() For each row in csv file: s = rdflib.URIRef(f'#/{row["column_1]}') p = rdflib.URIRef("#connectsTo") o = rdflib.URIRef(f'#/{row["column_2"]}') graph.add((s, p, o)) g.serialize(destination='graph.ttl', format='turtle')

从这里,您可以将 
graph.ttl

加载到支持 RDF 的图形存储中,或对其运行单独的推理机。

为了避免与 SPARQL 产生任何混淆 - 它用于查询

现有

图; CONSTRUCT 查询采用现有图形并返回新图形。


0
投票
https://github.com/zzheng90/csv2rdf-converter

© www.soinside.com 2019 - 2024. All rights reserved.