Hola Dago te explico un poco
- Deberas identificar en la revista en el código
const CONFIG = {
// Cambia esto por el ID de tu revista en OpenAlex
journalId: "S4210170416", // ← MODIFICAR ESTO
// Otras opciones de configuración...
};
- Deberas ubicar en OpenAlex la revista e identificar el ID dentro de la API. El ID tiene formato
S + número, por ejemplo: S1983995261
- Modificar el Endpoint de búsqueda
url.searchParams.append("filter", `primary_location.source.id:${CONFIG.journalId}`);
- Ajustas los límites de paginación
const maxPages = 5; // Actualmente limitado a 1000 artículos (5 × 200)
// Para revistas grandes esto puede aumentar ejemplo:
const maxPages = 25; // Hasta 5000 artículos
- Adaptar los datos de respaldo (Backup Data)
La función getValidatedBackupData() contiene datos específicos de la revista “Realidad Empresarial”. Para otra revista, deberías:
Eliminar los datos hardcodeados, o
Crear nuevos datos representativos de tu revista objetivo
// Opción simple: Hacer que siempre use la API
function getValidatedBackupData() {
console.warn("No hay datos de respaldo para esta revista");
return { nodes: [], links: [] }; // Retorna grafo vacío
}
En caso hayas ubicado una revista que te interese, puedo ayudarte a buscar el ID de cualquier revista. Solo dime el nombre de la revista que te interesa y buscaré su identificador en OpenAlex si esta indexada.
Si quiero destacar que ObservableHQ que es el framework con el que trabajo tiene algunas limitaciones que menciono a continuación y estas se complican de acuerdo al tamaño de la producción académica de algunas revistas con años y años de publicación pero es maniobrable, tambien debes tener en cuenta que a mayor escala de datos necesesitaras utilizar alguna Api para mejorar la visualización como la WebGL (Web Graphics Library) que es una API de JavaScript que permite renderizar gráficos 2D y 3D interactivos de alto rendimiento.
Te menciono algunas limitaciones de la API de OpenAlex solo para que lo puedas tener en cuenta: OpenAlex limita a 200 artículos por página. No puedes pedir más de esto en una sola llamada.
Opción 1: Soluciones para revistas grandes para no mostrar toda la producción y no sobrecargar el gráfico:
// En la URL de fetch, añade filtro de año
url.searchParams.append(“filter”, primary_location.source.id:${CONFIG.journalId});
url.searchParams.append(“filter”, “publication_year:>2020”); // Solo últimos años
Opción 2: Muestreo Aleatorio
// Tomar solo una muestra representativa
const sampleSize = 1000;
const sampledWorks = allWorks.length > sampleSize
? allWorks.sort(() => 0.5 - Math.random()).slice(0, sampleSize)
: allWorks;
return processOpenAlexData(sampledWorks);
Opción 3: Agrupar por Cluster
// Usar D3.cluster o D3.pack para reducir nodos visuales
// mientras mantienes todos los datos en memoria
Espero esto sea de ayuda.
Saludos,