列出图
可以使用 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 |
字符串 |
是 |
图在目录中存储的名称。如果未指定图名称,将列出所有图的信息。如果指定了图名称但在目录中找不到,将返回空列表。 |
名称 | 类型 | 描述 |
---|---|---|
|
字符串 |
图的名称。 |
|
字符串 |
图已投影到的数据库的名称。 |
|
字符串 |
图已从其投影的数据库位置。可以是 |
|
映射 |
用于将图投影到内存中的配置。 |
|
整数 |
图中的节点数。 |
|
整数 |
图中的关系数。 |
|
映射 |
投影图中包含的节点标签、关系类型和属性。 |
|
映射 |
投影图中包含的节点标签、关系类型、关系方向和属性。 |
|
映射 |
图中度数的直方图。 |
|
浮点数 |
图的密度。 |
|
日期时间 |
图投影的时间。 |
|
日期时间 |
图最后修改的时间。 |
|
整数 |
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
仅在图使用原生投影时才有值,而 query
在我们有 Cypher 投影图时存在。
尽管我们使用的不同投影会显示不同的结果列,但其他数据(例如图模式)是相同的,如我们在上面的示例中所示。