问题标签 [graph-databases]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
548 浏览

nosql - 什么是图数据库?

查看用 Java 编写的嵌入式 NoSQL 数据库的选项,出现了图形数据库。什么是图形数据库(特别是与键值存储和面向文档的数据库相比),我什么时候使用(什么时候不使用)?

0 投票
2 回答
751 浏览

neo4j - 如何在 Gremlin 中合并具有相同属性的顶点?

基本上,如果我有一个图表,其中 Rob 有一个苹果,Anna 也有一个这样的苹果:

Rob --has-->apple Anna --has-->apple

这显然是一个错误。我只想要一个带有 Rob 和 Anna 边缘的“苹果”顶点:Rob --has--> apple <--has--Anna

Gremlin 中是否有一个选项可以“合并”所有带有标签“苹果”的顶点并且仍然有边缘?抱歉这个不好的问题,英语不是我的第一语言,我在这个 TT 上相当新,但希望有人能提供帮助......

0 投票
4 回答
2103 浏览

graph-databases - 我可以在 OrientDB 中找到所有没有连接边的顶点吗?

有没有一种简单的方法来查询没有传入边的所有顶点的集群?

0 投票
1 回答
1409 浏览

php - 从用户的关注者计算用户的重要性或“之间的中心性”?

我想知道如何根据用户与他人的联系找到用户帐户之间的有趣关系,例如连接最多或最有价值的用户。

下面我有我使用的两个表。一个拥有所有用户,另一个拥有他们关注的用户的密钥。

我在寻找什么类型的算法?

假设不重要的人很少或没有追随者,我怎样才能找到图表中心的人?我认为他们会很重要,因为他们有重要的人跟随他们。

更新

正如 David 和 Steve 所指出的,给定的节点有多接近,哪些节点形成子社区,以及哪些用户的联系最紧密,这些都是可以从该模式中提取的有用数据的示例。

由于现在许多站点都使用这种“追随者”设计,因此我开始赏金,希望获得一些可能对各种各样的人有用的可靠的 SQL 或编程语言实现。

值得注意的是,虽然某些算法的结果令人着迷,但其他算法(例如查找相关节点)对我们网站的用户来说是有价值的,因为我们可以向他们推荐东西。

0 投票
1 回答
1729 浏览

graph-databases - OrientDB:查找给定类没有直接相邻顶点的所有顶点

使用 OrientDB 的查询语言,如何找到集群a中没有以类顶点结尾的出边的所有顶点b(即没有类的直接邻居顶点b)?他们是否有其他传出边缘并不重要。

0 投票
3 回答
2695 浏览

database - RDBMS 能做什么 Neo4j(和图形数据库)不能做的事情?

“图形数据库 – 转换 a–> RDBMS”

Neo4j 站点似乎暗示您可以在 RDBMS 中做的任何事情,都可以在 Neo4j 中做。

在选择 Neo4j 作为 RDBMS 的替代品之前,我需要回答一些疑问。


我对 Neo4j 感兴趣

  • 能够快速修改数据“模式”
  • 自然表达实体而不是关系和规范化的能力
  • ...这导致了高度表达的代码(比 ORM 更好)

这是我对它的功能感兴趣的 NoSQL 解决方案,而不是高性能。


问题: Neo4j 是否存在任何可能使其不适合作为 RDBMS 替代品的问题?

我特别关心这些:

  • 我必须在应用程序逻辑中实现任何数据库功能吗?(例如,您必须在应用层为一些 NoSQL DB 实现连接)
  • 字段“索引”是否允许比 O(n) 更快的查找?
  • 如何处理热备份和复制?
  • “改变”模式或让具有不同版本模式的实体一起生活的任何问题?
0 投票
1 回答
162 浏览

nosql - 手动从 URL 创建图形数据库的选项有哪些?

所以我必须主观/手动复制一些 URL。然后,我将通过链接绘制出这些 URL 之间的关系。我可以通过将链接粘贴到 Neo4j、Infogrid 等图形数据库中来做到这一点。

但是,有没有办法使用其他一些在线工具来简化和实施相同的方法。问题是这个过程会在很长一段时间内重复,并且会不断创建许多关系,我发现粘贴链接并离线创建如此多的关系会很麻烦且耗时。

欢迎任何建议。

0 投票
2 回答
1177 浏览

neo4j - 为什么Gremlin idx 虽然数据库不为空但返回null?

我正在使用以下方法打开图表:

然后使用以下方法添加顶点:

之后我可以看到数据库有一个顶点(使用 Gephi)但是当我运行时:

它总是返回假。是否应该以某种方式打开索引?Gremlin 是否需要特定的 Neo4j 版本?

添加一些日志信息:

在 Gremlin 1.3 上试过这个 - 结果相同。所以我想这是我想念的东西。

0 投票
2 回答
2679 浏览

date - 如何在 Java 中使用 GremlinPipeline 和 PipeFunctions 进行查询?

在图形模型中,我有一个名为timeCategorychilds的顶点year-verticesmonth-vertices并且day-vertices. 我可以用 with 来识别一年,用edge-labelwith来识别IS_YEAR一个月IS_MONTH,等等。

我想做一个查询,返回给定年份范围的所有顶点,类似于以下代码:

...这对于打印所有属性值(作为整数的年份)非常有用,但我需要的是所有 VERTICES 的列表,其中年份属性在给定范围之间。

我的第二个问题是关于从管道中的值进行交叉。

例如:我有三个管道,一个年管道、一个月管道和一个日管道,这些管道包含标识年、月或日的顶点。

是否有可能让所有传出顶点到一个特殊的日期......

半代码:allVertices2012-01-01 = yearpipe.out() AND monthpipe.out() AND daypipe.out

当然,我可以在一些 for-each 循环中进行一些比较,但我想知道是否有一个(简单的)gremlin - 可以做得更好的方法。

0 投票
1 回答
234 浏览

algorithm - 链接分析模式搜索

问题描述

我正在一个巨大的图形数据库上实现一个链接分析算法。

图数据库由实体(顶点)和关系(边)构成。

每个实体类型都有属性。例如Person : [age,height,weight]

每个关系也有属性:例如Call(Phone,Phone) : [date, duration]或 Own(Person, Phone) : [start-date, end-date]。

现在,我得到了具有以下结构的模式:

[实体类型,约束] [关系类型,约束] [实体类型,约束] [关系类型,约束] ... [实体类型,约束]

例如:

[人,年龄>20] [拥有,开始日期>1/1/2010] [电话,以“5”结尾] [通话日期>1/1/2010] [电话,以“6”开头] [拥有由,开始日期<1/2/2011] [人,身高>40]

我需要为模式中的所有实体和关系找到所有有效的分配。

我可以使用以下原语查询数据库:

  • 查找给定约束集的前 1000 个[entity-type,relationship-type,entity-type]分配。
  • 为上述查找下一个 1000
  • 为给定的一组约束找到第一个[concrete-entity,relationship-type,entity-type]分配。
  • 为上述查找下一个 1000

将给定查询的所有答案都保存在 RAM 中是不可能的。每个实体-关系-实体三元组可能有数百万(数十亿?)的分配。但是,假设整个模式的分配数量很小。

我尝试了什么:

对于链ET1-RT1-ET2-RT2-ET3-RT3 ... 一个简单的实现是:

问题是我可能不止一次地解决相同的子问题。

我正在寻找一种消除这种冗余的算法,这也是内存高效的。

笔记:

我正在寻找一种算法。不适用于诸如“使用 SQL JOIN”/“使用 SPARQL”之类的答案......