[Neo4j] graph-matching from web application

2010-07-21 Thread Jonathan Marten
Hi David,

thanks a lot for your answers! They were very helpful.

I'm not sure I understand your setup. Could you describe a, b and c in more
detail? What do you mean by a subgraph in this case? What makes it a
subgraph, i.e. what is the greater graph?

My setup is similar to someone looking for a chemical molecule. My database 
would hold the structure of 200 million molecules and the user wants get 
information on every molecule that contains a certain structure. He can 
construct this structure using a html form and then we search in neo4j for all 
matching molecules (i.e. all that contain a CH2-CH=O or whatever people can 
think of). Neo4j returns the IDs of these molecules and then we use our 
existing Perl/PHP Scripts to retrieve more information from the relational 
database, visualize, and so on.

Well, this depends on how you roll it. If you have a separate database, then
you will have to access it via e.g. REST or using the remote graph db API.
But you can also have it embedded in your application, running in the
webapp. But you might not be using a Java webapp?

Right, I'm not using a Java webapp. So my solution will probably be to 
implement a simple multi-threaded server in Java (for instance like the one at 
the end of this page: 
http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/networking/sockets/clientServer.html)
 and then query that server from CGI-scripts on the webserver running the web 
application.

I don't understand what you mean. Please clarify. For example, you can't
attach properties to the graph. Only to nodes and relationships.

That was exactly what I meant. I wanted to store the ID only once per molecule 
and not on every node.

But to answer your questions: I think you always need to do matching
starting from a node. You can match subgraphs with properties using the
addPropertyConstraint method on PatternNode and PatternRelationship. You can
match relationships too using the PatternRelationship class.

Thanks a lot, I thought it would be like that from reading the documentation, 
but I wasn't sure. What I wanted to do is sort of abstract matching, i.e. I 
wanted to retrieve a structure like N--rel1--N--rel2--N anywhere in the 
database without knowing anything about the nodes and only knowing the 
relationship types. I have found a way of doing something like that by changing 
my database design. It will not be very efficient, but it should work.

Thanks again for your help, I think I know what to do now.
Best regards,
Jonathan

-- 
Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!  
Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] graph-matching from web application

2010-07-21 Thread Paul A. Jackson
It seems a query optimizer would be of use in this case.  If you are looking 
for A-Rel1-B-Rel2-C, it would be helpful to know what the frequency of A, 
B, C, (and possibly Rel1, and Rel2 if relationships are indexed in the future) 
and start your traversal with whichever set of nodes is least common.

This is an interesting problem.  If you could represent a molecule canonically 
in text (so that a given molecule would always be represented in text the exact 
same way), then it would seem a text search would be the way to go (eliminating 
the need for the graph altogether).

-Paul 



-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Jonathan Marten
Sent: Wednesday, July 21, 2010 4:45 AM
To: user@lists.neo4j.org
Subject: [Neo4j] graph-matching from web application

Hi David,

thanks a lot for your answers! They were very helpful.

I'm not sure I understand your setup. Could you describe a, b and c in more
detail? What do you mean by a subgraph in this case? What makes it a
subgraph, i.e. what is the greater graph?

My setup is similar to someone looking for a chemical molecule. My database 
would hold the structure of 200 million molecules and the user wants get 
information on every molecule that contains a certain structure. He can 
construct this structure using a html form and then we search in neo4j for all 
matching molecules (i.e. all that contain a CH2-CH=O or whatever people can 
think of). Neo4j returns the IDs of these molecules and then we use our 
existing Perl/PHP Scripts to retrieve more information from the relational 
database, visualize, and so on.

Well, this depends on how you roll it. If you have a separate database, then
you will have to access it via e.g. REST or using the remote graph db API.
But you can also have it embedded in your application, running in the
webapp. But you might not be using a Java webapp?

Right, I'm not using a Java webapp. So my solution will probably be to 
implement a simple multi-threaded server in Java (for instance like the one at 
the end of this page: 
http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/networking/sockets/clientServer.html)
 and then query that server from CGI-scripts on the webserver running the web 
application.

I don't understand what you mean. Please clarify. For example, you can't
attach properties to the graph. Only to nodes and relationships.

That was exactly what I meant. I wanted to store the ID only once per molecule 
and not on every node.

But to answer your questions: I think you always need to do matching
starting from a node. You can match subgraphs with properties using the
addPropertyConstraint method on PatternNode and PatternRelationship. You can
match relationships too using the PatternRelationship class.

Thanks a lot, I thought it would be like that from reading the documentation, 
but I wasn't sure. What I wanted to do is sort of abstract matching, i.e. I 
wanted to retrieve a structure like N--rel1--N--rel2--N anywhere in the 
database without knowing anything about the nodes and only knowing the 
relationship types. I have found a way of doing something like that by changing 
my database design. It will not be very efficient, but it should work.

Thanks again for your help, I think I know what to do now.
Best regards,
Jonathan

-- 
Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!  
Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo4j] Batch inserter shutdown taking forever

2010-07-21 Thread Tim Jones
Hi,

I'm using a BatchInserter and a LuceneIndexBatchInserter to insert 5m nodes 
and 
5m relationships into a graph in one go. The insertion seems to work, but 
shutting down takes forever - it's been 2 hours now.

At first, the JVM gave me garbage collection exception, so I've set the heap to 
2gb.

'top' tells me that the application is still running:

  PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEMTIME+  COMMAND
 9994 tim17   0 2620m 2.3g 238m S 99.5 39.1 115:48.84 java

but checking the filesystem by running 'ls -l' a few times doesn't indicate 
that 
files are being updated.

Is this normal? Is there a way to improve performance?

I'm loading all my data in one go to ease creating the db - it's simpler to 
create it from scratch each time instead of updating an existing database - so 
ideally I don't want to break this job down into multiple smaller jobs 
(actually, this would be OK if performance was good, but I ran into problems 
inserting data and retrieving existing nodes).

Thanks,
Tim



  

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo4j] Neo4j Multiple Nodes Issue

2010-07-21 Thread Maaz Bin Tariq
Hi,
 
We are facing kind of a situation in our application using 
neo4j graph and we want to have your advice regarding this issue.
 
We use graph in a way that we create a node and with every 
node we set a property i-e UID =value(numeric)  and then we create the 
relationships between those nodes. According to our use case requirement there 
needs to be only one node in the whole graph space should exist having a UID 
value. That is UID should become the unique identifier for a node in the graph 
space. 
 
Our graph service is configured using the spring framework 
and all transaction handling is being managed by the spring itself. Now we are 
facing the problem where multiple nodes get created having the same UID because 
of multiple transactions running the same time and  one transaction effect is 
not visible to other until one is committed. What we do is that we look for a 
node in the graph with a specific UID and if it is not there we create one. So 
in that case there is probability where multiple nodes could be created having 
the same UID if multiple transactions running same time and trying to lookup 
 create same UID.
 
Here I want to inquire that do we have in neo4j some kind of 
unique constraint be applied on a specific property that prevent multiple nodes 
get created having the same UID. Second, Let say if I am creating 1000 nodes 
and 
their relationships in one transaction and  now I want to know that what is the 
performance cost if I create each node and its relationship in one separate 
transaction.
Thanks-Maaz



  
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Neo4j Multiple Nodes Issue

2010-07-21 Thread Rick Bullotta
The node id indirectly achieves this, but node id's can be recycled when
nodes are deleted.  Also, depending on node id may or may not work in future
versions of Neo that might support sharding or distributed storage.

Sounds to me like you have a more simple issue in that your UID generator
isn't coded properly.  It should be designed as thread safe so that you
couldn't get the same UID in the first place.

-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
Behalf Of Maaz Bin Tariq
Sent: Wednesday, July 21, 2010 9:39 AM
To: user@lists.neo4j.org
Subject: [Neo4j] Neo4j Multiple Nodes Issue

Hi,
 
We are facing kind of a situation in our application using 
neo4j graph and we want to have your advice regarding this issue.
 
We use graph in a way that we create a node and with every 
node we set a property i-e UID =value(numeric)  and then we create the 
relationships between those nodes. According to our use case requirement
there 
needs to be only one node in the whole graph space should exist having a UID

value. That is UID should become the unique identifier for a node in the
graph 
space. 
 
Our graph service is configured using the spring framework 
and all transaction handling is being managed by the spring itself. Now we
are 
facing the problem where multiple nodes get created having the same UID
because 
of multiple transactions running the same time and  one transaction effect
is 
not visible to other until one is committed. What we do is that we look for
a 
node in the graph with a specific UID and if it is not there we create one.
So 
in that case there is probability where multiple nodes could be created
having 
the same UID if multiple transactions running same time and trying to lookup

 create same UID.
 
Here I want to inquire that do we have in neo4j some kind of 
unique constraint be applied on a specific property that prevent multiple
nodes 
get created having the same UID. Second, Let say if I am creating 1000 nodes
and 
their relationships in one transaction and  now I want to know that what is
the 
performance cost if I create each node and its relationship in one separate 
transaction.
Thanks-Maaz



  
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Neo4j Multiple Nodes Issue

2010-07-21 Thread Johan Svensson
Hi,

One can use the built in locking in the kernel to synchronize and make
code thread safe. Here is an example of this:

https://svn.neo4j.org/examples/apoc-examples/trunk/src/main/java/org/neo4j/examples/socnet/PersonFactory.java

The createPerson method guards against creation of multiple persons
with the same name by creating a relationship from the reference node.
After the relationship has been created (in the transaction but not
yet committed) the write lock for the reference node has been acquired
making sure any other running transaction has to wait for the lock to
be released. Finally the index is checked to make sure some other
transaction did not create the person while the current transaction
was waiting for the write lock.

Even simpler is to just remove a non existing property from a node or
relationship. That will grab a lock on the specific node or
relationship (that will be held until the transaction commits or is
rolledback).

Regards,
Johan

On Wed, Jul 21, 2010 at 4:07 PM, Rick Bullotta
rick.bullo...@burningskysoftware.com wrote:
 The node id indirectly achieves this, but node id's can be recycled when
 nodes are deleted.  Also, depending on node id may or may not work in future
 versions of Neo that might support sharding or distributed storage.

 Sounds to me like you have a more simple issue in that your UID generator
 isn't coded properly.  It should be designed as thread safe so that you
 couldn't get the same UID in the first place.

 -Original Message-
 From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
 Behalf Of Maaz Bin Tariq
 Sent: Wednesday, July 21, 2010 9:39 AM
 To: user@lists.neo4j.org
 Subject: [Neo4j] Neo4j Multiple Nodes Issue

 Hi,

 We are facing kind of a situation in our application using
 neo4j graph and we want to have your advice regarding this issue.

 We use graph in a way that we create a node and with every
 node we set a property i-e UID =value(numeric)  and then we create the
 relationships between those nodes. According to our use case requirement
 there
 needs to be only one node in the whole graph space should exist having a UID

 value. That is UID should become the unique identifier for a node in the
 graph
 space.

 Our graph service is configured using the spring framework
 and all transaction handling is being managed by the spring itself. Now we
 are
 facing the problem where multiple nodes get created having the same UID
 because
 of multiple transactions running the same time and  one transaction effect
 is
 not visible to other until one is committed. What we do is that we look for
 a
 node in the graph with a specific UID and if it is not there we create one.
 So
 in that case there is probability where multiple nodes could be created
 having
 the same UID if multiple transactions running same time and trying to lookup

  create same UID.

 Here I want to inquire that do we have in neo4j some kind of
 unique constraint be applied on a specific property that prevent multiple
 nodes
 get created having the same UID. Second, Let say if I am creating 1000 nodes
 and
 their relationships in one transaction and  now I want to know that what is
 the
 performance cost if I create each node and its relationship in one separate
 transaction.
 Thanks-Maaz

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Neo4j Multiple Nodes Issue

2010-07-21 Thread Maaz Bin Tariq
Thanks Johan Svensson and Rick Bullotta.
Yes Bullotta, you are are right the node creation is the problem , our code is 
something similar to following code.  we donot want to synchronized the method 
as it cost some performance. Any suggestion to improve it. Also how costly 
neoIndexService.getSingleNode() method is if we call it twice/thrice and the 
node was not created.  Will it search the whole graph?
Svensson, In our case the problem is creating of duplicate reference nodes that 
is even not handle in the sample code.
---
private IndexService neoIndexService;
private GraphDatabaseService neoService;


private Node getOrCreateUserNodeByUserId(final Long id) {
   Node node = neoIndexService.getSingleNode(UID, id);

    if (node == null) {
    node = neoService.createNode();
    node.setProperty(UID, id);
    neoIndexService.index(node, UID, id);
    }

    return node;
}
---
private Node getOrCreateUserNodeByUserId(final Long id) {

   Node node = neoIndexService.getSingleNode(UID, id);



    if (node == null) {

    node = neoService.createNode();

    node.setProperty(UID, id);

    neoIndexService.index(node, UID, id);

    }



    return node;

}
--
how costly the following solution

    private Node getOrCreateUserNodeByUserId(final Long id) {
        Node node = neoIndexService.getSingleNode(UID, id);

    if (node == null) {
        node = createUserNode(id);
    }

    return node;
    }
    
 private synchronized Node createUserNode(final Long id){
        Node node = neoIndexService.getSingleNode(UID, id);
        if (node == null) {
            node = neoService.createNode();
    node.setProperty(UID, id);
    neoIndexService.index(node, UID, id);
        }
        return node;
}


Thanks
-Maaz

--- On Wed, 7/21/10, Johan Svensson jo...@neotechnology.com wrote:

From: Johan Svensson jo...@neotechnology.com
Subject: Re: [Neo4j] Neo4j Multiple Nodes Issue
To: Neo4j user discussions user@lists.neo4j.org
Date: Wednesday, July 21, 2010, 7:38 PM

Hi,

One can use the built in locking in the kernel to synchronize and make
code thread safe. Here is an example of this:

https://svn.neo4j.org/examples/apoc-examples/trunk/src/main/java/org/neo4j/examples/socnet/PersonFactory.java

The createPerson method guards against creation of multiple persons
with the same name by creating a relationship from the reference node.
After the relationship has been created (in the transaction but not
yet committed) the write lock for the reference node has been acquired
making sure any other running transaction has to wait for the lock to
be released. Finally the index is checked to make sure some other
transaction did not create the person while the current transaction
was waiting for the write lock.

Even simpler is to just remove a non existing property from a node or
relationship. That will grab a lock on the specific node or
relationship (that will be held until the transaction commits or is
rolledback).

Regards,
Johan

On Wed, Jul 21, 2010 at 4:07 PM, Rick Bullotta
rick.bullo...@burningskysoftware.com wrote:
 The node id indirectly achieves this, but node id's can be recycled when
 nodes are deleted.  Also, depending on node id may or may not work in future
 versions of Neo that might support sharding or distributed storage.

 Sounds to me like you have a more simple issue in that your UID generator
 isn't coded properly.  It should be designed as thread safe so that you
 couldn't get the same UID in the first place.

 -Original Message-
 From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
 Behalf Of Maaz Bin Tariq
 Sent: Wednesday, July 21, 2010 9:39 AM
 To: user@lists.neo4j.org
 Subject: [Neo4j] Neo4j Multiple Nodes Issue

 Hi,

 We are facing kind of a situation in our application using
 neo4j graph and we want to have your advice regarding this issue.

 We use graph in a way that we create a node and with every
 node we set a property i-e UID =value(numeric)  and then we create the
 relationships between those nodes. According to our use case requirement
 there
 needs to be only one node in the whole graph space should exist having a UID

 value. That is UID should become the unique identifier for a node in the
 graph
 space.

 Our graph service is configured using the spring framework
 and all transaction handling is being managed by the spring itself. Now we
 are
 facing the problem where multiple nodes get created having the same UID
 because
 of multiple transactions running the same time and  one transaction effect
 is
 not visible to other until one is committed. What we do is that we look for
 a
 node in the graph with a specific UID 

[Neo4j] TransportDublin Route Planner Github Project

2010-07-21 Thread Paddy
Hi ,
I have a github repositry setup @ http://github.com/paddydub/TransportDublin
I'm working on a site: transportdublin.ie which is a Dublin Public Transport
Route Planner which is built using Neo4j , Google Maps API v3, Spring 3.0
MVC-AJAX, with JQuery for directions panel layout and AJAX and Javascript
parsed JSON to display the polyline and markers.

I have uploaded some screenshots:
Route Planner Screenshot
http://img838.imageshack.us/img838/8676/websitescreenshot.jpg
Neo4j representation of a Bus Route
http://img204.imageshack.us/img204/9110/neoclipsebustimetablesc.png
SQL format used to populate the graph
http://img835.imageshack.us/img835/6426/sqldiagram.png
http://img231.imageshack.us/img231/5421/sqlstops.png
http://img375.imageshack.us/img375/7087/sqlstoptimes.png
http://img62.imageshack.us/img62/6079/sqltimetable.png

 I'd like to  write a bit about the differences in neo4j and sql and why
neo4j it is a perfect solution for route planning systems, do you think a
wiki would be the best option to display the pics? I will be uploading the
code today and tomorrow, just making some last minute changes and writing
some documentation.

Cheers
Paddy
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Neo4j Multiple Nodes Issue

2010-07-21 Thread David Montag
Hi Maaz,

Rick is on the right track with the UID generation. You need to make
more than the ID generation thread safe though. Your first code
snippet is obviously not thread safe. The second one uses double
checked locking, and should be ok. You can also simply synchronize
around the whole first snippet, or try Johan's suggested locking
strategy. I'd recommend you to stay away from Neo4j's node IDs in this
case, due to the reasons Rick stated.

Now, regarding performance, there are a lot of factors here. Will your
code serve requests? Over HTTP? If so, does the locking here really
matter? I.e. is it washed out by the orders of magnitude greater
network I/O times? If you're really concerned about performance, then
you *will* want to do some kind of profiling. Point is, does the
locking here matter in relation to other delays? Knowing where you
should put your time optimizing is key.

As to the performance of neoIndexService.getSingleNode(), I'm afraid I
currently don't know. Maybe some of the other guys can help you out
with this. Regarding your question about batching operations together
in a single transaction versus doing them in different transactions,
you can easily try it by writing a test. But just thinking about it,
each mutating transaction has to hit disk, so it might cost you some
I/O seeking doing different transactions, so I would count on it
taking longer. How much longer, I can't say. And someone please
correct me if I'm wrong here!

David

On Wednesday, July 21, 2010, Maaz Bin Tariq maaz.ta...@yahoo.com wrote:
 Thanks Johan Svensson and Rick Bullotta.
 Yes Bullotta, you are are right the node creation is the problem , our code 
 is something similar to following code.  we donot want to synchronized the 
 method as it cost some performance. Any suggestion to improve it. Also how 
 costly neoIndexService.getSingleNode() method is if we call it twice/thrice 
 and the node was not created.  Will it search the whole graph?
 Svensson, In our case the problem is creating of duplicate reference nodes 
 that is even not handle in the sample code.
 ---
 private IndexService neoIndexService;
 private GraphDatabaseService neoService;


 private Node getOrCreateUserNodeByUserId(final Long id) {
    Node node = neoIndexService.getSingleNode(UID, id);

     if (node == null) {
     node = neoService.createNode();
     node.setProperty(UID, id);
     neoIndexService.index(node, UID, id);
     }

     return node;
 }
 ---
 private Node getOrCreateUserNodeByUserId(final Long id) {

    Node node = neoIndexService.getSingleNode(UID, id);



     if (node == null) {

     node = neoService.createNode();

     node.setProperty(UID, id);

     neoIndexService.index(node, UID, id);

     }



     return node;

 }
 --
 how costly the following solution

     private Node getOrCreateUserNodeByUserId(final Long id) {
         Node node = neoIndexService.getSingleNode(UID, id);

     if (node == null) {
         node = createUserNode(id);
     }

     return node;
     }

  private synchronized Node createUserNode(final Long id){
         Node node = neoIndexService.getSingleNode(UID, id);
         if (node == null) {
             node = neoService.createNode();
     node.setProperty(UID, id);
     neoIndexService.index(node, UID, id);
         }
         return node;
 }


 Thanks
 -Maaz

 --- On Wed, 7/21/10, Johan Svensson jo...@neotechnology.com wrote:

 From: Johan Svensson jo...@neotechnology.com
 Subject: Re: [Neo4j] Neo4j Multiple Nodes Issue
 To: Neo4j user discussions user@lists.neo4j.org
 Date: Wednesday, July 21, 2010, 7:38 PM

 Hi,

 One can use the built in locking in the kernel to synchronize and make
 code thread safe. Here is an example of this:

 https://svn.neo4j.org/examples/apoc-examples/trunk/src/main/java/org/neo4j/examples/socnet/PersonFactory.java

 The createPerson method guards against creation of multiple persons
 with the same name by creating a relationship from the reference node.
 After the relationship has been created (in the transaction but not
 yet committed) the write lock for the reference node has been acquired
 making sure any other running transaction has to wait for the lock to
 be released. Finally the index is checked to make sure some other
 transaction did not create the person while the current transaction
 was waiting for the write lock.

 Even simpler is to just remove a non existing property from a node or
 relationship. That will grab a lock on the specific node or
 relationship (that will be held until the transaction commits or is
 rolledback).

 Regards,
 Johan

 On Wed, Jul 21, 2010 at 4:07 PM, Rick Bullotta
 

Re: [Neo4j] feature request for the GUI

2010-07-21 Thread Keiichiro Ono
Hi.
I'm a core developer of Cytoscape and playing with Neo4j as a backend
for Cytoscape.  Currently, this is my personal project, but we are
interested in Neo4j to provide users building their own network
databases locally from Cytoscape.

In the next version (2.8), Cytoscape can support most of the features
supported by open source graph visualization packages have, such as
custom node graphics layers.  Some example are available here:

http://tumblr.keiono.net/

Also, the future version (3.x series) wil be completely modularized by
OSGi, and backend graph implementation is independent from graph API.
So I'm planning to implement it with Neo4j.

In any case, if you are interested in support for Neo4j in Cytoscape,
please send us feature requests.

Thanks,

Kei
Cytoscape Core Developer
UC, San Diego Department of Medicine


2010/7/20 Wouter De Borger w.debor...@gmail.com:
 Hi,

 I've been using neo4j for some time now and evaluated various GUI solutions.
 (cytoscape, graphviz / xdot, gephi, plantUML)
 My conclusion is that the neo4j eclipse gui is often the best solution for
 complex structured graphs.

 However, I have a few suggestions for improvement. (In order of importance)

 - open and close buttons: add buttons to make eclipse close the database
 - save configuration: the configuration of which edge types to follow should
 be saved, preferably in the database directory, where I can find and adapt
 it
 - reload button: first close,then open; so that if the database directory is
 deleted and replaced, the new database is opened instead of the old one
 - export function: save as image, SVG or dot file


 Does anyone else have suggestions for the gui?


 Wouter

 PS: I would implement the suggestions myself, but I'm not very experienced
 with eclipse development
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




-- 
Keiichiro Ono    http://www.keiono.net/
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] feature request for the GUI

2010-07-21 Thread Anders Nawroth
Hi!

On 07/21/2010 07:10 AM, Arijit Mukherjee wrote:
 I don't know if this is the actual functionality or not - I just
 wanted to find out if there's a way to display the graph like what I
 said - without the links to the subreference node, only the discrete
 clusters...

There's two ways you can reach a node directly:
1. enter the ID of a node in the Neo4j search dialog - the first result 
will be the node with that ID, if it exists
2. use the Neo4j search dialog to search for some property value. note 
that this is implemented in a very simple and slow way.

The search integration really needs some work, for example it lacks 
Lucene support.

/anders


 Cheers
 Arijit

 On 21 July 2010 01:10, Rob Challenrobchal...@point-of-care.co.uk  wrote:
 Sticking with the original thread topic of requirements for neoclipse.
 I find that if I accidentally open a view of a graph with more than
 about 500 nodes to layout then the whole lot takes a very long time to
 come back. Is there a way to either speed it up, or let the user
 interrupt the process if there are a lot of nodes to draw. I usually
 do it by accident by increasing the traversal depth too much or
 enabling the wrong relationshiptype.

 All the best,
 Rob.

 On Tue, Jul 20, 2010 at 1:23 PM, Martin Skurlabuja...@gmail.com  wrote:
 Peter,


 about editing support =  this is true. I firstly focused on core
 abilities like importing and exporting including filtering abilities.
 The fact is that another student is working on Data Laboratory, so the
 place where it will be possible to change data. We are also thinking
 about setting values and this must be solved, but we have to recognize
 how Neo4j behaves, because the actual values are not stored in memory,
 but are delegating at demand so you just cannot set the value
 directly, because it is node/relationship id in fact. There is very
 simple delegating mechanism behind that.

 about performance =  this is the thing which will be solved at the
 end. In fact last week I rewrite the importing and exporting, because
 results does not return unconnected nodes. I test it with graph about
 3000 nodes and 8000 edges and it works quite performant. On the other
 side export after the rewrite is brutal slow, I will have to figure
 out why. Performance optimizations will be done at the end, because
 there will be maybe some features that will cause to rewrite some core
 parts as previous week. If you tried the filtering abilities too, this
 can also cause the performance problem, because previous week it was
 just doing the parsing for every node which is now cachced.

 about surf nodes =  sorry I don't get the point. Surf nodes are all
 nodes except leafs? If you would like to do that, this is currently
 not possible, but can be simply added as option to API and GUI. Same
 with start node, currently there is no way how to express the fact we
 would like to include it or not. I just forget about the option. And
 this will be added as checkbox in gui and in API too.

 In the case of any other questions, advices, requests, just write...

 //Martin Skurla


 2010/7/20 Peter Neubauerpeter.neuba...@neotechnology.com:
 Martin,

 On Tue, Jul 20, 2010 at 1:06 PM, Martin Skurla  I am a GSoC (Google
 Summer of Code) student working on adding support
 for Neo4j in Gephi. I appreciate you to look at Gephi as a very nice
 visualization tool. This week I will also finish the article
 summarizing what have I done and what is needed to do. In fact Gephi
 has much more visualization abilities that Neoclipse. I will also
 write some quiz/questionnaire about some possible features which may
 be implemented but I am not sure if they will be useful for Neo4j
 users. So if you can reply to the article, or fill in the
 quiz/questionnaire it will be very helpful for me.

 Great Martin. I tried out your branch last week - worked partly for a
 small graph. Good work! It seems there is some editing support still
 missing, but I will be happy to test and provide more if you can
 provide more background on how to use Neo4j and Gephi in a good way.


 In fact the project now supports importing Neo4j database and
 exporting, importing with many options how to filter the imput. All
 the traversal work is done in trunk version of Neo4j, so the new
 traversal is used.


 Great. Would be awesome if you could maybe provide a short video
 tutorial on useing Neo4j in Gephi, and post your weekly progress to
 this list?

 Also, hav you tried to open big graphs with Gephi? I recently tried to
 open the Neo4j db generated by the test of
 http://github.com/neo4j/neo4j-spatial (run mvn clean test), but
 things slowed down to a trickle. Not sure if what the limit is for
 Gephi, and how to open/surf nodes with a depth-1 environment in scope
 in Gephi ...

 Cheers,

 /peter
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

 ___
 

Re: [Neo4j] feature request for the GUI

2010-07-21 Thread Anders Nawroth
Hi!

On 07/21/2010 10:33 PM, Keiichiro Ono wrote:
 In the next version (2.8), Cytoscape can support most of the features
 supported by open source graph visualization packages have, such as
 custom node graphics layers.  Some example are available here:

 http://tumblr.keiono.net/

This is really cool! Actually the visualization plugin (Zest) used by 
Neoclipse is the weakest point of it. It's way too limited.

 In any case, if you are interested in support for Neo4j in Cytoscape,
 please send us feature requests.

This could be of some interest:
http://wiki.neo4j.org/content/Google_Summer_of_Code_for_Neo4j_Visualization

Does Cytoscape support multiple relationships/edges between two nodes? 
IIRC Gehpi doesn't do that, which is a problem when visualizing Neo4j 
graphs.


/anders


 Thanks,

 Kei
 Cytoscape Core Developer
 UC, San Diego Department of Medicine


 2010/7/20 Wouter De Borgerw.debor...@gmail.com:
 Hi,

 I've been using neo4j for some time now and evaluated various GUI solutions.
 (cytoscape, graphviz / xdot, gephi, plantUML)
 My conclusion is that the neo4j eclipse gui is often the best solution for
 complex structured graphs.

 However, I have a few suggestions for improvement. (In order of importance)

 - open and close buttons: add buttons to make eclipse close the database
 - save configuration: the configuration of which edge types to follow should
 be saved, preferably in the database directory, where I can find and adapt
 it
 - reload button: first close,then open; so that if the database directory is
 deleted and replaced, the new database is opened instead of the old one
 - export function: save as image, SVG or dot file


 Does anyone else have suggestions for the gui?


 Wouter

 PS: I would implement the suggestions myself, but I'm not very experienced
 with eclipse development
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] TransportDublin Route Planner Github Project

2010-07-21 Thread Anders Nawroth
Hi Paddy!

Some interesting stuff you're working on there!

   I'd like to  write a bit about the differences in neo4j and sql and why
 neo4j it is a perfect solution for route planning systems, do you think a
 wiki would be the best option to display the pics?

I think the Github wiki of the project good be a good place to put the 
article. Images can be added to the source repo (just remember to use 
the raw version of the images as img src) or can be uploaded as 
downloads of the project.

When your writings are in place, it should of course be linked from the 
Neo4j wiki.

WDYT?

/anders

 I will be uploading the
 code today and tomorrow, just making some last minute changes and writing
 some documentation.

 Cheers
 Paddy
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] feature request for the GUI

2010-07-21 Thread Keiichiro Ono
Hi Anders.

 This could be of some interest:
 http://wiki.neo4j.org/content/Google_Summer_of_Code_for_Neo4j_Visualization

We have been participating in Google Summer of Code as a mentoring
organization for past five years and looks this is a great project for
next year.


 Does Cytoscape support multiple relationships/edges between two nodes?
 IIRC Gehpi doesn't do that, which is a problem when visualizing Neo4j
 graphs.


Yes, edges are treated as different relationships if edge attributes
are different.  (see the orange edges below)

http://cytoscape.wodaklab.org/wiki/SampleWebServiceClients?action=AttachFiledo=gettarget=intactImportSample.png

Kei




 /anders


 Thanks,

 Kei
 Cytoscape Core Developer
 UC, San Diego Department of Medicine


 2010/7/20 Wouter De Borgerw.debor...@gmail.com:
 Hi,

 I've been using neo4j for some time now and evaluated various GUI solutions.
 (cytoscape, graphviz / xdot, gephi, plantUML)
 My conclusion is that the neo4j eclipse gui is often the best solution for
 complex structured graphs.

 However, I have a few suggestions for improvement. (In order of importance)

 - open and close buttons: add buttons to make eclipse close the database
 - save configuration: the configuration of which edge types to follow should
 be saved, preferably in the database directory, where I can find and adapt
 it
 - reload button: first close,then open; so that if the database directory is
 deleted and replaced, the new database is opened instead of the old one
 - export function: save as image, SVG or dot file


 Does anyone else have suggestions for the gui?


 Wouter

 PS: I would implement the suggestions myself, but I'm not very experienced
 with eclipse development
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




-- 
Keiichiro Ono    http://www.keiono.net/
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] how to self define node?

2010-07-21 Thread Hunt
How can I self define a new node? eg. define a new node with my own id, can
the node's ID be a string?Have anyone successful deploy neo4j with thrift?
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] how to self define node?

2010-07-21 Thread conandor

fyi, i using neo4j REST standalone server
-- 
View this message in context: 
http://neo4j-user-list.438527.n3.nabble.com/Re-Neo4j-how-to-self-define-node-tp986140p986170.html
Sent from the Neo4J User List mailing list archive at Nabble.com.
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user