【问题标题】:Graph generation in Neo4j for GDS computationsNeo4j 中用于 GDS 计算的图形生成
【发布时间】:2020-09-21 23:38:16
【问题描述】:

我正在处理一个结构类似于以下内容的 CSV 文件:

aId, Amount, bId 
int, float, int 

这里 aId 和 bId 分别对节点 A 和 B 有约束。 在最初加载节点和关系时,

LOAD CSV with headers FROM 'file:///abc.csv' as row
MERGE (a: A {aid: toInteger(row.aID)})
MERGE (b: B {bid: toInteger(row.bID)})
CREATE (a)-[:HAS_SENT {amt: toFloat(row.Amount)}]->(b)

有 1490 个标签和 1299 个关系。

现在我希望使用不同的图形数据科学库对文件执行各种计算。为了对此进行投影,我使用CALL gds.graph.create.estimate(['A'],['HAS_SENT']) 估计了相同的结果,返回了 851 个节点和 1299 个关系。

但是,当我尝试创建图形 CALL gds.graph.create('mySampleGraph',['A'],['HAS_SENT']) 时,它返回了相同数量的节点,但关系为 0。

我错过了什么,我怎么可能得到正确的映射?

【问题讨论】:

    标签: neo4j cypher graph-databases graph-data-science


    【解决方案1】:

    从您的导入查询来看,您的关系仅存在于节点 A 和 B 之间。标记为 A 的节点之间没有关系。通常,只有在节点投影部分中描述的源节点和目标节点的关系才是加载。在您的情况下,不存在同时具有标签 A 的源节点和目标节点的关系。如果您同时加载标签 A 和 B,则 GDS 应加载所有关系。

    CALL gds.graph.create('mySampleGraph',['A', 'B'],['HAS_SENT'])
    

    顺便说一句...有什么特别的理由有两个标签而不是一个?

    【讨论】:

    • 成功了,非常感谢。这是我在 Neo4j GDS 中的第一个实例。示例 CSV 只是我数据的一部分,其中一个项目要求要求我同时处理这两个标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多