создать график возраста apache из графика networkx

Я начал использовать apache age, и мне было интересно, есть ли классный способ напрямую поместить networkx graph в базу данных apache age?

Я использую обходной путь, чтобы получить края и узлы, связанные с их атрибутами, чтобы вставить их в эпоху apache, используя цикл for, есть ли лучший и более быстрый способ?

4 ответа

В настоящее время эта функция находится в стадии разработки. Но наверняка в будущем вы увидите больше таких надежных и эффективных функций.

На данный момент вы можете следовать следующей структуре необработанного кода, чтобы поместить график networkx в базу данных apache-age , а затем визуализировать его в age-viewer.

      #import apache-age python driver and networkx 
from apache-age import GraphDatabase
import networkx as nx

#connect to the database
driver = GraphDatabase.driver(**xyz**->argument to connect to age database**) 

query = "
SELECT * FROM cypher('graph_name', $$
    MATCH p = (actor {name: 'Willam Defoe'})-[:ACTED_IN*2]-(co_actor)
    RETURN relationships(p)
$$) as (r agtype);"

# run the query
    result = driver.run(query)

# iterate through the result
# find the nodes and edges from result
# and add them to the nx.graph
# This bit doesn't work

G = nx.Graph(result)

Примечание . Код не является исполняемым файлом, я предоставил только необработанную структуру.

Недурно! если вы найдете этот ответ подходящим! :)

Чтобы иметь возможность перенести граф NetworkX в Apache AGE, данные графа необходимо преобразовать в формат, совместимый с графовыми таблицами, используемыми Apache AGE. Одним из возможных подходов может быть циклическое перебор графа networkx, который включает узлы и ребра и ввести их в базу данных.

При этом, если граф большой, итерация по всему графу может занять много времени. В этом случае есть несколько подходов, которые могут улучшить производительность:

  1. Параллельная обработка
  2. Конверсия данных
  3. Пакетная вставка

Эти методы помогут повысить производительность и эффективность передачи. Надеюсь это поможет!

Функция в настоящее время недоступна. На данный момент другие разработки имеют более высокий приоритет.

При этом вы можете запросить эту функцию в репозитории Github:

https://github.com/apache/возраст

Если вам повезет, он может быть принят.

EDI:T Спасибо Камлешу в комментариях к этому обновлению.

Таким образом, вы можете видеть, что в настоящее время он открыт для исследований и разработок.

      # Import Apache-Age and NetworkX libraries
from apache_age import GraphDatabase
import networkx as nx

# Connect to the graph database using Apache-Age
driver = GraphDatabase.driver(**xyz**->argument to connect to age database**) 

# Run the Cypher query to create a relationship between two nodes with label `Person`
query = "
SELECT * 
FROM cypher('graph_name', $$
    MATCH (a:Person), (b:Person)
    WHERE a.name = 'Node A' AND b.name = 'Node B'
    CREATE (a)-[e:RELTYPE {name:a.name + '<->' + b.name}]->(b)
    RETURN e
$$) as (e agtype);"
result = driver.run(query)

# Extract nodes and edges from the result
nodes = set()
edges = []
for record in result:
    relationship = record.get("e")
    start_node = relationship.start
    end_node = relationship.end
    nodes.add(start_node)
    nodes.add(end_node)
    edges.append((start_node, end_node, {'rel_name': relationship.get('name')}))

# Create a dictionary representation of the graph
graph_dict = {node: [] for node in nodes}
for edge in edges:
    graph_dict[edge[0]].append(edge[1])

# Create a directed NetworkX graph object from the dictionary
G = nx.DiGraph(graph_dict)

Примечание. Надеюсь, это поможет вам, но функция, которую вы пытаетесь использовать, сейчас недоступна.

Другие вопросы по тегам