hra-api
Version:
The Human Reference Atlas (HRA) API deployed to https://apps.humanatlas.io/api/
35 lines (32 loc) • 1.5 kB
JavaScript
import { getSpatialGraph } from '../../shared/spatial/spatial-graph.js';
import frame from '../frames/scene.jsonld';
import refOrganQuery from '../queries/scene-organs.rq';
import query from '../queries/scene.rq';
import { executeFilteredConstructQuery } from '../utils/execute-sparql.js';
import { reformatSceneNodes } from '../utils/format-scene-nodes.js';
import { ensureGraphArray } from '../utils/jsonld-compat.js';
function getTargetIri(filter) {
switch (filter.sex) {
case 'Male':
return 'https://purl.humanatlas.io/graph/hra-ccf-body#VHMale';
case 'Female':
return 'https://purl.humanatlas.io/graph/hra-ccf-body#VHFemale';
default:
return 'https://purl.humanatlas.io/graph/hra-ccf-body#VHBothSexes';
}
}
/**
* Retrieves scene data
* @param {Object} filter - An object containing query filters (unused)
* @param {string} endpoint - The SPARQL endpoint to connect to
* @returns {Array} - An empty array as scene data
*/
export async function getScene(filter, endpoint = 'https://lod.humanatlas.io/sparql') {
const [extractionSites, refOrgans, spatialGraph] = await Promise.all([
executeFilteredConstructQuery(query, filter, frame, endpoint),
executeFilteredConstructQuery(refOrganQuery, filter, frame, endpoint),
getSpatialGraph(endpoint, true, filter.sessionToken),
]);
const nodes = [...ensureGraphArray(refOrgans), ...ensureGraphArray(extractionSites)];
return reformatSceneNodes(nodes, spatialGraph, getTargetIri(filter), true);
}