pafonta / nexus

Blue Brain Nexus - A knowledge graph for data-driven science

Home Page:https://bluebrain.github.io/nexus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

View our technology page Join the chat at https://gitter.im/BlueBrain/nexus Build Status GitHub Release

Blue Brain Nexus - A knowledge graph for data-driven science

The Blue Brain Nexus is a provenance based, semantic enabled data management platform enabling the definition of an arbitrary domain of application for which there is a need to create and manage entities as well as their relations (e.g. provenance). For example, the domain of application managed by the Nexus platform deployed at Blue Brain is to digitally reconstruct and simulate the brain.

At the heart of the Blue Brain Nexus platform lies the Knowledge Graph, at Blue Brain, it will allow scientists to:

  1. Register and manage neuroscience relevant entity types through schemas that can reuse or extend community defined schemas (e.g. schema.org, bioschema.org, W3C-PROV) and ontologies (e.g. brain parcellation schemes, cell types, taxonomy).

  2. Submit data to the platform and describe their provenance using the W3C PROV model. Provenance is about how data or things are generated (e.g. protocols, methods used...), when (e.g. timeline) and by whom (e.g. people, software...). Provenance supports the data reliability and quality assessment as well as enables workflow reproducibility. Platform users can submit data either through web forms or programmatic interfaces.

  3. Search, discover, reuse and derive high-quality neuroscience data generated within and outside the platform for the purpose of driving their own scientific endeavours. Data can be examined by species, contributing laboratory, methodology, brain region, and data type, thereby allowing functionality not currently available elsewhere. The data are predominantly organized into atlases (e.g. Allen CCF, Waxholm) and linked to the KnowledgeSpace – a collaborative community-based encyclopedia linking brain research concepts to the latest data, models and literature.

It is to be noted that many other scientific fields (Astronomy, Agriculture, Bioinformatics, Pharmaceutical industry, ...) are in need of such a technology. Consequently, Blue Brain Nexus core technology is being developed to be agnostic of the domain it might be applied to.

Getting started

Running locally

The easiest way to run BlueBrain Nexus locally is to use docker-compose.

Prerequisites

In order to run Nexus on your local machine make sure that you have Docker and Docker Compose installed. Docker compose comes bundled together with docker which you can download from Docker website.

Running using docker compose

Download the docker-compose template and the Nginx router configuration into a directory of your choice, for instance ~/docker/nexus/.

Initialize the docker swarm and then deploy the template with Docker Stacks:

docker swarm init
docker stack deploy nexus --compose-file=docker-compose.yaml

If you’re running it for the first time it will take a few moments to download the required docker images. After all the containers have started you should be able to open the Nexus Landing Page locally on the port 80.

Please visit Running Locally section of the documentation for more detailed instructions.

Documentation

The overall documentation of the platform is available here. In the following section of this document, we will also point to specific components documentation.

Tutorials

Please check out our tutorials:

Technical Introduction

Please take a look at these slides for a short technical introduction to Nexus.

Blue Brain Nexus components

A broad overview of the components of the platform

Given the current product roadmap, here are the components that make Blue Brain Nexus:

Blue Brain Nexus' components

Now let's take a look at these components individually.

Backend services

Nexus KnowledgeGraph

This service is the heart of the Blue Brain Nexus platform. It allows users to define their domain, populate the knowledge graph with data, attach data files to entities. It also provides semantic search facilities to discover similar and relevant data in the platform.

Status: active development
Source code: https://github.com/BlueBrain/nexus-kg
Documentation: https://bbp-nexus.epfl.ch/staging/docs/kg/

Nexus IAM (Identity and Access Managment)

This service is a relay to any OAUTH2 identity service the platform maintainers decide to configure authentication against. The purpose of this service is to provide a unified identity service for the nexus platform irrespective of which actual underlying service is being used. Furthermore, this service is managing the privileges granted on entities to users.

Status: active development
Source code: https://github.com/BlueBrain/nexus-iam
Documentation: https://bbp-nexus.epfl.ch/staging/docs/iam/

Nexus Admin

This service manages the main resource groupings used throughout the platform.

Status: active development
Source code: https://github.com/BlueBrain/nexus-admin
Documentation: coming soon

Nexus Commons

This library is meant to contain reusable utilities of the Nexus platform. Amongst other things, this library contains commons-types, commons-http, shacl-validator, sparql-client, elastic-client.

Status: active development
Source code: https://github.com/BlueBrain/nexus-commons

Nexus Service

A collection of small libraries / utilities commonly used in building Nexus services.

Status: active development
Source code: https://github.com/BlueBrain/nexus-service

sbt-nexus

This library contains all the code related to the management of our Scala projects using SBT. Its purpose is to promote reuse of build code across all projects.

Status: active development
Source code: https://github.com/BlueBrain/sbt-nexus

Web applications

Nexus Dashboard

This web application is the landing page of a Blue Brain Nexus deployment. It gives access to basic statistics about your instance and pointer to other web applications, documentation, tutorials...

Status: active development Source code: https://github.com/BlueBrain/nexus-dashboard

Nexus Search

This web application allows users of the nexus platform to search in the knowledge graph. Beyond searching and inspecting data stored in the platform, its purpose is to enable the discovery of similar and related data.

Status: active development
Source code: https://github.com/BlueBrain/nexus-search-webapp

Nexus Explorer

This web application enables users to securely browse entity and data stored in the knowledge graph by drilling down through organisations, domains, schemas and instances. Once an instance of interest has been found, you can navigate the knowledge graph following entity relations.

Status: active development
Source code: https://github.com/BlueBrain/nexus-explorer

Nexus Webapp Commons

This library contains all the code shared by nexus web applications in order to promote their reuse.

Status: active development
Source code: https://github.com/BlueBrain/nexus-webapp-commons

Nexus Registration

This prototypic web application will allow users to enter data into the knowledge graph using forms generated automatically from domain’s schemas. This application is meant for low scale data integration while large scale will be done programmatically through APIs.

Status: currently inactive Source code: https://github.com/BlueBrain/nexus-registration-webapp

Domains (Schemas, Vocabularies)

Nexus Core Schemas

nexus-schemaorg

SHACL version of a subset of schemas defined by schema.org that are commonly used in Blue Brain Nexus.

Status: active development
Source code: https://github.com/BlueBrain/nexus-schemaorg

nexus-prov

Data management oriented SHACL version of W3C PROV-O.

Status: active development Source code: https://github.com/BlueBrain/nexus-prov

Nexus domain specific components

Nexus BBP Data models

Data models that Blue Brain has developed in order to facilitate the integration of specific neuroscience data.

Status: active development
Source code: https://github.com/BlueBrain/nexus-bbp-domains

Neuroshapes

A community effort to develop open SHACL schemas for FAIR (Findable, Accessible, Interoperable, Reproducible) neuroscience data.

Status: active development
Source code: https://github.com/INCF/neuroshapes

Nexus Clients

Nexus CLI

A command line interface (CLI) to operate basic operation on a Nexus deployment.

Status: active development Source code: https://github.com/BlueBrain/nexus-cli

Nexus Python SDK

The Human Brain Project has developed an open source library called Pyxus to facilitate the use of Nexus with Python. This library will help Python users to integrate their tools with the Blue Brain Nexus platform. Initially, it will mainly enable the interface with the Knowledge Graph service.

Status: active development Source code: https://github.com/HumanBrainProject/pyxus

About

Blue Brain Nexus - A knowledge graph for data-driven science

https://bluebrain.github.io/nexus

License:Apache License 2.0


Languages

Language:Jupyter Notebook 91.2%Language:Scala 8.8%