2012-06-25 14 views
16

Esiste una libreria R che supporti neo4j? Vorrei costruire un grafico R (ad esempio igraph) da neo4j o viceversa - memorizzare un grafico R in neo4j.Usa neo4j con R

Più precisamente, sto cercando qualcosa di simile a bulbflow per Python.


Aggiornamento

C'è un nuovo driver per Neo4j R che sembra essere molto promettente: http://nicolewhite.github.io/RNeo4j/. Ho cambiato la risposta corretta.

+0

Dal Neo4j ha un [REST API] (http://docs.neo4j.org/chunked/1.6/rest-api.html), si dovrebbe essere in grado di connettersi ad esso a mano, con il pacchetto 'RJSONIO' per gestire i dati JSON e' RCurl' per inviare le domande. –

+0

Un accesso diretto tramite REST è ovviamente possibile, grazie per RJSONIO. Quello che sto cercando è un binding R più conveniente per neo4j. qualcosa come: "g <- graph.neo4j(), g.addNode (x), g.addEdge (from, to)". –

+0

Inoltre, probabilmente potresti importare ed esportare GraphML ?, vedi http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html#rest-api-load-a-sample-graph per il caricamento, l'esportazione è simile . –

risposta

11

Considerare il driver RNeo4j. La funzione mostrata sopra è incompleta: non può restituire dati di una singola colonna e non esiste una gestione NULL.

https://github.com/nicolewhite/RNeo4j

+0

Molto bello, darò un'occhiata! –

0

Non sicuro se si adatta alle vostre esigenze, ma date un'occhiata a Gephi. http://gephi.org/.

+1

Questo non si riferisce alla mia domanda ... Sto cercando un pacchetto R che consente un facile accesso a neo4j. Gephi è carino però :) –

+0

Io uso Gephi come intermedio per neo. C'è un buon plugin se esportate igraph in GEXF, quindi importatelo in gephi. Quindi puoi esportare su neo4j. È un po 'tortuoso, ma facile in un modo point-and-click. – Mittenchops

13

Questo link potrebbe essere utile. Collegherò ne04j con R nei giorni successivi e proverò prima con il link fornito. Spero che sia d'aiuto.

L'ho provato e funziona bene. Qui è la funzione che funziona: In primo luogo, installare e pacchetti di carico e quindi eseguire la funzione:

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 

} 

e questo è un esempio di funzione di chiamata:

q <-"start a = node(50) match a-->b RETURN b" 
data <- query(q) 
+1

Buono a sapersi che non sono solo in questo;) Sarebbe interessante sapere perché stai lavorando su questo e come usi neo4j. –

1

Ho cercato di usare lo script R (grazie mille per la fornitura di esso) e mi sembra che è possibile utilizzare direttamente: /db/dati/Cypher invece di db/dati/ext/CypherPlugin/graphdb/execute_query 012.(con neo4j 2.0).