问题标签 [property-graph]

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 投票
1 回答
41 浏览

graph - 在属性图中表示一名球员多年来为同一支球队效力

下面是我计划用来表示各种体育联盟的属性图模型。我想知道代表球员多年来为同一支球队效力这一事实的最佳方法。例如,John 可能在 2011 年、2012 年和 2013 年与 Broncos 一起比赛。

在此处输入图像描述

0 投票
1 回答
176 浏览

graph - 属性图(Neo4j)设计:具有多个关系的单个节点或每个事件发生的新节点?

假设我有两个联赛 L1 和 L2。每个联赛都可以进行多轮比赛,例如季后赛、四分之一决赛、半决赛和决赛。此外,我还需要表示happens_after事实,例如四分之一决赛发生在季后赛之后,半决赛发生在四分之一决赛之后,总决赛发生在半决赛之后。

问题

我的图表是否应该为每一轮都有一个节点,并且每个联赛都应该链接到这些轮?这样我们只是在创建新的关系(例如,L1 和 L2 都与季后赛有关系)但只有一个季后赛节点。但是,这限制了happens_after关系,因为某些联赛可以有更多的回合(例如,第2 回合可以在四分之一决赛之前进行)。有没有更好的方法来表示这一点?

用例

  1. 需要能够找到给定联赛的所有回合。
  2. 需要能够找到给定联赛的所有轮次的顺序以及每轮发生的日期。

编辑

在此处输入图像描述

0 投票
3 回答
1310 浏览

graph - 链表的 Neo4j 密码查询

我有下图。联赛 (l1) 以LEVEL r1 开始,并且NEXT级别使用NEXT关系相关,如图所示。

我正在寻找的是按顺序查找给定联赛的所有级别。因此,对于上图,预期输出为r1, r2, r3, r4。我有以下查询,但它正在返回所有路径。

用于创建此图的密码。这已经在console.neo4j.org上设置(确保更改 id)

0 投票
1 回答
1214 浏览

sparql - 什么样的用例适合 SPARQL / RDF 三元存储,但不适合属性图?

我看到 SPARQL / RDF 是标准,这很酷。但是什么类型的用例会导致人们选择三元组而不是属性图呢?

0 投票
1 回答
68 浏览

graph - 图探索:选择使用传入边还是传出边会影响性能吗?

一段时间以来,我一直在修补 Graphs,目的是使用它们实现服务器端堆栈的适当部分。我使用过 Scala-Graph 和 Neo4J,并且正在学习 Spark GraphX。在我实现的几乎所有应用程序中,模型都是属性图的模型(节点 -> 边缘 -> 节点,带有属性)。

在设计图(准确地说是 DAG)时,如果我发现两个节点之间存在强且有向的关系,我会设置从一个节点到一个节点的边。这是显而易见且直观的。如果一个人喜欢一个站点,则带有属性“喜欢”的边缘将它们连接起来。因此:


[Nirmalya] -- (喜欢) --> [StackOverFlow]

[约翰] -- (喜欢) --> [StackOverFlow]

[Ted] -- (喜欢) --> [GoogleGroups ]

[Nirmalya] -- (喜欢) --> [Neo4J]


现在,使用传出边缘,我可以轻松找出 Nirmalya喜欢哪些网站。

但是,当我想知道还有谁喜欢Nirmalya 喜欢的东西(即 John)时,我倾向于认为我也应该创建从站点类型节点到人员类型节点的边(使用属性“isLikedBy”),所以路径是明显的,遍历是直观的。每个人和站点都必须在两个方向上连接,以便我可以从任一方向到达另一个以回答像这样的查询。


[Nirmalya] -- (喜欢) --> [StackOverFlow] -- (IsLikedBy) --> [John]


但是从专家给出的许多例子中,我看到这不是规定的。相反,这是通过使用像incoming这样的操作符来实现的。换句话说,如果两个节点之间设置了一条边,我不需要明确设置边的两个方向(只需“喜欢”就足够了,“isLikedBy”是多余的)。邻接矩阵的实现也许使这成为可能,但我有点困惑,因为即使在 DAG 中该方向不明确时,我也被允许推导出相反的方向。

我的问题是我的理解差距在哪里?理想情况下是否应该存在“IsLikedBy”方向,但我们正在优化?或者,是否存在需要这种双向边缘并且我需要发现它们的用例?我是否完全缺少理论基础?

我会很高兴变得更聪明。

0 投票
1 回答
1107 浏览

graph - Spark GraphX - 如何从 Spark 中的 JSON 文件中读取数据并根据数据创建图表?

我是 Spark 和 Scala 的新手,我正在尝试从 JSON 文件中读取一堆高音扬声器数据,并将其转换为一个顶点代表一条推文而边缘连接到推文的图,这些推文是原始发布的项目。到目前为止,我已经设法从 JSON 文件中读取并找出我的 RDD 的架构。现在我相信我需要以某种方式从 SchemaRDD 对象中获取数据,并为顶点创建一个 RDD,为边缘创建一个 RDD。这是解决这个问题的方法还是有替代解决方案?任何帮助和建议将不胜感激。

0 投票
1 回答
308 浏览

graph - Gremlin:如何合并遍历路径上遇到的两个对象的选定属性

让我们假设我有来自不同农场树木的苹果。所以树结苹果,农场有树。我想要一份苹果列表,其中还包含对它们来自的农场的引用。

我想遍历和图表来报告每个苹果,并在其中包含农场 ID。我试过这样的事情:

我得到的输出是:

我想要的是:

0 投票
1 回答
152 浏览

graph - Neo4j MATCH 然后 MERGE 太多的 DB 点击

这是查询:

轮廓

如果查询已经将 n、m 对缩小到 6,781 行,为什么 Merge 阶段会获得如此多的 DB 命中?

该阶段的详细信息表明:

0 投票
1 回答
235 浏览

sparql - 属性图可以转换为 RDF 数据集吗?

我们知道 neo4j 和 Titan 使用属性图作为他们的数据模型,比 RDF 更复杂和灵活。但是,我的团队正在构建一个名为gStore的图形数据库,它基于 RDF 数据集。gStore 不支持 N-Quads 或属性图,因为它无法处理除标签之外还有属性的边。

下面是一个 RDF 数据集: <John> <height> "170" <John> <play> <football>

下面是一个 N-Quads 数据集: <John> <height> "170" "2017-02-01" <John> <play> <football> "2016-03-04"

您可以看到属性图更通用,可以表示现实生活中的更多关系。但是,RDF 更简单,我们的系统就是基于它。改变整个系统的数据模型真的很难。有没有办法将属性图转换为 RDF 图?如果是这样,该怎么做?

如果数据模型转换好,我们如何查询呢?SPARQL 语言用于查询 RDF 数据集,neo4j 设计了 ​​Cypher 语言来查询其属性图。但是当我们将属性图转换为 RDF 图时,如何查询呢?

0 投票
1 回答
395 浏览

neo4j - 这种场景下如何设计图数据库?

这是我的场景。我有一个预定义的书籍数据类型结构。为了简单起见,仅以它为例。结构如下图所示。这是一个带标签的属性图,信息是不言自明的。这个数据类型结构是固定的,我不能改变它。我只是用它。

DTR 示例

当有 1 本书时,我们称它为Harry Potter,在系统中,它可能如下所示:

DTR 1 本书

因此,这本书有自己的属性(ID、Name、...),并且还包含一个字段 type MandatoryData。通过查看此图,我们可以了解有关该书的所有信息。

当我在系统中有 2 本书时会出现问题,如下所示:

DTR 2 本书

在这种情况下,还有一本名为Graph DB的书,其中突出显示了这些信息。

这种设计的问题是:我们不知道哪些信息属于哪本书。例如,我们不能再区分publishedYear了。

我的问题是:如何解决或避免这个问题?MandatoryData我应该为每本书创建 1个吗?你能给我推荐什么设计吗?

我正在使用 Neo4j 和 Cypher。谢谢您的帮助!