图数据库和RDF三元组:Python中图数据的存储

2024-01-02

我需要用 python 开发一个图形数据库(如果有人能加入我的开发,我会很高兴。我已经有了一些代码,但我很乐意讨论它)。

我在互联网上做了研究。在爪哇语中,neo4j http://neo4j.org/是一个候选者,但我找不到任何有关实际磁盘存储的信息。在Python中,有很多图数据模型 http://wiki.python.org/moin/PythonGraphApi(请参阅此 pre-PEP 提案,但它们都不能满足我从磁盘存储和检索的需求。

不过,我确实了解三重存储。 Triplestores 基本上是 RDF 数据库,因此可以将图形数据模型映射到 RDF 中并存储,但我通常对此解决方案感到不安(主要是由于缺乏经验)。一个例子是Sesame http://www.openrdf.org/。事实上,在任何情况下,您都必须从内存中的图形表示转换为 RDF 表示,反之亦然,除非客户端代码想要直接破解 RDF 文档,而这几乎是不可能的。这就像直接处理数据库元组,而不是创建对象。

存储和检索的最新技术是什么(a la目前,Python 中的图形数据 DBMS)?希望在对此感兴趣的人的帮助下,并与 Graph API PEP 的提议者合作,开始开发一个实现是否有意义?请注意,这将是我接下来几个月工作的一部分,所以我对这个最终项目的贡献是非常严肃的;)

Edit: 也找到了有向边 http://blog.directededge.com/2009/02/27/on-building-a-stupidly-fast-graph-database/,但它似乎是一个商业产品


我都用过Jena http://jena.sourceforge.net/,这是一个 Java 框架,并且快板 http://www.franz.com/agraph/allegrograph/(Lisp、Java、Python 绑定)。 Jena 有一个用于存储图形数据的姐妹项目,并且已经存在了很长很长时间。 Allegrograph 非常好,并且有免费版本,我想我会推荐这个,因为它易于安装、免费、快速,并且您可以立即启动并使用。学习一点 RDF 和 SPARQL 所获得的力量可能非常值得您花时间。如果您已经了解 SQL,那么您就有了一个良好的开端。能够使用 SPARQL 查询图形将为您带来一些巨大的好处。序列化为 RDF 三元组很容易,并且某些文件格式非常简单(例如 NT)。我举个例子。假设您有以下图形节点-边缘-节点 ID:

1 <- 2 -> 3
3 <- 4 -> 5

这些已经是主语谓语宾语形式,因此只需在其上添加一些 URI 表示法,将其加载到三元组存储中并通过 SPARQL 随意查询。这是 NT 格式:

<http://mycompany.com#1> <http://mycompany.com#2> <http://mycompany.com#3> .
<http://mycompany.com#3> <http://mycompany.com#4> <http://mycompany.com#5> .

现在查询距离节点 1 两跳的所有节点:

SELECT ?node
WHERE {
    <http://mycompany.com#1> ?p1 ?o1 .
    ?o1 ?p2 ?node .
}

这当然会产生http://mycompany.com#5>.

另一位候选人是Mulgara http://www.mulgara.org/,用纯Java编写。因为你似乎对 Python 更感兴趣,但我认为你应该先看看 Allegrograph。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图数据库和RDF三元组:Python中图数据的存储 的相关文章

  • 优化完美平方问题,类似于Python中的硬币找零

    我这里有一个硬币兑换的解决方案 python 中的 leetcode 硬币兑换 https stackoverflow com questions 69517078 coin change leetcode in python 因为完全平方
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • 如何移动我的图像? python 3.10.4 pygame

    我会移动我的图像 图像是matiskinfinal png 我尝试将像素添加到 x 或其他我不知道它是什么的东西 因为我真的是 python 的初学者 pygame但是是 x x 变化 但图像没有移动 import os import py
  • 如何使用 lxml 解析包含前缀但没有名称空间声明的 XML?

    我有一堆使用前缀但没有相应名称空间声明的 XML 文件 像这样的东西
  • 全静态方法和应用单例模式有什么区别?

    我正在创建一个数据库来存储有关我的网站用户的信息 我正在使用 stuts2 因此使用 Java EE 技术 对于数据库 我将创建一个 DBManager 我应该在这里应用单例模式还是将其所有方法设为静态 我将使用这个 DBManager 进
  • Python sqlite3参数化删除表

    我在 python 中删除 sqlite3 表时遇到问题 我正在使用标准sqlite3模块 self conn sqlite3 connect sql drop table self conn execute sql u table nam
  • 使用 Pymongo 从 Windows 连接到 AWS 实例上的 MongoDB

    此行反复抛出错误 client MongoClient ec2 12 345 67 89 us east 2 compute amazonaws com 27017 ssl True ssl keyfile C mongo pem 由于显而
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • 类型错误:需要 Future 或协程

    我尝试在 asyncssh 上自动重新连接 ssh 客户端 SshConnectManager 必须留在后台并在需要时进行 ssh 会话 class SshConnectManager object def init self host u
  • Flask 中的 import 和 extends 有什么区别?

    我正在阅读 Flask Web 开发 在例4 3中 extends base html import bootstrap wtf html as wtf 我想知道 extends 和 import 有什么区别 我认为它们在用法上很相似 在什
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 从邻接表计算图的入度

    我遇到了这个问题 其中需要根据邻接列表表示来计算图的每个节点的入度 for each u for each Adj i where i u if i u E in degree u 1 现在根据我的说法 它的时间复杂度应该是O V E V
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • 使用 statsmodels.formula.api 中的 ols - 如何删除常数项?

    我正在遵循第一个例子statsmodels教程 http statsmodels sourceforge net devel http statsmodels sourceforge net devel 如何指定在 ols 中不使用常数项进
  • 如何使用 pygame.mixer 重复音乐?

    我创建了以下使用 pygame mixer 播放 mp3 音乐的代码 然而 音乐不会重复 有什么想法可以让音乐重复播放吗 这是代码 playlist list playlist append put music here mp3 playl
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • Microsoft SQL 数据库的 WebSocket 侦听器

    我目前正在开发一个项目 该项目必须使用 WebSockets 作为将数据传输到客户端的方式 基础设施看起来像这样 客户端 gt Web 服务器 gt Microsoft SQL 数据库 我想最理想的情况应该是这样的 客户端打开一个到服务器的

随机推荐