0
A,B,C,d是公司(companiesName)和P1,P2,P3,P4是母公司(parentCompanyName)
它們作爲與:
P1 <- sub_of - A ->sells ->B -> sub_of -> P1
P1 <- sub_of - C ->sells-> D -> sub_of -> P2
P3 <- sub_of - A ->sells ->C -> sub_of -> P3
P4 <- sub_of - D ->sells ->B -> sub_of -> P1
P1 <- sub_of - A ->sells2010-> B -> sub_of -> P1
P1 <- sub_of - A ->sells2011-> B -> sub_of -> P4
P1 <- sub_of - A ->in_country-> B -> sub_of -> P1
哪裏賣的有屬性totalCount和金額。
我想創造像sells_I,sells2010_I等新的邊緣,如果公司有commonparentNode按照第1,3,5行。但在第6行in_country邊也滿足條件。我不想包括這個邊緣。
作爲每個給定的通過@Stephen答案:
g = new TinkerGraph()
P1 = g.addVertex("P1")
P2 = g.addVertex("P2")
P3 = g.addVertex("P3")
P4 = g.addVertex("P4")
A = g.addVertex("A")
B = g.addVertex("B")
C = g.addVertex("C")
D = g.addVertex("D")
g.addEdge(A, P1, "SUB_OF")
g.addEdge(B, P1, "SUB_OF")
g.addEdge(C, P1, "SUB_OF")
g.addEdge(D, P2, "SUB_OF")
g.addEdge(A, P3, "SUB_OF")
g.addEdge(C, P3, "SUB_OF")
g.addEdge(D, P4, "SUB_OF")
g.addEdge(B, P4, "SUB_OF")
g.addEdge(A, B, "sells")
g.addEdge(C, D, "sells")
g.addEdge(A, C, "sells")
g.addEdge(D, B, "sells")
g.addEdge(A, B, "sells2010")
g.addEdge(A, B, "sells2011")
g.addEdge(A, B, "IN_COUNTRY")
g.E.has('label','sells').filter{it.inV.out('SUB_OF').next()==it.outV.out('SUB_OF').next()}.transform({[it.inV().next(),it.outV().next()]})
==> [V [C],V [A]]
==> [V [B],V [A]]
x = []
g.E.has('label','sells').filter{it.inV.out('SUB_OF').next()==it.outV.out('SUB_OF').next()}.transform({[it.inV().next(),it.outV().next()]}).dedup().aggregate(x)
for (i in x) {
c = i[0]
d = i[1]
g.addEdge(c, d, "sells_I", [amt : 100])
}
是否有可能創建新的邊緣sells_I,然後刪除舊的邊緣如下?因爲我的原始數據集中有很多邊緣/節點。我可以爲此使用BatchGraph嗎?
下面的查詢拋出錯誤。
g.E.has('label','sells').filter{it.inV.out('SUB_OF').next()==it.outV.out('SUB_OF').next()}.transform({[it.inV().next(),it.outV().next()]}).sideEffect{g.addEdge(it.inVertex, it.outVertex, 'sells_I'); g.removeEdge(it)}
or
g.E.has('label','sells').filter{it.inV.out('SUB_OF').next()==it.outV.out('SUB_OF').next()}.transform({[it.inV().next(),it.outV().next()]}).sideEffect{g.addEdge(it.inV().next(), it.outV().next(), 'sells_I'); g.removeEdge(it)}
有什麼建議或幫助?
謝謝。 :)
感謝Stephen的幫助。我用我的更新後的帖子嘗試這些。還需要一些更多的幫助。 – Abhi
您不能使用'BatchGraph',因爲它不允許刪除邊緣。你不會說錯誤是你得到的,所以我只能在這裏猜測,但我不知道你在做什麼樣的intermedia'commit()'......如果你的數據集非常大,你可能會發現交易規模正在失控。在圖表上投入更多的內存,並使用計數器來跟蹤邊緣突變,並在某個確定的時間間隔進行提交,這對您的情況表現良好。也許這會有所幫助。 –
謝謝。正如你所說的那樣工作。 :) – Abhi