创建图
您可以从以下任何数据源创建 GDS 图
此外,Python 客户端提供了几种方便的方法来创建图,例如从Pandas DataFrame或一些知名数据集。
图数据模型
以下描述了可以与图的节点和关系关联的信息。
节点
标签
一个节点可以具有零个或多个标签。标签表示为字符串。标签可用于在使用时过滤图,例如,通过指定nodeLabels参数,仅对节点的子集运行算法。
如果算法可以区分不同的关系类型,则在文档中由其异构关系特性指示。
节点属性
Neo4j 图数据科学库能够用其他属性增强节点。这些属性可以在投影图时从数据库中加载。许多算法还可以将其结果作为一种或多种节点属性保留,当它们以mutate
模式运行时。
支持的类型
Neo4j 图数据科学库不支持 Neo4j 数据库支持的所有属性类型。每种支持的类型还定义了一个回退值,用于指示此属性的值未设置。
下表列出了支持的属性类型及其对应的回退值。
Java 类型 | Cypher 类型 | 精度 | 回退值 |
---|---|---|---|
Long |
Integer |
64 位有符号 |
|
双精度浮点数 |
单精度浮点数 |
64 位有符号 |
|
Long 列表 |
Integer 列表 |
- |
|
Double 列表 |
Float 列表 |
- |
|
1. -2^63 的值 |
关系
GDS 中的关系可以是有向的或无向的。此外,我们还支持在两个节点之间存在多个关系以及自环。是否应该创建有向或无向关系取决于关系的语义以及您想要运行的算法。
类型
关系具有一个类型,表示为字符串。该类型可用于在使用时过滤图,例如,通过指定relationshipTypes参数,仅对关系的子集运行算法。如果算法可以区分不同的关系类型,则其文档中会指示异构关系特性。
属性
Neo4j 图数据科学库不支持 Neo4j 数据库支持的所有属性类型。具体来说,GDS 仅支持数字关系属性,即Long
、Double
。请注意,在投影期间,Long
将转换为Double
。
如果算法支持关系属性,则可以通过其文档中的加权关系特性查看。
关系 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 被添加为投影图的属性。 |