マルチカーディナリティのプロパティまたはエッジ
マルチカーディナリティのプロパティまたはエッジを設定する方法。
マルチカーディナリティにより、プロパティが単一のキー内に複数の値を格納したり、同じエッジ・ラベルを持つ複数のエッジが2つの頂点を接続したりすることが可能になります。
手順
マルチカーディナリティ・プロパティ
-
マルチカーディナリティ・プロパティ
item_mult
のスキーマを作成し、2つの頂点を作成して、各頂点に定義済みプロパティの2つの項目が表示されるようにします。schema.propertyKey('item_mult').Text().multiple().ifNotExists().create() schema.vertexLabel('fridgeItem_multiple').properties('item_mult').ifNotExists().create() graph.addVertex(label,'fridgeItem_multiple','name', 'item1','item_mult', ['cheese', 'cheddar cheese']) graph.addVertex(label, 'fridgeItem_multiple','name', 'item2', 'item_mult',['yogurt','Greek yogurt'], 'item_mult', ['key lime yogurt']) g.V().hasLabel('fridgeItem_multiple').valueMap()
item_mult
はマルチカーディナリティで定義されているため、キー値の挿入を任意の回数行うことができ、値を挿入するために2つのリストを使用することも可能です。すべての値が単一リストに格納されます。==>{item_mult=[cheddar cheese, cheese], name=[item1]} ==>{item_mult=[Greek yogurt, key lime yogurt, yogurt], name=[item2]}
-
挿入されたデータを詳しく調べます。
g.V().has('fridgeItem_multiple', 'name', 'item2').values('item_mult')
この出力からは、リスト内の各エントリーが別々に格納された値であることが明らかです。==>Greek yogurt ==>key lime yogurt ==>yogurt
-
特定の値を指定して、単一リスト項目の有無を確認します。
g.V().hasLabel('fridgeItem_multiple').has('item_mult', 'Greek yogurt').valueMap()
==>{item_mult=[Greek yogurt, key lime yogurt, yogurt], name=[item2]}
マルチカーディナリティ・エッジ
-
マルチカーディナリティ・エッジのスキーマを作成します。
エッジ・ラベル// SCHEMA // PROPERTIES schema.propertyKey('author').Text().single().create() schema.propertyKey('city').Text().single().create() schema.propertyKey('dateStart').Text().single().create() schema.propertyKey('dateEnd').Text().single().create() // VERTEX LABELS schema.vertexLabel('author').properties('author').create() schema.vertexLabel('city').properties('city').create() // EDGE LABELS schema.edgeLabel('livedIn').multiple().connection('author','city').create() schema.edgeLabel('livedIn').properties('dateStart', 'dateEnd').add() // INDEXES schema.vertexLabel('author').index('byAuthor').materialized().by('author').add() schema.vertexLabel('city').index('byCity').materialized().by('city').add() schema.vertexLabel('author').index('byStartDate').outE('livedIn').by('dateStart').add()
livedIn
はマルチカーディナリティで定義されています。graphloaderを使用して読み込まれるサンプル・データは次のようになります。
このデータには、Julia Childがパリに住んでいた2つの期間(架空)が含まれ、マルチカーディナリティのためエッジは複数になります。author|city|dateStart|dateEnd Julia Child|Paris|1961-01-01|1967-02-10 Julia Child|New York|1970-06-06|1971-09-23 Julia Child|Chicago|1980-04-05|1981-01-01 Julia Child|Paris|1990-01-01|1991-01-01 Simone Beck|Paris|1960-01-01|1962-09-23
このデータが読み込まれると、結果として生成されるグラフにマルチカーディナリティ・エッジの存在が示されます。