创建图
您可以从以下任何数据源创建 GDS 图:
此外,Python 客户端提供了多种便捷方法来创建图,例如从 Pandas DataFrames 或一些 知名数据集 创建。
图数据模型
以下内容描述了可以与图的节点和关系相关联的信息。
节点
标签 (Labels)
一个节点可以拥有零个或多个标签。标签以字符串形式表示。标签可用于在图的使用过程中进行过滤,例如,通过指定 nodeLabels 参数,仅对节点的一个子集运行算法。
如果算法能够区分不同的关系类型,其文档中会通过 异构关系特性 (Heterogeneous relationships trait) 指出。
节点属性
Neo4j 图数据科学库能够通过额外的属性来增强节点。这些属性可以在投影图时从数据库中加载。许多算法在以 mutate 模式运行时,也可以将其结果作为一项或多项节点属性进行持久化。
支持的类型
Neo4j 图数据科学库并不支持 Neo4j 数据库支持的所有属性类型。每种受支持的类型都定义了一个回退值 (fallback value),用于指示该属性值未设置。
下表列出了支持的属性类型及其对应的回退值。
| Java 类型 | Cypher 类型 | 精度 | 回退值 |
|---|---|---|---|
Long |
整数 |
64 位有符号 |
|
双精度浮点数 |
浮点数 |
64 位有符号 |
|
Long 列表 |
整数列表 |
- |
|
Double 列表 |
浮点数列表 |
- |
|
1. -2^63 的值 |
|||
关系
GDS 中的关系可以是定向的,也可以是非定向的。此外,我们支持两个节点之间存在多个关系以及自环。您应该创建定向关系还是非定向关系,取决于关系的语义以及您想要运行的算法。
类型 (Type)
关系具有类型,以字符串形式表示。该类型可用于在图的使用过程中进行过滤,例如,通过指定 relationshipTypes 参数,仅对关系的一个子集运行算法。如果算法能够区分不同的关系类型,其文档中会通过 异构关系特性 指出。
方向 (Direction)
算法是否支持定向或非定向关系,可以通过其文档中的 非定向特性 (Undirected trait) 和 定向特性 (Directed trait) 来查看。
属性
Neo4j 图数据科学库并不支持 Neo4j 数据库支持的所有属性类型。具体而言,GDS 仅支持数值型关系属性,即 Long 和 Double。请注意,Long 在投影期间会被转换为 Double。
算法是否支持关系属性,可以通过其文档中的 加权关系特性 (Weighted relationships trait) 来查看。
关系 ID
投影 GDS 图中的关系仅由其源节点和目标节点标识。Neo4j 的关系 ID 不会被投影,GDS 也无法直接访问。为了访问关系的 ID,可以将其作为属性添加到关系投影中。
MATCH (source)-[r]->(target)
RETURN gds.graph.project(
'graph', source, target,
{
sourceNodeLabels: labels(source),
targetNodeLabels: labels(target),
relationshipType: type(r),
relationshipProperties: { relationship_id: id(r) } // (1)
}
)
| 1 | 关系 ID 作为属性添加到投影图中。 |