2016-07-28 5 views
0

neo4jでは、特定の関係で関連するすべての名詞または固有名詞を取得したいと考えています。私はこのようなクエリを持っていますサイファーの冗長なOR条件

match (n)-[r]->(n1) where n:NOUN and n1:NOUN or n:NOUN and n1:PROPN or n:PROPN and n1:NOUN or n1:PROPN and n:PROPN return r 

もっとコンパクトなものがありますか? Like:

match (n:[NOUN, PROPN])-[r]->(n1:[NOUN, PROPN]) return r 

答えて

2

ノードラベルの構文はありません。リレーションシップタイプでのみ使用できます。

代わりに、モデルを改善しないでください。

あなたは、第二、共通のラベルを使用することができます。普通名詞と固有名詞は、すべての名詞ですので、なぜPROPNまたはCOMMNのような追加のラベルとそれらを専門に、皆のためNOUNラベルを使用していません。

  1. マークすべての普通名詞として(現在の)名詞:

    MATCH (n:NOUN) SET n:COMMN 
    
  2. マーク名詞など、すべての固有名詞:

    MATCH (n:PROPN) SET n:NOUN 
    
  3. あなたのクエリは、単にその後、次のとおりです。

    MATCH (n:NOUN)-[r]->(n1:NOUN) return r 
    
+0

これは間違いなく良いアイデアです –