{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": [ "# Movies dataset\n", "\n", "This notebook loads a small movie-domain graph into both `NetworkXGraph` and\n", "`Neo4jGraph`.\n", "\n", "Dataset notes:\n", "- movie nodes with title and IMDb id\n", "- genre nodes linked with `IN_GENRE`\n", "- source is a public sample API, with a bundled fallback for offline use" ], "id": "32dd24794d06ada8" }, { "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_movies_sample\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": "23fd05f52c2f1764" }, { "metadata": {}, "cell_type": "markdown", "source": "## NetworkXGraph", "id": "30e059e774c65fe6" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "nx_graph = NetworkXGraph()\n# load_movies_sample works with both NetworkXGraph (in-memory) and Neo4jGraph (persistent)\nnx_stats = load_movies_sample(nx_graph, limit=25)\nprint(\"NetworkX stats:\", nx_stats)\nnx_graph.close()", "id": "ddbdf9a1eec3d9c3" }, { "metadata": {}, "cell_type": "markdown", "source": "## Neo4jGraph", "id": "b9a46c6da226f5a2" }, { "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_movies_sample(neo4j_graph, limit=25)\n", " print(\"Neo4j stats:\", neo4j_stats)\n", "finally:\n", " neo4j_graph.close()\n" ], "id": "99d65580fda5ec65" } ], "metadata": { "kernelspec": { "display_name": "Python (drm-tool)", "language": "python", "name": "drm-tool" } }, "nbformat": 4, "nbformat_minor": 5 }