{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": [ "# Bibliographic references from OpenAlex\n", "\n", "This notebook downloads a small OpenAlex sample and loads it into both\n", "`NetworkXGraph` and `Neo4jGraph`.\n", "\n", "Dataset notes:\n", "- papers from an OpenAlex search query\n", "- author nodes created from authorships\n", "- citation links are added when both papers are present in the sample\n", "- if network access is restricted, the loader falls back to bundled demo data" ], "id": "50f503910860feed" }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import importlib.util\n", "\n", "# Comprovació de presència del paquet\n", "package_to_check = 'drm'\n", "spec = importlib.util.find_spec(package_to_check)\n", "\n", "if spec is None:\n", " print(f'⚠️ {package_to_check} no està instal·lat. Iniciant instal·lació...')\n", " %pip install -q --upgrade drm-tools\n", " print(\"✅ Instal·lació completada. L'estat del kernel PODRIA requerir un reinici.\")\n", "else:\n", " print(f'✅ {package_to_check} ja està present al sistema. Saltant instal·lació.')\n" ] }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": [ "import os\n", "\n", "from drm import Neo4jGraph, NetworkXGraph\n", "from drm.exemples import load_bibliografia_openalex\n", "\n", "\n", "def neo4j_config(default_target=\"DEV\"):\n", " target = os.environ.get(\"NEO4J_TARGET\", default_target).upper()\n", " prefix = f\"NEO4J_{target}_\"\n", " return {\n", " \"target\": target,\n", " \"url\": os.environ.get(f\"{prefix}URL\", os.environ.get(\"NEO4J_URL\", \"bolt://localhost:7687\")),\n", " \"user\": os.environ.get(f\"{prefix}USER\", os.environ.get(\"NEO4J_USER\", \"neo4j\")),\n", " \"password\": os.environ.get(f\"{prefix}PASSWORD\", os.environ.get(\"NEO4J_PASSWORD\", \"secret\")),\n", " \"database\": os.environ.get(f\"{prefix}DATABASE\", os.environ.get(\"NEO4J_DATABASE\", \"neo4j\")),\n", " }" ], "id": "a75a124755d1bb91" }, { "metadata": {}, "cell_type": "markdown", "source": "## NetworkXGraph", "id": "7a946514f2958da9" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "nx_graph = NetworkXGraph()\nnx_stats = load_bibliografia_openalex(nx_graph, query=\"graph database\", per_page=15)\nprint(\"NetworkX stats:\", nx_stats)\n\n# Show paper data (not just raw IDs)\nnode_ids = nx_graph.find_nodes_by_property(\"source\", \"openalex\")[:5]\nfor nid in node_ids:\n attrs = nx_graph.get_node_attrs(nid)\n print(f\" {attrs.get('main_label', '?')}: {attrs.get('title', attrs.get('name', nid))}\")\n\nnx_graph.close()", "id": "6906b2ef18483a5" }, { "metadata": {}, "cell_type": "markdown", "source": "## Neo4jGraph", "id": "687f68c114c2ddcb" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": [ "cfg = neo4j_config()\n", "print(\"Using Neo4j target:\", cfg[\"target\"])\n", "neo4j_graph = Neo4jGraph(\n", " url=cfg[\"url\"],\n", " user=cfg[\"user\"],\n", " password=cfg[\"password\"],\n", " database=cfg[\"database\"],\n", ")\n", "try:\n", " neo4j_stats = load_bibliografia_openalex(neo4j_graph, query=\"graph database\", per_page=15)\n", " print(\"Neo4j stats:\", neo4j_stats)\n", "finally:\n", " neo4j_graph.close()\n" ], "id": "f798af8eacfaa30e" } ], "metadata": { "kernelspec": { "display_name": "Python (drm-tool)", "language": "python", "name": "drm-tool" } }, "nbformat": 4, "nbformat_minor": 5 }