{ "description": "Progressive web learning strategy for SDG network visualizations with API integration", "categories": { "foundation": { "description": "Basic D3.js force-directed graphs and API integration (Iterations 1-5)", "urls": [ { "url": "https://d3js.org/what-is-d3", "topic": "D3.js fundamentals and data binding", "techniques": ["data binding", "selections", "enter/update/exit pattern"] }, { "url": "https://observablehq.com/@d3/force-directed-graph", "topic": "Basic force-directed graph implementation", "techniques": ["force simulation", "node positioning", "link rendering"] }, { "url": "https://d3-graph-gallery.com/network.html", "topic": "Network visualization gallery and examples", "techniques": ["color scales", "node sizing", "edge styling"] }, { "url": "https://observablehq.com/@d3/force-directed-graph-canvas", "topic": "Canvas-based force graphs for performance", "techniques": ["canvas rendering", "performance optimization", "event handling"] }, { "url": "https://observablehq.com/@d3/temporal-force-directed-graph", "topic": "Adding interactivity to force graphs", "techniques": ["drag behavior", "zoom", "tooltip interactions"] } ] }, "intermediate": { "description": "Advanced D3 techniques and multi-API integration (Iterations 6-12)", "urls": [ { "url": "https://observablehq.com/@d3/sticky-force-layout", "topic": "Sticky force layout for better control", "techniques": ["fixed positions", "sticky drag", "layout constraints"] }, { "url": "https://observablehq.com/@d3/clustered-force-layout", "topic": "Force-based clustering", "techniques": ["cluster forces", "group positioning", "collision detection"] }, { "url": "https://observablehq.com/@d3/arc-diagram", "topic": "Alternative network layouts", "techniques": ["arc diagrams", "hierarchical layouts", "radial layouts"] }, { "url": "https://observablehq.com/@d3/force-directed-lattice", "topic": "Custom force implementations", "techniques": ["custom forces", "lattice constraints", "force composition"] }, { "url": "https://observablehq.com/@d3/color-schemes", "topic": "Advanced color schemes for networks", "techniques": ["sequential scales", "diverging scales", "categorical colors"] }, { "url": "https://observablehq.com/@d3/connected-particles", "topic": "Animated network transitions", "techniques": ["particle systems", "edge animation", "smooth transitions"] }, { "url": "https://observablehq.com/@d3/force-directed-graph-component", "topic": "Modular graph components", "techniques": ["component architecture", "reusable patterns", "state management"] } ] }, "advanced": { "description": "Complex algorithms and real-time data (Iterations 13-20)", "urls": [ { "url": "https://observablehq.com/@d3/hierarchical-edge-bundling", "topic": "Edge bundling for clarity", "techniques": ["hierarchical bundling", "edge aggregation", "path smoothing"] }, { "url": "https://observablehq.com/@d3/force-directed-tree", "topic": "Force-directed trees and hierarchies", "techniques": ["tree forces", "hierarchy layout", "parent-child links"] }, { "url": "https://observablehq.com/@mbostock/adaptive-sampling", "topic": "Adaptive rendering for large graphs", "techniques": ["level of detail", "culling", "adaptive sampling"] }, { "url": "https://observablehq.com/@d3/versor-dragging", "topic": "3D network rotations", "techniques": ["quaternion rotation", "3D projection", "spherical layout"] }, { "url": "https://observablehq.com/@d3/voronoi-labels", "topic": "Smart label placement", "techniques": ["voronoi diagrams", "collision-free labels", "dynamic positioning"] }, { "url": "https://observablehq.com/@d3/zoom-to-bounding-box", "topic": "Advanced zoom and focus", "techniques": ["semantic zoom", "focus+context", "smooth camera transitions"] }, { "url": "https://observablehq.com/@mbostock/the-wealth-health-of-nations", "topic": "Real-time data integration", "techniques": ["data streaming", "time series", "dynamic updates"] }, { "url": "https://observablehq.com/@d3/graph-layout-force-directed", "topic": "Graph layout algorithms comparison", "techniques": ["layout selection", "parameter tuning", "performance trade-offs"] } ] }, "expert": { "description": "Cutting-edge techniques and AI integration (Iterations 21+)", "urls": [ { "url": "https://observablehq.com/@d3/force-directed-graph-with-minimap", "topic": "Multi-view graph interfaces", "techniques": ["minimap", "multiple synchronized views", "overview+detail"] }, { "url": "https://observablehq.com/@mbostock/phase-portrait", "topic": "Dynamic system visualization", "techniques": ["phase space", "attractor visualization", "vector fields"] }, { "url": "https://observablehq.com/@fil/occlusion-hello-world", "topic": "3D occlusion and depth", "techniques": ["depth sorting", "occlusion culling", "3D rendering"] }, { "url": "https://observablehq.com/@d3/graph", "topic": "Graph theory algorithms", "techniques": ["shortest path", "centrality measures", "community detection"] }, { "url": "https://observablehq.com/@mbostock/saving-svg", "topic": "Export and sharing capabilities", "techniques": ["SVG export", "image generation", "data export"] } ] }, "api_discovery": { "description": "Web search templates for finding open APIs", "search_templates": [ { "query": "environmental data API swagger site:github.com", "domain": "Environmental APIs", "expected_sources": ["air quality", "water quality", "climate data"] }, { "query": "scientific data REST API openapi", "domain": "Scientific Data", "expected_sources": ["biodiversity", "satellite", "research datasets"] }, { "query": "sustainable development goals API JSON", "domain": "SDG Data", "expected_sources": ["UN data", "World Bank", "development indicators"] }, { "query": "atmospheric weather data API free", "domain": "Atmospheric Data", "expected_sources": ["weather", "air quality", "climate"] }, { "query": "water quality watershed API REST", "domain": "Water Data", "expected_sources": ["USGS", "EPA", "water monitoring"] }, { "query": "forest biodiversity data API open source", "domain": "Ecological Data", "expected_sources": ["Global Forest Watch", "species data", "conservation"] }, { "query": "NOAA ocean marine data API", "domain": "Ocean Data", "expected_sources": ["ocean temperature", "marine life", "coastal data"] }, { "query": "NASA earth observation API", "domain": "Satellite Data", "expected_sources": ["satellite imagery", "earth science", "remote sensing"] }, { "query": "seismic earthquake API USGS", "domain": "Geophysical Data", "expected_sources": ["earthquake", "volcano", "geological"] }, { "query": "WHO global health statistics API", "domain": "Health Data", "expected_sources": ["disease", "healthcare", "mortality"] } ], "api_evaluation_criteria": [ "Has Swagger/OpenAPI specification", "Provides JSON/REST endpoints", "Free tier or open access available", "Good documentation", "Active maintenance (updated recently)", "Network-ready data (entities with relationships)", "Relevant to SDGs or sustainability" ] }, "data_integration": { "description": "Resources for API integration and data merging", "urls": [ { "url": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch", "topic": "Modern fetch API usage", "techniques": ["async/await", "error handling", "CORS"] }, { "url": "https://observablehq.com/@observablehq/introduction-to-data", "topic": "Data loading and transformation", "techniques": ["data parsing", "cleaning", "transformation pipelines"] }, { "url": "https://observablehq.com/@d3/d3-fetch", "topic": "D3 data fetching utilities", "techniques": ["d3.json", "d3.csv", "data type inference"] } ] }, "graph_algorithms": { "description": "Graph theory and network analysis resources", "urls": [ { "url": "https://observablehq.com/@d3/disjoint-force-directed-graph", "topic": "Disconnected graph handling", "techniques": ["component detection", "separate force simulations"] }, { "url": "https://observablehq.com/@d3/force-directed-graph?intent=fork", "topic": "Customizable force parameters", "techniques": ["force strength tuning", "link distance optimization"] }, { "url": "https://observablehq.com/@mbostock/paths-in-a-force-directed-graph", "topic": "Path finding and highlighting", "techniques": ["shortest path", "path visualization", "connected components"] } ] } }, "iteration_mapping": { "1-5": "foundation", "6-12": "intermediate", "13-20": "advanced", "21+": "expert" }, "fallback_strategy": { "description": "When pre-defined URLs are exhausted, use dynamic web search", "search_patterns": [ "D3.js force directed graph [specific_technique]", "network visualization [technique] observable", "graph layout algorithm [specific_algorithm]", "[api_domain] open API swagger github", "force simulation [parameter] tuning d3" ] }, "priming_urls": { "description": "Initial URLs to fetch before starting any iteration for foundational knowledge", "urls": [ "https://d3js.org/what-is-d3", "https://observablehq.com/@d3/force-directed-graph", "https://github.com/public-apis/public-apis" ] } }