Skip to content

Instantly share code, notes, and snippets.

@peeb
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peeb/d484769a9f9952758d70 to your computer and use it in GitHub Desktop.
Save peeb/d484769a9f9952758d70 to your computer and use it in GitHub Desktop.
Graph examples

Graph tinkering

Install Neo4J

$ brew install neo4j
$ neo4j start

Install lein-try plugin

Add the following to your ~/.lein/profiles.clj file:

{:user {:plugins [[lein-try "0.4.3"]]}}

Open a REPL with neocons

$ lein try clojurewerkz/neocons

Create a connection to Neo4J

user=> (require '[clojurewerkz.neocons.rest :as nr])

user=> (def db (nr/connect "http://localhost:7474/db/data"))

Add some nodes (users)

user=> (require '[clojurewerkz.neocons.rest.nodes :as nn])
    
user=> (def kardan (nn/create db {:username "kardan"}))
user=> (def loic (nn/create db {:username "loic"}))
user=> (def peeb (nn/create db {:username "peeb"}))

Create relationships

user=> (require '[clojurewerkz.neocons.rest.relationships :as nrl])
    
user=> (def rel1 (nrl/create db kardan loic :friend {:source "work"}))
user=> (def rel2 (nrl/create db kardan peeb :friend {:source "work"}))
user=> (def rel3 (nrl/create db loic peeb :friend {:source "work"}))
user=> (prn rel1)

Query/traverse relationships

user=> (nrl/outgoing-for db kardan :types [:friend])
user=> (nrl/incoming-for db peeb :types [:friend])

Relatively easy to see how this can pan out to create relationships from/to people, teams, events and sports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment