279 lines
11 KiB
JSON
279 lines
11 KiB
JSON
{
|
|
"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"
|
|
]
|
|
}
|
|
}
|