我有一个存储图表的 CSV 格式文件。它包含两列源顶点 ID 和目标顶点 ID。 Id 是 [0,max_vertex-1] 范围内的整数。我想将其转换为RDF格式文件。我知道我们可以通过使用“CONSTRUCT”短语的 SPARQL 查询来完成此操作。 但不完全确定如何编写我的查询,因为我这里没有主语、谓语和宾语。 如果所有边的权重相等或没有权重,只是一个简单的无向图,SPARQL 是否有助于编写查询以将 CSV 文件转换为 RDF 格式。
如果存在这样的查询,有人可以帮助我进行SPARQL查询吗?我对 SPARQL 不太了解。
听起来您正在尝试开发的是数据(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 查询采用现有图形并返回新图形。