GithubHelp home page GithubHelp logo

originalsouth / novempuss Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 29 KB

An Atomic Graphlet—Graph Logical Inference Database Engine Prototype

License: European Union Public License 1.2

Julia 100.00%
database graph-database graphlets graphs julia openkat

novempuss's Introduction

Novempuss

An Atomic Graphlet—Graph Logical Inference Database Engine Prototype.

Written in Julia.

Introduction

Q. Why is it called Novempuss?

A. Because it is the new little brother of Octopoes.

Q. What is a "graphlet"?

A. A subgraph, that contains the relevant information about the graph you are working with.

Q. What is "Atomic"?

A. It means that graphlets can be processed in parallel.

Q. Is Novempuss parallelized?

A. No not yet, but in principle it can be — and it might be.

Q. What is "Logical Inference"?

A. It means that new vertices in the graph are generated by logical rules provided by the user. Any graphlet, is always fully inferred.

Q. Why is it a "Prototype"?

A. Novempuss is a prototype for improvements to Octopoes the graph database powering OpenKAT.

Q. Why is it an "Engine"?

A. This project does not aim to be a full fledged database, but is rather a set of algorithms that allow a database solution to be built upon.

Q. Is Novempuss stable?

A. No, it is currently under heavy initial development. It is the aim to become more stable eventually, but like every project it will be a work in progress.

Q. Why is it written in Julia?

A. Novempuss is a mathy project with a need for speed. Julia, is in short, everything a math oriented C/C++ developer wished Python would have been:

  • Julia is fast (High performance unlike Python),
  • Easy to use (very productive unlike C/C++),
  • Interoperable (you can easily interface it with your favorite language),
  • Has easy to utilize parallelism, acceleration and distribution (Uncommon),
  • A great math oriented community (Matlab/R).

Hence a perfect candidate.

Installation

For usage:

] add https://github.com/originalsouth/Novempuss.git

For development:

using Pkg
Pkg.develop(url = "https://github.com/originalsouth/Novempuss.git")

Install extra dependencies:

] add BenchmarkTools CairoMakie GraphMakie GraphPlot PlotGraphviz Pluto ProfileView Revise SimpleWeightedGraphs Test

Basic Usage

To be done. See tests and examples for now.

Roadmap

  • Implement a MethodSet dispatcher for rule based inference
  • Implement basic Graphlet structure with corresponding routines
  • Create LogicalGraph structure as database structure to store Graphlets with common routines
    • Allow addition/deletion of nodes and rules
    • Find node's Graphlet's
    • Find neighbors of a node (up to n-th order)
    • Find shortest path between nodes (if any)
    • Add Graphlet merge caching optimizations
    • Add transaction history
  • Extend with optional use of parallelism CPU/GPU
  • Add serializations (for storage)
  • Add documentation
  • Add testing
    • Implement some basic tests
    • Harden and extend testing and measure coverage
  • Add examples
  • Create a benchmark suite to test and enhance performance

Meanwhile there will also be the usual bug zapping, code and performance optimizing, and discussions.

Contribute

Please! Feel free to discuss make an issue or create a pull request.

Acknowledgements

Thanks to @underdarknl for good discussions and inspirations, @brennodewinter for the endorsements and the inspiring OpenKAT team. Thanks to the colleagues at CIMSOLUTIONS.

novempuss's People

Contributors

originalsouth avatar

Watchers

 avatar  avatar

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.