1. Overview
Scilake Lake API is a single GraphQL endpoint that exposes research products across domain-specific graphs (neuroscience, transport-maritime, transport-ccam, energy, cancer), plus graph‑specific enrichment entities (for example vehicle types, tissues, and techniques).
All GraphQL queries are served from /graphql. Use the GraphiQL UI at
/graphql (GET) to explore the schema and run queries.
2. Selecting a graph
Every request must include a graphdb header to select the backend.
Each configured value connects to a Neo4j or
AvantGraph
instance (both speak Bolt + Cypher). Canonical pilot graphs:
graphdb: neurosciencegraphdb: transport-maritimegraphdb: transport-ccamgraphdb: energygraphdb: cancer
AvantGraph backends are also available as
transport-ccam-ag, transport-maritime-ag,
neuroscience-ag, energy-ag, and cancer-ag.
On large AvantGraph graphs (for example neuroscience-ag,
energy-ag, and cancer-ag), prefer filters on
getProducts rather than open-ended pagination.
In GraphiQL, set the header under “Headers”:
{
"graphdb": "transport-ccam"
}3. SKG-IF
The Lake API is aligned with the Scientific Knowledge Graph Interchange Format (SKG-IF), an interoperability framework for exchanging metadata about core scholarly entities and their relationships.
GraphQL types expose a curated subset of SKG-IF fields for everyday querying. When you need the
canonical SKG-IF JSON-LD document rather than that simplified view, request skgif on
core SKG-IF entities (e.g., Product, Topic, and Grant).
query SkgifExample {
getProducts(page: 1, pageSize: 5) {
id
title
skgif
topics {
name
skgif
}
grants {
title
skgif
}
}
}4. Domain-specific enrichments
Each graph has its own enrichment entities connected to products;
these entities are returned as part of the getProducts query, but can also be accessed through dedicated queries:
- Energy (
graphdb: energyorenergy-ag): EnergyType, EnergyStorage, GeographicEntity —getEnergyTypes,getEnergyStorages,getGeographicEntities - Neuroscience (
graphdb: neuroscienceorneuroscience-ag): Technique, Species, UBERONParcellation, BiologicalSex, PreparationType —getTechniques,getSpecies,getUBERONParcellations,getBiologicalSexes,getPreparationTypes - Transport‑CCAM (
graphdb: transport-ccamortransport-ccam-ag): CommunicationType, EntityConnectionType, LevelOfAutomation, ScenarioType, SensorType, VehicleType, VRUType —getCommunicationTypes,getEntityConnectionTypes,getLevelsOfAutomation,getScenarioTypes,getSensorTypes,getVehicleTypes,getVruTypes - Transport‑maritime (
graphdb: transport-maritimeortransport-maritime-ag): VesselType —getVesselTypes - Cancer (
graphdb: cancerorcancer-ag): Disease, Drug, Protein, Gene —getDiseases,getDrugs,getProteins,getGenes
Each enrichment query checks that the graphdb header matches its pilot graph profile.
Using the wrong graph returns an error (for example, getVesselTypes with
transport-ccam requires transport-maritime).
5. Example queries
5.1 Products (all graphs)
This example returns the first page of products whose title contains “battery”, along with basic impact indicators.
query ProductsExample {
getProducts(
where: {
product: {
title: { contains: "battery" }
}
}
page: 1
pageSize: 10
) {
id
title
productType
citationCount
popularity
}
}5.2 Products filtered by technology and impact
This example uses the transport‑CCAM graph — set graphdb: transport-ccam or
transport-ccam-ag in the request header. It returns products that (a) mention the technology “smart traffic signals” and
(b) have a citation count greater than 2, using a combined AND filter.
query ComplexProductsExample {
getProducts(
where: {
AND: [
{
technology: {
name: {
equals: "smart traffic signals"
}
}
},
{
product: {
citationCount: {
gt: 2
}
}
}
]
}
page: 1
pageSize: 100
) {
id
title
productType
impulse
citationCount
popularity
technologies {
localIdentifier
name
}
}
}5.3 Products with domain-specific enrichments
Domain-specific entities are grouped under graphEnrichments on each product.
This example uses the energy graph (graphdb: energy) to return products mentioning wind
energy types, along with their linked enrichment entities.
query ProductsWithGraphEnrichments {
getProducts(
where: {
energyType: {
name: { contains: "wind" }
}
}
page: 1
pageSize: 10
) {
id
title
graphEnrichments {
energyTypes {
localIdentifier
name
source
}
energyStorages {
name
}
geographicEntities {
name
displayName
}
}
}
}5.4 Transport‑CCAM – vehicle types
Lists vehicle types from the transport‑CCAM graph. Set graphdb: transport-ccam (Neo4j) or
transport-ccam-ag (AvantGraph).
query VehicleTypesExample {
getVehicleTypes(
where: { name: { equals: "Motorcycle" } }
page: 1
pageSize: 20
) {
localIdentifier
name
source
}
}5.5 Cancer – diseases
This example shows how to search for diseases in the cancer graph whose name contains “breast”.
query DiseasesExample {
getDiseases(
where: { name: { contains: "breast" } }
page: 1
pageSize: 20
) {
id
name
type
}
}