Bibliographic references from OpenAlex

This notebook downloads a small OpenAlex sample and loads it into both NetworkXGraph and Neo4jGraph.

Dataset notes:

  • papers from an OpenAlex search query

  • author nodes created from authorships

  • citation links are added when both papers are present in the sample

  • if network access is restricted, the loader falls back to bundled demo data

[ ]:
import importlib.util

# Comprovació de presència del paquet
package_to_check = 'drm'
spec = importlib.util.find_spec(package_to_check)

if spec is None:
    print(f'⚠️ {package_to_check} no està instal·lat. Iniciant instal·lació...')
    %pip install -q --upgrade drm-tools
    print("✅ Instal·lació completada. L'estat del kernel PODRIA requerir un reinici.")
else:
    print(f'✅ {package_to_check} ja està present al sistema. Saltant instal·lació.')

[ ]:
import os

from drm import Neo4jGraph, NetworkXGraph
from drm.exemples import load_bibliografia_openalex


def neo4j_config(default_target="DEV"):
    target = os.environ.get("NEO4J_TARGET", default_target).upper()
    prefix = f"NEO4J_{target}_"
    return {
        "target": target,
        "url": os.environ.get(f"{prefix}URL", os.environ.get("NEO4J_URL", "bolt://localhost:7687")),
        "user": os.environ.get(f"{prefix}USER", os.environ.get("NEO4J_USER", "neo4j")),
        "password": os.environ.get(f"{prefix}PASSWORD", os.environ.get("NEO4J_PASSWORD", "secret")),
        "database": os.environ.get(f"{prefix}DATABASE", os.environ.get("NEO4J_DATABASE", "neo4j")),
    }

NetworkXGraph

[ ]:
nx_graph = NetworkXGraph()
nx_stats = load_bibliografia_openalex(nx_graph, query="graph database", per_page=15)
print("NetworkX stats:", nx_stats)

# Show paper data (not just raw IDs)
node_ids = nx_graph.find_nodes_by_property("source", "openalex")[:5]
for nid in node_ids:
    attrs = nx_graph.get_node_attrs(nid)
    print(f"  {attrs.get('main_label', '?')}: {attrs.get('title', attrs.get('name', nid))}")

nx_graph.close()

Neo4jGraph

[ ]:
cfg = neo4j_config()
print("Using Neo4j target:", cfg["target"])
neo4j_graph = Neo4jGraph(
    url=cfg["url"],
    user=cfg["user"],
    password=cfg["password"],
    database=cfg["database"],
)
try:
    neo4j_stats = load_bibliografia_openalex(neo4j_graph, query="graph database", per_page=15)
    print("Neo4j stats:", neo4j_stats)
finally:
    neo4j_graph.close()