列出图
可以使用 `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 |
字符串 |
是 |
图在目录中存储的名称。如果未提供图名称,则会列出所有图的信息。如果提供了图名称,但在目录中找不到,则会返回空列表。 |
名称 | 类型 | 描述 |
---|---|---|
|
字符串 |
图的名称。 |
|
字符串 |
已投影图所在的数据库的名称。 |
|
字符串 |
已投影图的数据库位置。可以是 `local`、`remote` 或 `none` 之一。 |
|
映射 |
用于在内存中投影图的配置。 |
|
整数 |
图中节点的数量。 |
|
整数 |
图中关系的数量。 |
|
映射 |
投影图中包含的节点标签、关系类型和属性。 |
|
映射 |
投影图中包含的节点标签、关系类型、关系方向和属性。 |
|
映射 |
图中度的直方图。 |
|
浮点数 |
图的密度。 |
|
日期时间 |
投影图的时间。 |
|
日期时间 |
图上次修改的时间。 |
|
整数 |
用于在 Java 堆中存储图的字节数。此功能并非在所有 JDK 中都受支持,可能会返回 -1。 |
|
字符串 |
`sizeInBytes` 的人类可读描述。此功能并非在所有 JDK 中都受支持,可能会返回 null。 |
1. 在下一个主要版本中,此字段将获得 `schemaWithOrientation` 的语义。 |
该信息包含有关图的基本统计信息,例如节点和关系计数。结果字段 `creationTime` 指示图何时在内存中投影。结果字段 `modificationTime` 指示图何时被在 `mutate` 模式下运行的算法更新。
`database` 列指的是相应图已投影到的数据库的名称。仅允许在已投影到的数据库上引用过程中命名的图。
`schema` 由有关存储在图中的节点和关系的信息组成。对于每个节点标签,`schema` 将标签映射到其属性键及其对应的属性类型。类似地,`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 | 查询 | 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 | 节点投影 |
---|---|---|
"personsNative" |
{graphProperties={}, nodes={Person={}}, relationships={KNOWS={direction="DIRECTED", properties={}}}} |
{Person={label="Person", properties={}}} |
以上示例表明,当图使用原生投影投影时,nodeProjection
和 relationshipProjection
只有值,而当我们有 Cypher 投影图时,query
存在。
尽管我们可以使用的不同投影存在不同的结果列,但其他数据(例如图模式)是相同的,正如我们在以上示例中看到的。