问题标签 [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.
nosql - 什么是图数据库?
查看用 Java 编写的嵌入式 NoSQL 数据库的选项,出现了图形数据库。什么是图形数据库(特别是与键值存储和面向文档的数据库相比),我什么时候使用(什么时候不使用)?
neo4j - 如何在 Gremlin 中合并具有相同属性的顶点?
基本上,如果我有一个图表,其中 Rob 有一个苹果,Anna 也有一个这样的苹果:
Rob --has-->apple Anna --has-->apple
这显然是一个错误。我只想要一个带有 Rob 和 Anna 边缘的“苹果”顶点:Rob --has--> apple <--has--Anna
Gremlin 中是否有一个选项可以“合并”所有带有标签“苹果”的顶点并且仍然有边缘?抱歉这个不好的问题,英语不是我的第一语言,我在这个 TT 上相当新,但希望有人能提供帮助......
graph-databases - 我可以在 OrientDB 中找到所有没有连接边的顶点吗?
有没有一种简单的方法来查询没有传入边的所有顶点的集群?
php - 从用户的关注者计算用户的重要性或“之间的中心性”?
我想知道如何根据用户与他人的联系找到用户帐户之间的有趣关系,例如连接最多或最有价值的用户。
下面我有我使用的两个表。一个拥有所有用户,另一个拥有他们关注的用户的密钥。
我在寻找什么类型的算法?
假设不重要的人很少或没有追随者,我怎样才能找到图表中心的人?我认为他们会很重要,因为他们有重要的人跟随他们。
更新
正如 David 和 Steve 所指出的,给定的节点有多接近,哪些节点形成子社区,以及哪些用户的联系最紧密,这些都是可以从该模式中提取的有用数据的示例。
由于现在许多站点都使用这种“追随者”设计,因此我开始赏金,希望获得一些可能对各种各样的人有用的可靠的 SQL 或编程语言实现。
值得注意的是,虽然某些算法的结果令人着迷,但其他算法(例如查找相关节点)对我们网站的用户来说是有价值的,因为我们可以向他们推荐东西。
graph-databases - OrientDB:查找给定类没有直接相邻顶点的所有顶点
使用 OrientDB 的查询语言,如何找到集群a
中没有以类顶点结尾的出边的所有顶点b
(即没有类的直接邻居顶点b
)?他们是否有其他传出边缘并不重要。
database - RDBMS 能做什么 Neo4j(和图形数据库)不能做的事情?
“图形数据库 – 转换 a–> RDBMS”
Neo4j 站点似乎暗示您可以在 RDBMS 中做的任何事情,都可以在 Neo4j 中做。
在选择 Neo4j 作为 RDBMS 的替代品之前,我需要回答一些疑问。
我对 Neo4j 感兴趣
- 能够快速修改数据“模式”
- 自然表达实体而不是关系和规范化的能力
- ...这导致了高度表达的代码(比 ORM 更好)
这是我对它的功能感兴趣的 NoSQL 解决方案,而不是高性能。
问题: Neo4j 是否存在任何可能使其不适合作为 RDBMS 替代品的问题?
我特别关心这些:
- 我必须在应用程序逻辑中实现任何数据库功能吗?(例如,您必须在应用层为一些 NoSQL DB 实现连接)
- 字段“索引”是否允许比 O(n) 更快的查找?
- 如何处理热备份和复制?
- “改变”模式或让具有不同版本模式的实体一起生活的任何问题?
nosql - 手动从 URL 创建图形数据库的选项有哪些?
所以我必须主观/手动复制一些 URL。然后,我将通过链接绘制出这些 URL 之间的关系。我可以通过将链接粘贴到 Neo4j、Infogrid 等图形数据库中来做到这一点。
但是,有没有办法使用其他一些在线工具来简化和实施相同的方法。问题是这个过程会在很长一段时间内重复,并且会不断创建许多关系,我发现粘贴链接并离线创建如此多的关系会很麻烦且耗时。
欢迎任何建议。
neo4j - 为什么Gremlin idx 虽然数据库不为空但返回null?
我正在使用以下方法打开图表:
然后使用以下方法添加顶点:
之后我可以看到数据库有一个顶点(使用 Gephi)但是当我运行时:
它总是返回假。是否应该以某种方式打开索引?Gremlin 是否需要特定的 Neo4j 版本?
添加一些日志信息:
在 Gremlin 1.3 上试过这个 - 结果相同。所以我想这是我想念的东西。
date - 如何在 Java 中使用 GremlinPipeline 和 PipeFunctions 进行查询?
在图形模型中,我有一个名为timeCategory
childs的顶点year-vertices
,month-vertices
并且day-vertices
. 我可以用 with 来识别一年,用edge-label
with来识别IS_YEAR
一个月IS_MONTH
,等等。
我想做一个查询,返回给定年份范围的所有顶点,类似于以下代码:
...这对于打印所有属性值(作为整数的年份)非常有用,但我需要的是所有 VERTICES 的列表,其中年份属性在给定范围之间。
我的第二个问题是关于从管道中的值进行交叉。
例如:我有三个管道,一个年管道、一个月管道和一个日管道,这些管道包含标识年、月或日的顶点。
是否有可能让所有传出顶点到一个特殊的日期......
半代码:allVertices2012-01-01 = yearpipe.out() AND monthpipe.out() AND daypipe.out
当然,我可以在一些 for-each 循环中进行一些比较,但我想知道是否有一个(简单的)gremlin - 可以做得更好的方法。
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”之类的答案......