Можем ли мы получить graphID(Oid) графика на терминале postgresql
Я создал граф с именем cyc_graph. Сейчас я проверяю, могу ли я вставить некоторые вершины в этот граф с помощью функции agtype_build_map, но эта функция требует в качестве параметра graphID. Итак, как я могу получить graphID графика, уже созданного из терминала PostgreSQL?
Я пробовал что-то вроде этого
SELECT 'cyc_graph.vtxs'::regclass::oid;
Но это дает Oid таблицы vtxs. (vtxs — имя метки для вершин). Я понимаю, что cyc_graph — это имя схемы. Поэтому я не знаю, как я могу получить graphID/Oid имени схемы.
1 ответ
Что такое ГрафИД?
Простым объектам назначается уникальный графид. Графид представляет собой уникальную комбинацию идентификатора метки объекта и уникальной последовательности, назначенной каждой метке. Обратите внимание, что при сравнении объектов из разных графиков идентификаторы будут перекрываться.
Ссылка: https://age.apache.org/age-manual/master/intro/types.html
test=# LOAD 'age';
LOAD
test=# SET search_path = ag_catalog, "$user", public;
SET
test=# SELECT * FROM cypher('graph', $$
MATCH (v)
RETURN v
$$) as (v agtype);
v
------------------------------------------------------------------------------------------------------------
{"id": 844424930131969, "label": "Person", "properties": {"name": "John"}}::vertex
{"id": 844424930131970, "label": "Person", "properties": {"name": "Jeff"}}::vertex
{"id": 844424930131971, "label": "Person", "properties": {"name": "Joan"}}::vertex
{"id": 844424930131972, "label": "Person", "properties": {"name": "Bill"}}::vertex
{"id": 844424930131973, "label": "Person", "properties": {"name": "Andres", "title": "Developer"}}::vertex
(5 rows)
Здесь идентификатор на самом деле GraphID.