/carnival

Property graph data unification framework

Primary LanguageGroovyGNU General Public License v3.0GPL-3.0

License: GPL v3 Carnival CI Coverage Status

Carnival

It's a party of information!

Carnival is a data unification technology that enables the aggregation of data from disparate sources into a unified property graph and provides tools to reason over and interact with graph data using bounded operations. Carnival has a robust architecture for tracking the provenance of data and providing evidence chains for conclusions or reasoning made on those data.

Quick Links

Contents

  1. Overview
  2. Github Pages
  3. Packages
  4. Graph Schema
  5. Getting Started

Overview

Carnival uses objects called vines to connect to external data sources and reapers encode the domain knowledge specific to that data source. Vines can connect to sources such as MySql or Oracle databases, RedCap projects, and CSV files. Some vine features include:

  • Parameterized SQL queries
  • Utilities to compose iterative SQL from lists of identifiers and codes
  • Caching of query results
  • Incremental caching of long running query result data
  • Monitor thread to estimate time to completion of long running queries
  • Automatic re-establishment of dropped connections
  • API layer for REDCap
  • H2 database wrapper for CSV data

Carnival’s property graph database:

  • Is inherently schema-less enabling the incorporation of new data without restructuring resident data
  • Follows data instantiation patterns built for computational efficiency and inspired by OBO Foundry ontologies
  • Has a query engine capable of executing queries of arbitrary complexity

Github Pages

The Github pages site is stored in the /docs directory and makes use of jekyll. See the jekyll docs for jekyll installation and usage instructions.

Prerequisites

Building

To build the documentation:

cd docs
bundle exec jekyll clean
bundle exec jekyll build

Local Jekyll Server

To run the Jekyll server locally:

bundle exec jekyll serve

Packages

Core Packages

Name Description
carnival-util Contains utility and helper classes such as MappedDataTable, FeatureReport and SqlUtils.
carnival-graph Framework for defining carnival graph schemas (vertex and edge definitions). Contains the basic vertex, edge, and property classes.
carnival-core Basic carnival framework. Implements the basic carnival framework classes (vines, reapers, reasonsers, etc). Defines the basic carnival graph schema (processes, databases). - Core graph schema - Reaper schema - Reasoner schema
carnival-gradle Gradle plugin for building a Micronaut app that relies on Carnival.
carnival-gremlin-dsl Gremlin dsl support for traversing carnival property graphs.

Application Packages

Name Description
carnival-clinical Extension of carnival-core for clinical data. Contains graph schema extensions for concepts such as patients, patient cohorts and healthcare encounters. Implements methods for case-control matching for patient cohorts. - Graph schema

Graph Schema

Getting Started

See developer setup for full documentation on how to set up a development environment, and a tutorial for getting started.