GithubHelp home page GithubHelp logo

simongray / clojure-graph-resources Goto Github PK

View Code? Open in Web Editor NEW
254.0 17.0 6.0 172 KB

A curated list of Clojure resources for dealing with graph-like data.

License: MIT License

graphs datalog rdf neo4j clojure graph-theory owl semantic-web triples

clojure-graph-resources's Introduction

Clojure graph resources

This is a curated list of mostly mature and/or actively developed Clojure resources relevant for dealing with graph-like data. It's currently being expanded as I explore this area more thoroughly. Suggestions are welcome in the form of pull requests or Github issues. I try to steer around abandonware, though.

If you're interested in DSLs and parsing, be sure to check out clojure-dsl-resources too.

Data structures / algorithms

  • aysylu/loom: Graph library for Clojure.
  • Engelberg/ubergraph: An all-purpose Clojure graph data structure that implements Loom protocols and more.
  • ont-app/igraph: IGraph defines a protocol which aims to provide a general interface to a variety of graph-based representations.
  • totakke/jungerer: Clojure network/graph library wrapping JUNG.
  • pangloss/fermor: Fast, powerful, general-purpose graph traversal and modelling tools plus a performant immutable in-memory graph database.
  • ekoontz/dag-unify: A Clojure library for combining directed acyclic graphs (DAGs) via unification.
  • aroemers/rmap: Clojure library for defining recursive maps; literally, programmatically and with pure data.
  • cjsauer/joinery: Enables traversal of in-memory graph-like data structures using Clojure(Script)'s map protocols.

Visualisation

  • chrismurrph/show-graph: Translates a particular directed graph data structure (graph with vertices and edges) into a JavaFX view that can be seen from Reveal.
  • jebberjeb/specviz: Generate Graphviz images from clojure.spec.
  • benedekfazekas/morpheus: Generate dependency graph(s) for variables in Clojure(Script) namespaces.
  • jpmonettas/clograms: Clojure[Script] source code diagrams.
  • jafingerhut/cljol: Visualise the memory usage of a Java object and all the objects that it references as a graph.

Databases

Labeled-property graph

Labeled-property graph databases use complex graph models where edges and vertices can have both labels and associated properties.

RDF + OWL

RDF triplestores are a specialised type of graph database for representing knowledge graphs; part of the W3C Semantic Web standards.

Datalog

Clojure's Datomic-like databases also model data as triplets... or in some cases technically as quintuplets AKA datoms. See clojurelog.github.io for a comparison of some of the Datalog database options listed below.

  • Datomic.com: (PROPRIETARY) A transactional database with a flexible data model, elastic scaling, and rich queries.
  • tonsky/datascript: An immutable in-memory database and Datalog query engine in Clojure and ClojureScript.
    • mpdairy/posh: Posh is a ClojureScript / React library that lets you use a single DataScript database to store your app state.
    • denistakeda/re-posh: Re-posh allows Posh and re-frame to work together by adding support for re-frame specific subscriptions, events, effects, and co-effects to Posh.
    • metasoarous/datsync: This library offers tools for building DataScript databases as materialized views (very much in the re-frame/samsa sense) of some master/central Datomic database.
    • frankiesardo/minikusari: minikusari is a minimal rule engine built on top of Datascript (and can work with Datomic or Datahike).
    • ont-app/datascript-graph: An implementation of the IGraph protocol extended to datascript.
  • mhuebert/re-db: Attempts to be a fast, reactive, client-side triple-store for handling global state in ClojureScript apps, inspired by Datomic/DataScript, working in conjunction with Reagent.
  • replikativ/datahike: Datahike is a durable Datalog database powered by an efficient Datalog query engine.
  • juji-io/datalevin: Datalevin is a simple durable Datalog database.
  • quoll/asami: A graph database, for Clojure and ClojureScript.
  • xtdb/xtdb: XTDB is a general purpose database with graph-oriented bitemporal indexes.
  • Workiva/eva: Eva is a distributed database-system implementing an entity-attribute-value data-model that is time-aware, accumulative, and atomically consistent.
  • ribelo/doxa: An in-memory datalog database implemented with Meander.
  • threatgrid/naga: Datalog based rules engine.
  • den1k/nldl: Natural Language for Clojure's Datalog flavor as present in Datomic, Datascript, Datahike etc.

Other

  • clojurewerkz/ogre: Ogre is a Clojure Gremlin Language Variant of the Gremlin graph traversal language from Apache Tinkerpop, which is an open source, vendor-agnostic, graph computing framework.
  • fern-flower-lab/sqlg-clj: Tinkerpop3 graphs in a relalional database (Sqlg wrapper).
  • stuartsierra/mapgraph: Basic in-memory graph database of maps with links.
  • den1k/subgraph: Reactive graph database for re-frame; a fork of stuartsierra/mapgraph.
  • keechma/keechma-entitydb: EntityDB is a client side database and normalization engine.

Queries

Miscellaneous

  • fulcrologic/fulcro: Fulcro is a full-stack web framework where a single underlying graph acts as the shared data model of both backend and frontend.
  • plumatic/plumbing: Plumbing and Graph: the Clojure utility belt. Graph is a simple and declarative way to specify a structured computation, which is easy to analyze, change, compose, and monitor.
  • simongray/datalinguist: Stanford CoreNLP in idiomatic Clojure. Support for dependency grammar graphs, pattern matching, and visualisation.
  • nwjsmith/generators.graph: test.check generators for graph data.
  • jackrusher/mundaneum: A clojure wrapper around WikiData.
  • Swirrl/cubiql: A proof of concept GraphQL service for querying Linked Data Cubes.
  • esuomi/muotti: A graph-based value transformer library.

Personal knowledge graphs

It is perhaps worth mentioning that several tools have been written in Clojure for making personal knowledge graphs through note-taking. The first one to appear was Roam Research (proprietary). It has since inspired Athens Research (open source, commercial) and Logseq (open source, community-driven). These tools are all based on libraries listed in the Datalog section.

Articles/video

Community

RDF has a small, but steady Clojure following. People are using Neo4j with Clojure, but not talking much about it. Datomic-like Datalog databases have the most momentum.

clojure-graph-resources's People

Contributors

aleksandersumowski avatar lilactown avatar nwjsmith avatar rickmoynihan avatar simongray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clojure-graph-resources's Issues

Consider plumatic/graph

First of all, great idea! Second, I’d like to suggest one of my favorite clj libs, Plumatic Graph.

From Plumbing’s readme :

Graph is a simple and declarative way to specify a structured computation, which is easy to analyze, change, compose, and monitor.

Although it is mostly focused on DAGs to create stream graph computation models, IME it’s a very practical and useful lib.

Graph query benchmarking

The Crux repository maintains a comparative query benchmarking project, most notably including WatDiv ("Waterloo SPARQL Diversity Test Suite") which is an RDF-based suite of "subgraph matching" stress tests that have been adapted to run using Datalog and Cypher also:
https://github.com/juxt/crux/tree/master/crux-bench

The benchmark results are not currently published but the project can be run independently and could be extended to cover the other databases listed.

Add factui to the list

https://github.com/arachne-framework/factui

FactUI is a library for efficiently rendering user interfaces declaratively, based on a tuple-oriented data store.

It uses a datomic-like syntax for rules declaration. and clara-rules underneath. So it feels like datascript + re-posh + rules.

I used it in a project a while back and it worked great with reagent.
Seems abandoned but some great code and ideas to explore in there.

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.