Use neo4j with R
Asked Answered
S

4

17

Is there a R library that supports neo4j? I would like to construct a R graph (e.g. igraph) from neo4j or - vice versa - store a R graph in neo4j.

More precisely, I am looking for something similar to bulbflow for Python.


Update

There is a new neo4j driver for R that looks promising: http://nicolewhite.github.io/RNeo4j/. I changed the correct answer.

Sonya answered 25/6, 2012 at 11:57 Comment(4)
Since neo4j has a REST API, you should be able to connect to it by hand, with the RJSONIO package to handle JSON data and RCurl to send the queries.Counterwork
A direct access via REST is possible of course, thanks for RJSONIO. What I am looking for is a more convenient R binding for neo4j. something like: "g <- graph.neo4j(), g.addNode(x), g.addEdge(from, to)" .Sonya
Also, you probably could import and export GraphML?, See docs.neo4j.org/chunked/snapshot/… for loading, exporting is similar.Tellurite
I'm not sure if there are any R libraries. May be this will be helpful to look at Neo4j-Cypher-R Example CodeBuggs
G
11

Consider the RNeo4j driver. The function shown above is incomplete: it cannot return single column data and there is no NULL handling.

https://github.com/nicolewhite/RNeo4j

Generator answered 23/7, 2014 at 19:56 Comment(1)
Very nice, I'll have a look!Sonya
P
13

This link might be helpful. I'm going to connect ne04j with R in the following days and will try first with the provided link. Hope it helps.

I tried it out and it works well. Here is the function that works: First, install and load packages and then execute function:

install.packages('RCurl')
install.packages('RJSONIO')

library('bitops')
library('RCurl')
library('RJSONIO')

query <- function(querystring) {
  h = basicTextGatherer()
  curlPerform(url="localhost:7474/db/data/ext/CypherPlugin/graphdb/execute_query",
    postfields=paste('query',curlEscape(querystring), sep='='),
    writefunction = h$update,
    verbose = FALSE
  )           
  result <- fromJSON(h$value())
  #print(result)
  data <- data.frame(t(sapply(result$data, unlist)))
  print(data)
  names(data) <- result$columns

}

and this is an example of calling function:

q <-"start a = node(50) match a-->b RETURN b"
 data <- query(q)
Professionalize answered 3/9, 2012 at 18:42 Comment(1)
Good to know that I'm not alone in this ;) Would be interesting to know why you're working on this and how you use neo4j.Sonya
G
11

Consider the RNeo4j driver. The function shown above is incomplete: it cannot return single column data and there is no NULL handling.

https://github.com/nicolewhite/RNeo4j

Generator answered 23/7, 2014 at 19:56 Comment(1)
Very nice, I'll have a look!Sonya
B
1

I tried to use the R script (thanks a lot for providing it) and it seems to me that you can directly use : /db/data/cypher instead of db/data/ext/CypherPlugin/graphdb/execute_query (with neo4j 2.0).

Billfish answered 4/6, 2014 at 16:26 Comment(0)
A
0

Not sure if it fits your requirements but have a look at Gephi. http://gephi.org/.

Archdeaconry answered 25/6, 2012 at 14:29 Comment(2)
This does not really relate to my question ... I am looking for a R package that allows easy access to neo4j. Gephi is nice though :)Sonya
I use Gephi as an intermediate to neo. There's a good plugin if you export igraph to GEXF, then import that to gephi. Then you can export to neo4j. It's a little circuitous, but easy in a point-and-click kind of way.Outlive

© 2022 - 2024 — McMap. All rights reserved.