3.4 プロパティ・グラフ・ビューのメタデータの取得
PGQL問合せで組込みPROPERTY_GRAPH_METADATA
グラフを使用して、データベースに作成されたプロパティ・グラフ・ビューのメタデータを取得できます。
PROPERTY_GRAPH_METADATA
グラフ構造(プロパティを含む)を次に示します。
前述のメタデータ・グラフの設計を次に記述します。
PROPERTY_GRAPH -[:HAS_VERTEX_TABLE]-> VERTEX_TABLE
-[:HAS_EDGE_TABLE]-> EDGE_TABLE
VERTEX_TABLE -[:HAS_KEY_COLUMN]-> KEY_COLUMN
-[:HAS_LABEL]-> LABEL
EDGE_TABLE -[:HAS_KEY_COLUMN]-> KEY_COLUMN
-[:HAS_LABEL]-> LABEL
-[:HAS_SOURCE_TABLE]-> VERTEX_TABLE
-[:HAS_DESTINATION_TABLE]-> VERTEX_TABLE
LABEL -[:HAS_PROPERTY]-> PROPERTY
PGQL問合せでPROPERTY_GRAPH_METADATA
を使用するときは、次の点に注意してください。
- PGQL問合せで初めてアクセスしようとすると、
PROPERTY_GRAPH_METADATA
が自動的に作成され、更新されます。 - Java APIを使用してPGQL問合せを実行する場合は、JDBC接続で自動コミットを無効(
conn.setAutoCommit(false)
)にする必要があります。これにより、必ずPROPERTY_GRAPH_METADATA
グラフが自動的に作成されます。
次の例に、PGQL問合せでPROPERTY_GRAPH_METADATA
を使用して必要なメタデータを取得する方法を示します。
次のように、アクセス権があるグラフのリストを取得できます。
opg4j> String pgql =
...> "SELECT g.graph_name "
...> +"FROM MATCH (g:property_graph) ON property_graph_metadata "
...> +"ORDER BY g.graph_name"
pgql ==> "SELECT g.graph_name FROM MATCH (g:property_graph) ON property_graph_metadata ORDER BY g.graph_name"
opg4j> pgqlStmt.executeQuery(pgql).print()
String pgql = "SELECT g.graph_name "+
"FROM MATCH (g:property_graph) ON property_graph_metadata "+
"ORDER BY g.graph_name";
PgqlResultSet rs = pgqlStmt.executeQuery(pgql);
rs.print();
>>> pgql = '''
... SELECT g.graph_name
... FROM MATCH (g:property_graph) ON property_graph_metadata
... ORDER BY g.graph_name
... '''
>>> pgql_statement.execute_query(pgql).print()
実行すると、前述の問合せによって次の結果が生成されます。
+------------------------+
| GRAPH_NAME |
+------------------------+
| BANK_GRAPH_VIEW |
| FINANCIAL_TRANSACTIONS |
| FRIENDS |
+------------------------+
次のように、グラフの頂点プロパティを取得できます。
opg4j> String pgql =
...> "SELECT p.property_name "
...> +"FROM MATCH(g:property_graph)-[:has_vertex_table]->(v)-[:has_label]->(l:label)-[:has_property]->(p:property) "
...> +"ON property_graph_metadata "
...> +"WHERE g.graph_name = 'FRIENDS' "
pgql ==> "SELECT p.property_name FROM MATCH(g:property_graph)-[:has_vertex_table]->(v)-[:has_label]->(l:label)-[:has_property]->(p:property) ON property_graph_metadata WHERE g.graph_name = 'FRIENDS' "
opg4j> pgqlStmt.executeQuery(pgql).print()
String pgql = "SELECT p.property_name "+
"FROM MATCH(g:property_graph)-[:has_vertex_table]->(v)-[:has_label]->(l:label)-[:has_property]->(p:property) "+
"ON property_graph_metadata "+
"WHERE g.graph_name = 'FRIENDS' ";
PgqlResultSet rs = pgqlStmt.executeQuery(pgql);
rs.print();
>>> pgql = '''
... SELECT p.property_name
... FROM MATCH(g:property_graph)-[:has_vertex_table]->(v)-[:has_label]->(l:label)-[:has_property]->(p:property)
... ON property_graph_metadata
... WHERE g.graph_name = 'FRIENDS'
... '''
>>> pgql_statement.execute_query(pgql).print()
実行すると、前述の問合せによって次の結果が生成されます。
+---------------+
| PROPERTY_NAME |
+---------------+
| BIRTHDATE |
| HEIGHT |
| NAME |
+---------------+