【问题标题】:Neo4j - Graph Data Science library - How to cypher-query against a named graph in Graph Catalog?Neo4j - 图形数据科学库 - 如何对图形目录中的命名图形进行密码查询?
【发布时间】:2020-09-22 20:58:10
【问题描述】:

从 Neo4j 主图创建命名图是 documented。此外,人们还知道如何列出、删除、检查命名图是否已经存在,例如CALL gds.graph.exists('my-store-graph') YIELD exists;

但是,我想知道是否有任何方法可以对刚刚创建的命名图进行密码查询

一种解决方法是将此命名图推送到 离线/空 Neo4j 图中,即CALL gds.beta.graph.export('my-graph', { dbName: 'mydatabase' })。但是,这种方法不太方便,因为我们经常想在应用之前检查命名图是否正确投影,例如PageRank 就可以了。并且预测可以是一个反复试验的循环。

【问题讨论】:

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


    【解决方案1】:

    除了您已经找到的解决方法之外,目前没有其他方法可以查询命名图。

    但是,还有其他功能,例如gds.util.nodeProperty 允许您访问命名图中的节点属性,而无需将其写回 Neo4j。查询score 属性的示例如下所示:

    CALL gds.graph.create('my-graph', 'User', 'LINK');
    CALL gds.pageRank.mutate('my-graph', { mutateProperty: 'score' });
    MATCH (user:User)
    WHERE user.name = 'Alice'
    RETURN
        user.name AS name,
        gds.util.nodeProperty('my-graph', id(user), 'score') AS score
    

    您能否详细说明为什么您的预测是“试错”循环。也许一个选项是在您要投影的子图上运行验证查询?

    【讨论】:

    • 在我看来,这是一个反复试验的循环,因为使用 Cypher 的投影会产生子图。并且您想仔细检查子图结构是否在某些方面是预期的。目前,我们不能方便地对这个子图进行密码查询。
    • @JoyfulPanda 如果我理解正确,您使用 Cypher 投影来创建图形,然后您想检查创建的图形以确保它是您所期望的?直接检查您在 graph.create.cypher() 调用中使用的 Cypher 查询是否不能提供必要的见解?
    • @s1ck 正确。我想确保投影图符合我的预期。在CALL gds.graph.create.cypher(graphName, nodeQuery, relationshipQuery, configuration) 中,一个需要 2 个查询:一个用于节点,一个用于关系。我假设它首先提取节点,然后提取关系,并且删除其节点未包含在第一组中的任何关系。因此,有时不方便对关于投影图形状的 2 个单独查询进行推理。一个人可能会错过一些东西......
    • @JoyfulPanda 明白,我同意。预计未来版本会改进这一点:)一个细节:节点不在第一组中的关系将在 GDS 1.2 中引发错误,您可以使用配置参数将其更改为静默删除行为。
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多