微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 SPARQL

如何解决使用 SPARQL

我有一个存储图表的 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 查询采用现有图并返回新图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?