列出图
可以使用 gds.graph.list() 过程检索目录中关于图的信息。
语法
CALL gds.graph.list(
graphName: String
) YIELD
graphName: String,
database: String,
databaseLocation: String,
configuration: Map,
nodeCount: Integer,
relationshipCount: Integer,
schema: Map,
schemaWithOrientation: Map,
degreeDistribution: Map,
density: Float,
creationTime: Datetime,
modificationTime: Datetime,
sizeInBytes: Integer,
memoryUsage: String
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
是 |
图在目录中存储时使用的名称。如果未指定图名称,将列出所有图的信息。如果指定了图名称但在目录中未找到,则会返回一个空列表。 |
| 名称 | 类型 | 描述 |
|---|---|---|
|
字符串 |
图的名称。 |
|
字符串 |
图已投影到的数据库名称。 |
|
字符串 |
投影出该图的数据库位置。可以是 |
|
Map |
用于在内存中投影图的配置。 |
|
整数 |
图中的节点数。 |
|
整数 |
图中关系的计数。 |
|
Map |
投影图中包含的节点标签、关系类型和属性。 |
|
Map |
投影图中包含的节点标签、关系类型、关系方向和属性。 |
|
Map |
图中度的直方图。 |
|
浮点数 |
图的密度。 |
|
Datetime |
图投影的时间。 |
|
Datetime |
图最后一次被修改的时间。 |
|
整数 |
Java 堆中用于存储该图的字节数。此功能并非在所有 JDK 上都受支持,可能会返回 -1。 |
|
字符串 |
|
1. 在下一个主要版本中,此字段将具备 |
||
该信息包含关于图的基本统计数据,例如节点和关系计数。结果字段 creationTime 指示图在内存中投影的时间。结果字段 modificationTime 指示图被处于 mutate 模式运行的算法更新的时间。
database 列指代相应图投影所在的数据库名称。仅允许在投影该命名图的数据库上引用它。
schema 由图中存储的节点和关系的相关信息组成。对于每个节点标签,模式会将标签映射到其属性键及其对应的属性类型。同样,模式将关系类型映射到其属性键和属性类型。属性类型可以是 Integer、Float、List of Integer 或 List of Float。
schemaWithOrientation 是 schema 的扩展版本,它将每个关系类型映射到其方向和属性。
对于较大的图,计算 degreeDistribution 字段可能会非常耗时。它的计算结果会按图进行缓存,因此后续针对同一图的列表查询会很快。为避免计算度分布,请指定一个省略它的 YIELD 子句。注意,不指定 YIELD 子句等同于请求返回所有可能的字段。
density 是 relationshipCount 除以给定 nodeCount 的简单图所能拥有的最大关系数的结果。
示例
|
以下所有示例应在空数据库中运行。 这些示例以 Cypher 投影 为准。原生投影将在未来的版本中弃用。 |
为了演示 GDS 图列表的功能,我们将在 Neo4j 中创建一个小型社交网络图。
CREATE
(florentin:Person { name: 'Florentin', age: 16 }),
(adam:Person { name: 'Adam', age: 18 }),
(veselin:Person { name: 'Veselin', age: 20 }),
(florentin)-[:KNOWS { since: 2010 }]->(adam),
(florentin)-[:KNOWS { since: 2018 }]->(veselin)
Person 节点和 KNOWS 关系MATCH (n:Person)
OPTIONAL MATCH (n)-[r:KNOWS]->(m:Person)
RETURN gds.graph.project('personsCypher', n, m,
{
sourceNodeLabels: labels(n),
targetNodeLabels: labels(m),
relationshipType: type(r)
}
)
age 属性的 Person 节点和 KNOWS 关系MATCH (n:Person)
OPTIONAL MATCH (n)-[r:KNOWS]->(m:Person)
RETURN gds.graph.project('personsWithAgeCypher', n, m,
{
sourceNodeLabels: labels(n),
targetNodeLabels: labels(m),
sourceNodeProperties: n { .age },
targetNodeProperties: m { .age },
relationshipType: type(r)
}
)
Person 节点和 KNOWS 关系CALL gds.graph.project('personsNative', 'Person', 'KNOWS')
列出目录中所有图的基本信息
CALL gds.graph.list()
YIELD graphName, nodeCount, relationshipCount
RETURN graphName, nodeCount, relationshipCount
ORDER BY graphName ASC
| graphName | nodeCount | relationshipCount |
|---|---|---|
"personsCypher" |
3 |
2 |
"personsNative" |
3 |
2 |
"personsWithAgeCypher" |
3 |
2 |
列出目录中特定命名图的扩展信息
CALL gds.graph.list('personsCypher')
YIELD graphName, configuration, schemaWithOrientation
RETURN graphName, configuration.query AS query, schemaWithOrientation
| graphName | query | schemaWithOrientation |
|---|---|---|
"personsCypher" |
"MATCH (n:Person) OPTIONAL MATCH (n)-[r:KNOWS]->(m:Person) RETURN gds.graph.project('personsCypher', n, m, { sourceNodeLabels: labels(n), targetNodeLabels: labels(m), relationshipType: type(r) } )" |
{graphProperties={}, nodes={Person={}}, relationships={KNOWS={direction="DIRECTED", properties={}}}} |
CALL gds.graph.list('personsNative')
YIELD graphName, schemaWithOrientation, configuration
RETURN graphName, schemaWithOrientation, configuration.nodeProjection AS nodeProjection
| graphName | schemaWithOrientation | nodeProjection |
|---|---|---|
"personsNative" |
{graphProperties={}, nodes={Person={}}, relationships={KNOWS={direction="DIRECTED", properties={}}}} |
{Person={label="Person", properties={}}} |
以上示例表明,nodeProjection 和 relationshipProjection 仅在图使用原生投影时才有值,而当有 Cypher 投影图时会存在 query。
尽管我们可以使用的不同投影存在不同的结果列,但其他数据(如图模式)是相同的,正如我们在上面的示例中所看到的。