Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

simongray/clojure-graph-resources

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 

Repository files navigation

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Morty Proxy This is a proxified and sanitized view of the page, visit original site.