Giter Site home page Giter Site logo

SciGraph

Build Status Coverage Status Stories in Ready

Represent ontologies and ontology-encoded knowledge in a Neo4j graph.

Motivation

SciGraph aims to represent ontologies and data described using ontologies as a Neo4j graph. SciGraph reads ontologies with owlapi and ingests ontology formats available to owlapi (OWL, RDF, OBO, TTL, etc). Have a look at how SciGraph translates some simple ontologies.

Goals:

  • OWL 2 Support
  • Provide a simple, usable, Neo4j representation
  • Efficient, parallel ontology ingestion
  • Provide basic "vocabulary" support
  • Stay domain agnostic

Non-goals:

  • Create ontologies based on the graph
  • Reasoning support

What's Included?

SciGraph can be used in a number of ways. After the graph is generated it could be used in an application with no SciGraph dependency.

It could be used in an application with the scigraph-core dependency which adds some convenience methods and includes "vocabulary" support. "Vocabulary" support resolves labels to graph nodes, auto-complete functionality, OpenRefine resolution services, and CURIE to IRI resolution. Additional support for identifying these vocabulary entities in free text can be found in the scigraph-entity module.

SciGraph can also be used as a stand-alone Dropwizard web service (via scigraph-services). SciGraph services support adding custom Cypher queries during application configuration to keep the code base domain agnostic.

Note that SciGraph is "OWL-centric". If you have, for example, and arbitrary SKOS ontology that doesn't assert skos:Concept as an owl:Class these skos:Concepts will not be visible to the owlapi and not loaded in the resulting Neo4j graph.

Alternatives

Applications

  • the Monarch Initiative uses SciGraph for both ontologies and biological data modeling
  • SciCrunch uses SciGraph for vocabulary and annotation services
  • CINERGI uses SciGraph for vocabulary and annotation services
  • the Human Brain project uses SciGraph for vocabulary and annotation services

Additional Documentation

Getting Started

A Docker container is included with instructions

Alternatively, a Vagrant box is included if you don't want to modify your localhost (you'll also need VirtualBox). You can launch a provisioned box like this and then follow the steps below:

curl https://raw.githubusercontent.com/SciGraph/SciGraph/master/src/test/resources/vagrant/Vagrantfile -o Vagrantfile
vagrant up
vagrant ssh

Note that because Neo4j is using memory mapped IO the database cannot be stored in a Vagrant shared directory

If you're not using the vagrant box or docker container make sure you have git, maven, and java available. Java should be version 7 or better.

Clone and compile the project:

git clone https://github.com/SciGraph/SciGraph; cd SciGraph; mvn -DskipTests -DskipITs install

Build the graph:

cd SciGraph-core
mvn exec:java -Dexec.mainClass="io.scigraph.owlapi.loader.BatchOwlLoader" -Dexec.args="-c src/test/resources/pizzaExample.yaml"

Run the services:

cd ../SciGraph-services
mvn exec:java -Dexec.mainClass="io.scigraph.services.MainApplication" -Dexec.args="server src/test/resources/pizzaConfiguration.yaml"

Check out some of the REST endpoints (the Vagrant box has port 9000 mapped so you can use your host browser to check these out):

Also browse the generated REST documentation to see some of the other resources.


------- Thanks to YourKit for providing an Open Source license.

YourKit supports open source projects with its full-featured Java Profiler.YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

SciGraph's Projects

golr-loader icon golr-loader

Convert SciGraph queries into json that can be loaded by Golr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.