2017-03-09 2 views
0

私はどこかで見たことがあると確信していますが、私が試したすべてのキーワードは空になりました。サイファーを使って関係を集約する

私は書類を経由して個人や企業を結ぶグラフがあります。

を(:人/:会社) - [] - (:ドキュメント) - [] - (:人/:会社)

私がしたいのは、人と企業との間のつながりを、それらの間の接続の数に基づく関係の強さで直接的に示すグラフを返すことです。

は私がのNeo4j-ブラウザでただし

MATCH (p)-[]-(d:Document)-[]-(c) 
WHERE p:Person or p:Company and c:Person or c:Company 
WITH p,c, count(d) as rel 
RETURN p,rel,c 

でデータを取得し、ノードは、任意の関係なしで表示されます。これを達成するための方法はありますか、何らかのメタ関係を作り出さなければなりませんか?

+0

ノードをダブルクリックすると、関係がポップアップ表示されます。 –

+0

しかしそれは文書を介して関係を開きます。私は関係を人/会社ノードの間に直接表示させたいと思っています。 – EliasAtBerlin

+0

リレーションシップに方向性がないため、[p:Person] - [] - (d:Document) - [] - (c:Company)を選択するだけで十分です。 –

答えて

0

APOCプロシージャをインストールすると、virtual relationshipsを作成することができます。これはビジュアライゼーションに使用されますが、実際にはdbには格納されません。

MATCH (p)-[]-(d:Document)-[]-(c) 
WHERE (p:Person or p:Company AND c:Person or c:Company) 
AND id(p) < id(c) 
WITH p,c, count(d) as relStrength 
CALL apoc.create.vRelationship(p,'REL',{strength:relStrength}, c) YIELD rel 
RETURN p,rel,c 

pとcのidに述語を追加して、pとcを切り替えて同じ2つのノードを繰り返さないようにしました。

関連する問題