{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": [ "# Game of Thrones dataset\n", "\n", "This notebook loads a small Game of Thrones-style graph into both\n", "`NetworkXGraph` and `Neo4jGraph`.\n", "\n", "Dataset notes:\n", "- character nodes built from a public Thrones API\n", "- house nodes linked with `MEMBER_OF`\n", "- bundled fallback data keeps the example runnable offline" ], "id": "c263ee349ad0aa19" }, { "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_got_characters\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": "f55d0e77ceaebc51" }, { "metadata": {}, "cell_type": "markdown", "source": "## NetworkXGraph", "id": "de06b7f28014b1fe" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "nx_graph = NetworkXGraph()\n# load_got_characters works with both NetworkXGraph (in-memory) and Neo4jGraph (persistent)\nnx_stats = load_got_characters(nx_graph, limit=25)\nprint(\"NetworkX stats:\", nx_stats)\nnx_graph.close()", "id": "8160d8e1cfa9ccb4" }, { "metadata": {}, "cell_type": "markdown", "source": "## Neo4jGraph", "id": "5c9e1db318f7ea64" }, { "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_got_characters(neo4j_graph, limit=25)\n", " print(\"Neo4j stats:\", neo4j_stats)\n", "finally:\n", " neo4j_graph.close()\n" ], "id": "a9db72d228d55a64" } ], "metadata": { "kernelspec": { "display_name": "Python (drm-tool)", "language": "python", "name": "drm-tool" } }, "nbformat": 4, "nbformat_minor": 5 }