2016-07-28 11 views
0

In Neo4j möchte ich alle Substantive oder Eigennamen durch eine bestimmte Beziehung beziehen. Ich habe eine Abfrage wie folgtWeniger ausführliche ODER Bedingung in Chiffre

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 

Gibt es etwas kompakter es zu tun? Wie:

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

Antwort

2

Es gibt keine solche Syntax für Knoten-Etiketten, dann ist es nur für Beziehungstypen zur Verfügung.

Stattdessen, warum nicht Ihr Modell verbessern?

Sie könnten ein zweites, gemeinsames Label verwenden: Substantive und Eigennamen alle Substantive sind, warum also nicht verwenden, um die NOUN Label für alle, sie mit einem zusätzlichen Etikett wie PROPN oder COMMN spezialisiert.

  1. Mark Alle (aktuell) Substantive als Gattungsnamen:

    MATCH (n:NOUN) SET n:COMMN 
    
  2. Markieren Sie alle Eigennamen als Substantive:

    MATCH (n:PROPN) SET n:NOUN 
    
  3. Ihre Anfrage ist dann einfach:

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

das ist definitiv eine gute Idee –