2017-06-23 3 views
0

StatementResultから関係を抽出するにはどうすればよいですか?neo4J StatementResultから関係を抽出する

私はこのような何かを持っている瞬間のために:

while (results.hasNext()) { 
     Record record = results.next(); 
     try { 
      if (record.get(0).hasType(TYPE_SYSTEM.NODE())){ 
       Node node = record.get(0).asNode(); 
       //System.out.println(node.get("name") + ": " + node.get("guid")); 

       // Add block 
       if (node.hasLabel(configuration.getBlock())) { 
        Block block = Block.fromRecord(node); 
        blocks.addBlock(block); 
       } else 
       // Add property 
       if (node.hasLabel(configuration.getProp())) { 
        Property property = Property.fromRecord(node); 
        String guid = property.getGuid(); 
        Block block = blocks.getBlock(guid); 
        block.addProperty(property); 
       } else 
       // Add output 
       if (node.hasLabel(configuration.getOutput())) { 
        Output output = Output.fromRecord(node); 
        String guid = output.getGuid(); 
        Block block = blocks.getBlock(guid); 
        block.addOutput(output); 
       } else 
       // Add input 
       if (node.hasLabel(configuration.getInput())) { 
        Input input = Input.fromRecord(node); 
        inputs.add(input); 
        String guid = input.getGuid(); 
       } 

      } 

私の元のクエリは、このようなものだった:

MATCH (start:Block{name:'block_3'}) 
CALL apoc.path.subgraphNodes(start, {relationshipFilter:'PART_OF|hasOutPort>|connectsTo>|<hasInPort'}) YIELD node as block 
WITH 
    block, 
    [(block)-[:PART_OF]->(prop) | prop] as properties, 
    [(block)-[:hasOutPort]->(output) | output] as outputs, 
    [(block)-[:hasInPort]->(input) | input] as inputs 
RETURN block, properties, outputs, inputs 

私はすべての "connectsTo" の関係を必要とする

希望作ることセンス。

答えて

0

まず、関係のエイリアスを指定してノードのように戻す必要があります。簡単な例:

MATCH (a:Block)-[r:PART_OF]->(b:Block) RETURN a, r, b 

この方法で、あなたのレコードインスタンスは、RとBのためのデータ(値のインスタンス)が含まれています。また、抽出ロジックでは、関係データを取得するために次の操作を行います。

Relationship r = record.get("r").asRelationship();