删除图的一部分
删除图的一部分对于释放内存或删除先前变异的算法结果很有用。
语法
- Drop node property
- Drop relationship type
CALL gds.graph.nodeProperties.drop(
graphName: String,
nodeProperties: String or List of Strings,
configuration: Map
)
YIELD
propertiesRemoved: Integer,
graphName: String,
nodeProperties: String or List of String
名称 | 类型 | 可选 | 描述 |
---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储的名称。 |
nodeProperties |
字符串或字符串列表 |
否 |
要删除的图中的节点属性。 |
configuration |
映射 |
是 |
其他配置参数。 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
concurrency |
整数 |
4 |
并发线程数。注意,此过程始终以单线程运行。 |
failIfMissing |
布尔值 |
true |
如果为 false,则该过程将忽略图中不存在的属性。 |
名称 | 类型 | 描述 |
---|---|---|
propertiesRemoved |
整数 |
已删除的属性数量。 |
graphName |
字符串 |
存储在目录中的图的名称。 |
nodeProperties |
字符串或字符串列表 |
已删除的节点属性。 |
CALL gds.graph.relationships.drop(
graphName: String,
relationshipType: String
)
YIELD
graphName: String,
relationshipType: String,
deletedRelationships: Integer,
deletedProperties: Map
名称 | 类型 | 可选 | 描述 |
---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储的名称。 |
relationshipType |
字符串 |
否 |
要删除的图中的关系类型。 |
名称 | 类型 | 描述 |
---|---|---|
graphName |
字符串 |
存储在目录中的图的名称。 |
relationshipType |
字符串 |
已删除关系的类型。 |
deletedRelationships |
整数 |
从内存中图中删除的关系数。 |
deletedProperties |
整数 |
映射,其中键是关系属性的名称,值是该名称下已删除的属性数。 |
示例
以下所有示例都应在空数据库中运行。 这些示例使用 Cypher 投影 作为规范。原生投影将在未来的版本中弃用。 |
为了演示 GDS 在节点属性上的功能,我们将创建一个小型社交网络图并在 Neo4j 中将其投影到我们的图目录中。
CREATE
(florentin:Person { name: 'Florentin', age: 16 }),
(adam:Person { name: 'Adam', age: 18 }),
(veselin:Person { name: 'Veselin', age: 20 }),
(hobbit:Book { name: 'The Hobbit', numberOfPages: 310 }),
(florentin)-[:KNOWS { since: 2010 }]->(adam),
(florentin)-[:KNOWS { since: 2018 }]->(veselin),
(adam)-[:READ]->(hobbit)
MATCH (n:Person)-[r:KNOWS|READ]->(m:Person|Book)
RETURN gds.graph.project('socialGraph', n, m,
{
sourceNodeLabels: labels(n),
targetNodeLabels: labels(m),
sourceNodeProperties: n { .age },
targetNodeProperties: CASE WHEN m:Person THEN m { .age } ELSE {} END,
relationshipType: type(r)
}
)
CALL gds.degree.mutate('socialGraph', {mutateProperty: 'score'})
删除节点属性
socialGraph
中所有投影节点中删除 score
属性CALL gds.graph.nodeProperties.drop('socialGraph', ['score'])
YIELD propertiesRemoved
propertiesRemoved |
---|
4 |
上述示例要求所有给定的属性都存在于至少一个投影节点标签上。 |
忽略缺失属性
默认情况下,如果任何给定的属性不存在于图中,则该过程将失败。如果要忽略缺失属性,可以将 failIfMissing
配置选项设置为 false
。
socialGraph
中所有投影节点中删除 missing_score
属性CALL gds.graph.nodeProperties.drop('socialGraph', ['missing_score'], {failIfMissing: false})
YIELD propertiesRemoved, nodeProperties
propertiesRemoved | nodeProperties |
---|---|
0 |
[] |
删除指定类型的关系
我们可以从目录中的命名图中删除给定类型的所有关系。这对于释放主内存或删除意外添加的关系类型很有用。
仅当给定类型的关系不是图中存在的最后一种关系类型时,才能删除该类型的关系。如果我们仍然想要删除这些关系,则需要删除图。 |
SIMILAR
的关系CALL gds.graph.relationships.drop(
'socialGraph', (1)
'READ' (2)
)
YIELD
graphName, relationshipType, deletedRelationships, deletedProperties
1 | 投影图的名称。 |
2 | 我们要从投影图中删除的关系类型。 |
graphName | relationshipType | deletedRelationships | deletedProperties |
---|---|---|---|
"socialGraph" |
"READ" |
1 |
{} |