簡體   English   中英

在 Neo4j Graph Data Science 中,我可以使用自定義類型名稱通過密碼創建圖形嗎?

[英]In Neo4j Graph Data Science, can I create graph by cypher with custom type name?

我從標簽節點創建圖表,其中創建的圖表中的關系不是來自原始數據庫的關系,而是一些代表標簽的路徑被標記在相同的視頻上。

CALL gds.graph.create.cypher(
  "tags",
  "MATCH (t:Tag) RETURN id(t) AS id, labels(t) AS labels",
  "
  MATCH (t:Tag)
  WITH collect(t) as nodes
  UNWIND nodes as n
  UNWIND nodes as m
  WITH n, m WHERE id(n) < id(m)
  MATCH (n)-[:TAGGED_ON]->(v:Video)<-[:TAGGED_ON]-(m)
  RETURN id(n) AS source, id(m) AS target, count(v) AS weight
  "
)

然后我這樣做以導出到新數據庫:

CALL gds.graph.export("tags", {dbName: "tags"})

CREATE DATABASE tags

但是,新標簽數據庫中的關系將全部命名為__ALL__

在圖創建的relationshipQuery部分,neo4j的文檔說

可選地,可以指定類型列來表示關系類型。

但是,我發現的所有關於此的示例都是type(r) AS type ,這不適用於我的情況。 我仍然可以通過以下方式重命名新標簽數據庫中的關系:

MATCH ()-[r]->()
WITH collect(r) AS rels
CALL apoc.refactor.rename.type("__ALL__", "TAGGED_ON_THE_SAME_VIDEO", rels)
YIELD committedOperations
RETURN committedOperations

但是我可以在 gds 圖創建時使用自定義關系名稱嗎? 我嘗試了類似"TAGGED_ON_THE_SAME_VIDEO" AS type東西,但這行不通。

我嘗試了類似“TAGGED_ON_THE_SAME_VIDEO”作為類型的東西,但這行不通。

為什么這行不通? 我已經測試過了,它工作得很好。 嘗試使用以下查詢來投影圖形:

CALL gds.graph.create.cypher(
  "tags",
  "MATCH (t:Tag) RETURN id(t) AS id, labels(t) AS labels",
  "
  MATCH (t:Tag)
  WITH collect(t) as nodes
  UNWIND nodes as n
  UNWIND nodes as m
  WITH n, m WHERE id(n) < id(m)
  MATCH (n)-[:TAGGED_ON]->(v:Video)<-[:TAGGED_ON]-(m)
  RETURN id(n) AS source, id(m) AS target, count(v) AS weight, 'TAGGED_ON_THE_SAME_VIDEO' as type
  "
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM