Re: [Neo4j] large graph visualizations/analytics

2012-04-11 Thread Rick Otten
I suppose suggesting a YarcData system is out of the question too -- 
http://www.yarcdata.com .

--

Actually though -

I think what you need to do is aggregate some of your nodes and edges, or you 
need to figure out (much) subgraphs and only look at them at one time.  It is 
hard for the brain to take in a huge amount of data - even visually - without 
some sort of aggregation.

If you can't figure out a subgraph or way to do aggregation, they you probably 
want to take a sample of the data.  Select nodes at random.

My 24 screen is configured with a resolution of 1920 x 1080.  That gives me 
about 2M pixels.   If I wanted to display 2.3M Nodes, with colors and 
information about those nodes, and edges between them, I'd need a much, much 
larger screen.  ... Even if I had the memory and processing power.

With Gephi, a 4G JVM, and my 24 screen, I find even 20,000 nodes a bit much to 
process and visualize at once.

If you want to take an approach using a browser (such as D3), you should load 
only portions of the data at once.  Anything more than a few (single digit) 
thousand data points at one time in a browser will drag it down pretty quickly. 
  There are some examples out there of some techniques people have used.  This 
one uses Neo4j as a back end -- http://getvouched.com/visualizations .   For 
advanced D3 examples, check out Mike Bostock's D3 wiki rather than just on the 
main page or in the zip file -- https://github.com/mbostock/d3/wiki .


Here are a couple of links with other ideas for visualizing large graph data 
sets:
   http://www.visualcomplexity.com/vc/
   http://www.mkbergman.com/414/large-scale-rdf-graph-visualization-tools/




-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Peter Neubauer
Sent: Wednesday, April 11, 2012 5:25 AM
To: Neo4j user discussions
Subject: Re: [Neo4j] large graph visualizations/analytics

Ajinkya,
just talked to one of the Gephi guys,

2.3M nodes and 60M edges...you should buy another computer with at least 60GB 
of RAM for Gephi.

Cheers,

/peter neubauer

G:  neubauer.peter
S:  peter.neubauer
P:  +46 704 106975
L:   http://www.linkedin.com/in/neubauer
T:   @peterneubauer

Neo4j                                - Graphs rule.
Program or be programmed - Computer Literacy for kids.
http://foocafe.org/#CoderDojo



On Wed, Apr 11, 2012 at 10:17 AM, Ajinkya Kale kaleajin...@gmail.com wrote:
 Hi, I am trying to load neo4j db in Gephi on a 64-bit windows system 
 with 6GB RAM running a 64-bit jvm but it runs out of memory .. i tried 
 to allocate more memory through the jvm parameters and ended up 
 allocating the maximum possible without any luck.
 My graphdb is of the following dimensions :

 nodes 2320895
 type1 relationship edge 50655143
 type2 relationship edge 10632833

 Any suggestions on tools/techniques to visualize and run analytics on 
 graphdbs of this scale ?

 --

 Regards,
 Ajinkya
 http://ajinkya.info

 .O.
 ..O
 OOO
 ___
 NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please 
 register and consider posting at 
 https://groups.google.com/forum/#!forum/neo4j

 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

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


Re: [Neo4j] Suggestions on how to order relationships?

2012-01-19 Thread Rick Otten
Another approach, probably not better, would be to only have a relationship 
from the user to the first movie in the list.

Between the movies have relationships  with the user as a property, so you 
could traverse from first to last (which would have no outgoing relationships 
for that user).

You'd have to drop and add relationships to change the ordering (instead of 
changing properties on a set of relationships).



-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Aseem Kishore
Sent: Thursday, January 19, 2012 1:24 PM
To: Neo4j user discussions
Subject: [Neo4j] Suggestions on how to order relationships?

Hi there,

Take a Facebook-like example, where users can like different 
movies/music/celebs/etc. Suppose we want to let users drag-and-drop these 
movies/etc. on their profile pages, to let them e.g. show their favorite movies 
first.

How would you guys recommend achieving that in Neo4j? If possible, I'd like to 
avoid creating a node for every relationship (redundancy/overhead as we do this 
more and more).

I can't think of anything better than putting properties on the relationship. 
Maybe index numbers (e.g. rel D might have index: 0, rel B might have index: 
1, etc.), but that's essentially reordering an array, which sucks. The other 
option that thus came to mind was to mimic a linked
list: have an after property that contains the ID of the relationship this 
one comes after (and/or maybe a before property instead or in addition).

Just wondering if there are better ideas! Thanks. =)

Aseem
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

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


Re: [Neo4j] Suggestions on how to order relationships?

2012-01-19 Thread Rick Otten
On the other hand, it avoids a sort when you are working with the list of 
movies a particular user likes.  (You are pre-building the linked list.)

Like I said, probably not better, just different.  I guess it partly depends on 
how you are using the data and whether a sort is faster than a traversal.  It 
is an approach that would not really help with recommendations or finding 
similar folks.

--

In the split-the-difference approach, you would still occasionally have to 
re-write the properties on all of the like relationships, but only when you 
hit the limit for your ability to find a between value.  It is a good approach

-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Aseem Kishore
Sent: Thursday, January 19, 2012 2:42 PM
To: Neo4j user discussions
Subject: Re: [Neo4j] Suggestions on how to order relationships?

Can't say I'm a fan of this approach. You lose the ability to quickly determine 
if the user likes a particular movie, and storing the user (presumably their 
ID) as a property on the relationship feels like it defeats the point of a 
graph db, know what I mean?

On Thu, Jan 19, 2012 at 1:29 PM, Rick Otten rot...@manta.com wrote:

 Another approach, probably not better, would be to only have a 
 relationship from the user to the first movie in the list.

 Between the movies have relationships  with the user as a property, so 
 you could traverse from first to last (which would have no outgoing 
 relationships for that user).

 You'd have to drop and add relationships to change the ordering 
 (instead of changing properties on a set of relationships).



 -Original Message-
 From: user-boun...@lists.neo4j.org 
 [mailto:user-boun...@lists.neo4j.org]
 On Behalf Of Aseem Kishore
 Sent: Thursday, January 19, 2012 1:24 PM
 To: Neo4j user discussions
 Subject: [Neo4j] Suggestions on how to order relationships?

 Hi there,

 Take a Facebook-like example, where users can like different 
 movies/music/celebs/etc. Suppose we want to let users drag-and-drop 
 these movies/etc. on their profile pages, to let them e.g. show their 
 favorite movies first.

 How would you guys recommend achieving that in Neo4j? If possible, I'd 
 like to avoid creating a node for every relationship 
 (redundancy/overhead as we do this more and more).

 I can't think of anything better than putting properties on the 
 relationship. Maybe index numbers (e.g. rel D might have index: 0, 
 rel B might have index: 1, etc.), but that's essentially reordering 
 an array, which sucks. The other option that thus came to mind was to 
 mimic a linked
 list: have an after property that contains the ID of the 
 relationship this one comes after (and/or maybe a before property 
 instead or in addition).

 Just wondering if there are better ideas! Thanks. =)

 Aseem
 ___
 NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please 
 register and consider posting at 
 https://groups.google.com/forum/#!forum/neo4j

 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user
 ___
 NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please 
 register and consider posting at 
 https://groups.google.com/forum/#!forum/neo4j

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

___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user
___
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

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


Re: [Neo4j] Modeling subrelationships in Neo4j

2011-12-06 Thread Rick Otten
Can you do this with properties on the relationship?

In your example a KNOWS relationship could have a how well property, with 
values 1 to 100.

You could define KNOWS_BETTER as  [ 50  how well  80 ].
KNOWS_BEST as [ 80 = how well = 100 ].

I'm not sure what the difference between a sub relationship and a 
relationship qualified with properties really is.


-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Sourajit Basak
Sent: Tuesday, December 06, 2011 6:09 AM
To: user@lists.neo4j.org
Subject: [Neo4j] Modeling subrelationships in Neo4j

Is it possible to create subrelationships in neo4j ? For e.g. a relationship 
called KNOWS_BETTER as a subrelationship of KNOWS.

Do I need to explicitly connect the nodes using both relationships for the 
traversal to work ? Lets say, I create this

neo4j -- KNOWS_BETTER -- graphDB, does this entails the following ?
neo4j -- KNOWS -- graphDB.

Such a scenario can be modeled in OWL Ontology, wondering if neo4j has any 
capabilities.

Note: Under the hood, most OWL Ontology implementations do create these
*extra* inferred links internally.
___
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] Suggestions on materials for learning graph theory

2011-11-09 Thread Rick Otten
Also there are several pop-science books on these ideas such as:   'Six Degrees 
- The Science Of A Connected Age', by Duncan Watts.

There is a lightweight graph theory book 'Puzzle and Graphs' by John Fujii, 
that isn't very rigorous from a mathematical perspective, and may not have much 
in the way of programming tools, but is a fun look at the field.

Most of math focused books are going to be pretty dense though.  It is a 175 
year old branch of mathematics and is traditionally only taught after you've 
exhausted most of the calculus track as a math student (although  it need not 
be).  Perhaps there is a market for an 'introductory graph theory book for the 
social network programmer', maybe with a title 'Practical Applied Graph Theory' 
or something like that.  I haven't seen one yet.  (I'd add a copy to my 
personal library.)



-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of maxdemarzi
Sent: Tuesday, November 08, 2011 6:48 PM
To: user@lists.neo4j.org
Subject: Re: [Neo4j] Suggestions on materials for learning graph theory

Marko's blog has some good articles.

http://markorodriguez.com/writings/

The Graph Traversal Pattern = http://arxiv.org/pdf/1004.1001v1 Constructions 
from Dots and Lines = http://arxiv.org/pdf/1006.2361v1


--
View this message in context: 
http://neo4j-community-discussions.438527.n3.nabble.com/Suggestions-on-materials-for-learning-graph-theory-tp3490877p3492120.html
Sent from the Neo4j Community Discussions mailing list archive at Nabble.com.
___
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] Article: The Coming SQL Collapse

2011-10-14 Thread Rick Otten
What is the law of separation of concerns and logical vs. physical models, 
and why is it a law?


-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Tobias Ivarsson
Sent: Friday, October 14, 2011 8:49 AM
To: Neo user discussions
Subject: [Neo4j] Article: The Coming SQL Collapse

We had an interesting discussion about this internally at Neo Technology today. 
We thought it might be of interest to the broader community. I don't think the 
discussion is over, so it would be interesting to continue it on the public 
mailing list.

It regards the initial paragraphs of an article posted to dzone recently:
http://www.dzone.com/links/rss/the_coming_sql_collapse.html
It mentions Neo4j and how the author dislikes a common way of using Neo4j for 
building applications.

It would be interesting to hear suggestions on how to improve this.

Forwarded conversation follows:

On Fri, Oct 14, 2011 at 10:13 AM, Tobias Ivarsson  
tobias.ivars...@neotechnology.com wrote:

 I found this while reading feeds in bed last night:

 *The Coming SQL Collapse*
 http://www.dzone.com/links/rss/the_coming_sql_collapse.html

 (Sent from Flipboard http://flipboard.com)


 The things he say about SQL vs NOSQL is not very interesting, but I'd 
 like to raise what he says about Neo4j:

  I looked at neo4j briefly the other day, and quite predictably 
 thought
 'wow, this looks like a serious tinkertoy: it's basically a bunch of 
 nodes where you just blob your attributes.' Worse than that, to wrap 
 objects around it, you have to have them explicitly incorporate their 
 node class, which is ugly, smelly, violates every law of separation 
 of concerns and logical vs. physical models. On the plus side, as I 
 started to look at it more, I realized that it was the perfect way to 
 implement a backend for a bayesian inference engine (more on that 
 later). Why? Because inference doesn't care particularly about all 
 the droll requirements that are settled for you by SQL, and there are no 
 real set operations to speak of.


 He attacks our pattern of building domain models with Neo4j, calling 
 it ugly, smelly and in violation of every law of separation of 
 concerns and logical vs. physical models. Is he right? My feeling is 
 that he is brain washed with too many so called best practices, but 
 Neo4j has been my main model for a long time now, my perspective is 
 likely skewed. I'd like to hear your thoughts.

 --
 Tobias Ivarsson tobias.ivars...@neotechnology.com


On Fri, Oct 14, 2011 at 10:32 AM, Rickard Öberg  
rickard.ob...@neotechnology.com wrote:


 Well, I'd tend to agree with the author. Mixing persistence details 
 with the domain model itself is really a bad idea. Infrastructure 
 details should not pollute the domain logic as it does with the 
 currently suggested usage of Neo4j. But I think both Spring Data 
 Graph and the Qi4j usage model fixes this, as it allows you to keep 
 many of those things outside of the domain code.

 /Rickard


On Fri, Oct 14, 2011 at 11:45 AM, Tobias Ivarsson tobias.ivarsson@ 
neotechnology.com wrote:

 On Fri, Oct 14, 2011 at 11:21 AM, Rickard Öberg  
 rickard.ob...@neotechnology.com wrote:

 On 10/14/11 17:16 , Tobias Ivarsson wrote:

 I was hoping for a bit more elaboration, of why it is a bad idea.

 Spring Data Neo4j operates mainly in the same way (at least it did 
 when I was part of the design process), it just hides the details of it.

 The model we suggest is not to mix infrastructure details (nodes, 
 relationships, traversals) with the domain logic. We suggest the 
 domain logic be a separate layer, acting on domain data objects 
 (defined as a set of interfaces). What we do suggest though is for 
 those domain data objects to be implemented as wrappers of nodes and 
 relationships.


 That sounds like transaction script+anemic domain model, which is 
 an anti-pattern as well.


 I'm guessing the anemic domain model is what you are pointing out as 
 the anti-pattern. I can see how transaction scripts are and ADM 
 usually come together though.

 References:

 http://martinfowler.com/eaaCatalog/transactionScript.html
 http://martinfowler.com/bliki/AnemicDomainModel.html



 Domain logic should be in the domain objects, and so splitting them 
 into several layers confuse things more than it helps.


 I agree with you, SDN solves this, and does so well.


 So is the bad part of it just the part of having the implementation 
 of
 your domain data objects deal with the Neo4j API, instead of having 
 DTOs and DAOs that you load from the database, operate on in memory, 
 then store back to the db at explicit points? Or are there deeper 
 issues than that?


 It relates to testability (you should be able to test domain objects 
 without infrastructure), code cohesion (put domain logic in domain 
 objects), and as the article author points out, separation of concerns in 
 general.


 The testability aspect is interesting and important. I 

Re: [Neo4j] Importing data from oracle to neo4j

2011-10-12 Thread Rick Otten
Another approach might be to adapt SymmetricDS -- 
http://symmetricds.codehaus.org/ -- to feed data from your Oracle (or other 
JDBC accessible Relational database) into Neo4j - live, as the data changes.

I've been wanting a SymmetricDS interface to Neo4j for a while.  Let me know if 
you get one working!


-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Peter Neubauer
Sent: Tuesday, October 11, 2011 6:47 AM
To: Neo4j user discussions
Subject: Re: [Neo4j] Importing data from oracle to neo4j

Hi there,
yes, the utility is converting m:n into relationships, see 
https://github.com/peterneubauer/sql-import and 
https://github.com/peterneubauer/sql-import/blob/master/src/test/java/com/neo4j/sqlimport/InsertTest.java
fro an eample.

Let me know if that helps!

Cheers,

/peter neubauer

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org               - Your high performance graph database.
http://startupbootcamp.org/    - Öresund - Innovation happens HERE.
http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.



On Sat, Oct 8, 2011 at 11:14 PM, Michael Hunger 
michael.hun...@neotechnology.com wrote:
 What is your use-case for importing the DWH data?

 How are you going to model the data of the DWH in neo4j. How does the 
 domain-model look like?

 BI data is normally denormalized. So for creating a good graph structure it 
 would be sensible to normalize it during the import.

 10k rows is not that much. You can import them using the normal neo4j 
 transactional facilities in a few seconds.
 For building up your graph model you probably want to index your data or 
 create category nodes to access certain parts of your domain model.

 Peter wrote a tool to import relational data into neo4j but that was 
 normalized data where each table was represented by a certain type of node in 
 the graph and foreign key relationships were converted to graph 
 relationships. I don't know if that also handled m:n connection tables 
 efficiently by converting them to relationships too.

 HTH

 Michael

 Am 08.10.2011 um 23:05 schrieb jiteshks:

 I am very new to neo4j.So I don't know all of its features.I am 
 reading its documentation to understand how it works.

 My project's requirement is to import the data from a data warehouse( 
 which is an oracle db) once every month.We are thinking of 
 implementing neo4j in our project which means we will have to read 
 the data from oracle db and put it into neo4j.
 There will be around 1 lakh rows(10^5) to be fetched from oracle 
 db.What is the fast/efficient way of doing it?

 Thanks!

 --
 View this message in context: 
 http://neo4j-community-discussions.438527.n3.nabble.com/Importing-dat
 a-from-oracle-to-neo4j-tp3406024p3406024.html
 Sent from the Neo4j Community Discussions mailing list archive at Nabble.com.
 ___
 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 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] most in common

2011-06-23 Thread Rick Otten
I have a graph of a bunch of people who are not connected to each other,
but instead connected to things they like.  I'd like to start with one
person, and find a list of people have the 'most in common' with them.

Ideally I'd like to be able to prioritize the things they like, for
example, it is more important to find people who like live in the same
town, than people who liked the same movie.

One approach is to traverse each 'like', one at a time, in order of
importance, and then do a bunch of Set intersections on the results, and
then return the list of people in reverse order.

Is there a way to do this without having to run a whole bunch of queries?



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Open Data Manual - contributions welcome

2011-06-03 Thread Rick Otten
Hi Tim,

  I have zero time to either write much, or even explore new ideas these
days, but I think an area that would be very interesting to map into a
graph model is campaign finance.

  Showing the relationship of donors to politicians and their committees
and the fiscal relationships between politicians could provide great
insights into some of the why things happen the way they do.

   You could also geocode the donors and politicians (their addresses are
in the reports), and you could show employers on the graph (employers
are listed in the US forms as well).

  If someone has the time and is looking for a good application of how to
use Open Data with a graph model, that is a project I would vote for. 
I've been wanting to do it ever since the last election, but can't seem
to find the time to sit down, download the reports, and feed them into a
model or visualization tool.


 Hi all,

 Sorry if this is off topic. I am the editor of the Open Data Manual[0].
 It's
 an ever improving manual on how to go about open data. At the moment, it's
 mostly focused on government data, but that is changing.

 A great enhancement would be some information on graphs. In particular, an
 outline of moving data housed in relational tables into a graph would be
 excellent. The manual has a large readership and it could be a great way
 to
 become a published author.*  If you would like to assist, please email me
 off the list.

 Tim McNamara
 Professional \\  paperlessprojects.com
 Personal \\  @timClicks http://twitter.com/timClicks  |
 timmcnamara.co.nz

 [0] http://opendatamanual.org

 * We're investigating options for creating printed material, but that
 hasn't
 happened yet.
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Open Data Manual - contributions welcome

2011-06-03 Thread Rick Otten
Campaign finance data for federal offices is available from the Federal
Election Commission. http://www.fec.gov

State campaign finance data is usually available from the office of the
Secretary of State for each state.  Here is Ohio's: 
http://www.sos.state.oh.us/SOS/Campaign%20Finance/Database.aspx

(You can search for me in there.  I ran for State Rep in 2004.)



Often the data is posted online within hours or days after each of the
filing deadlines.  Journalists, activists, campaign opponents, political
scientists, professional fundraisers, and more will mine it to learn about
who is paying for what and where they are spending their money.

My original idea was to just pull the information for my congressman and
build a simple geo graph to visualize how much out of state funding he was
getting, but I quickly realized the data is highly interconnected
(candidates give money to each other, and to PAC's, and the PAC's then
distribute money back to candidates and it gets really confusing), some
people give to more than one candidate, other's give to both parties, and
others can be identified as all working for the same organization.

[Some of those games are played to hide the true origin of the money from
the casual political investigator.]

The data used to be available in CSV format, it probably still is (I
haven't tried to download it in a while)...


 Hey Rick,

 Do you know the whereabouts of any of this data?

 On Fri, Jun 3, 2011 at 5:51 AM, Rick Otten rot...@windfish.net wrote:

 Hi Tim,

  I have zero time to either write much, or even explore new ideas these
 days, but I think an area that would be very interesting to map into a
 graph model is campaign finance.

  Showing the relationship of donors to politicians and their committees
 and the fiscal relationships between politicians could provide great
 insights into some of the why things happen the way they do.

   You could also geocode the donors and politicians (their addresses are
 in the reports), and you could show employers on the graph (employers
 are listed in the US forms as well).

  If someone has the time and is looking for a good application of how to
 use Open Data with a graph model, that is a project I would vote for.
 I've been wanting to do it ever since the last election, but can't seem
 to find the time to sit down, download the reports, and feed them into a
 model or visualization tool.


  Hi all,
 
  Sorry if this is off topic. I am the editor of the Open Data
 Manual[0].
  It's
  an ever improving manual on how to go about open data. At the moment,
 it's
  mostly focused on government data, but that is changing.
 
  A great enhancement would be some information on graphs. In
 particular,
 an
  outline of moving data housed in relational tables into a graph would
 be
  excellent. The manual has a large readership and it could be a great
 way
  to
  become a published author.*  If you would like to assist, please email
 me
  off the list.
 
  Tim McNamara
  Professional \\  paperlessprojects.com
  Personal \\  @timClicks http://twitter.com/timClicks  |
  timmcnamara.co.nz
 
  [0] http://opendatamanual.org
 
  * We're investigating options for creating printed material, but that
  hasn't
  happened yet.
  ___
  Neo4j mailing list
  User@lists.neo4j.org
  https://lists.neo4j.org/mailman/listinfo/user
 


 --
 Rick Otten
 rot...@windfish.net
 O=='=+


 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Self-referencing relationships

2011-04-26 Thread Rick Otten
Where I've wanted self referencing nodes is when mapping a sequence of
user actions:

user clicks button A - [then clicks] - button B - [then clicks] -
button B (again) - [then clicks] - button C - [then ...

Run this over a few 10's of thousands of users (incrementing counts), and
a few dozen buttons, and you can start to find things like:

This sequence of button presses is the most common path for users through
our prouduct.

If a user is on button B, it is pretty likely they'll click it again.

The group of users who are based in California tend to click buttons on
the left side of the screen, while the ones in Massachusetts tend to click
buttons on the right side of the screen.

There may have been other ways to do this modeling, but the way I
implemented it really needed self referencing relationships to count all
the [then clicks] relationships, not just the ones that move to new
buttons.



 Hi Shaunak,

 As you've noticed, self-referencing nodes have been considered before, and
 I remember being perplexed by the lack when I first became a Neo4j user.
 Changing the support is simple enough, but there was obviously a conscious
 design decision. Why?

 Anecdotally (and wiser, longer memoried minds should correct me),
 self-referencing nodes lead to more trouble than they're worth. So they're
 considered an error because there is more value in being alerted that you
 just related a node to itself, then there is value in the few cases where
 you absolutely must have them. Being a database, the decision has been to
 err on the side of avoiding problems, even at the cost of some
 convenience.

 An approach that could allow for intentional self-referencing, while still
 protecting against accidental self-references, would be implement an
 explicit Node.relateToSelfAs(RelationshipType type).

 What does you model look like, that you expect to require
 self-referencing?

 Best,
 Andreas

 On Apr 26, 2011, at 11:15 AM, Shaunak Kashyap wrote:

 I know this topic has been discussed before[1] and that a trac issue was
 also created[2]. I see that a patch was submitted as part of the issue
 but from browsing the source code[3] it appears that self-referencing
 relationships are still a no-go in Neo4J.

 Are there any plans to apply the patch submitted by tobias OR, in
 general, to provide for self-referencing relationships in Neo4J?

 We are evaluating Neo4J against OrientDB for an internal tool at Yahoo.
 While Neo4J looks like a far more mature product overall, the lack of
 self-referencing relationships might become a sticking point (yes, I
 understand they can be worked around with a middle node but that
 requires the application to handle special cases which we would like to
 avoid).

 References:
 [1] http://www.mail-archive.com/user@lists.neo4j.org/msg03996.html
 [2] https://trac.neo4j.org/ticket/239
 [3]
 https://github.com/neo4j/community/blob/master/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipImpl.java#L45

 Thank you,

 shaunak
 kashyap
 technical yahoo

 shau...@yahoo-inc.com
 direct 408-349-4024mobile 408-203-2450

 701 first avenue, sunnyvale, ca, 94089-0703, us
 phone (408) 349 3300fax (408) 349 3301

 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Self-referencing relationships

2011-04-26 Thread Rick Otten
In my case I wasn't looking to retrace a specific user's path, but rather
trying to identify popular paths.  It was 'quick and easy' to do with a
graph model (except for some confusion about counting self referencing
relationships).

I was, in fact, adding user nodes so I could see the types of things
certain groups of users did (within my data sample), but that was simply
leveraging the graph to answer two classes of questions at the same time,
rather than directly relevant to the popular path problem.

I think I also created event 1, event 2, nodes and linked them to the
button nodes.  These didn't really tell me if someone was likely to jump
from button B to button E (since they could get to button B at any event
number) but they did tell me whether certain buttons were more likely to
be selected early in the user experience or later.

There were lots of graph based explorations possible in that quick study. 
I barely cracked the surface in the time I had to work on it...



 I've wanted to do similar tracking of paths within a graph, but am not
 clear about your approach. Were you creating new relationships between
 each node directly to represent an event? I suppose you'd have to add the
 user id and a sequence number into each relationship to keep the tracking
 distinct and preserver order. Which would work, except for repeats to the
 same node. Instead of sequence numbers in the relationships, you could
 just use a sequence of events.

 I tend to try to keep distinct concepts within the graph separate. Like
 possible paths (a graph of possibilities) vs actual paths (which are trees
 because they are a sequence of events). With buttons, I would first create
 the graph of buttons with possible paths:

 A - B - C - {wherever}

 Then track each user traversal by referencing those nodes in sequence:

 User1 -- event1
 event1 -clicked- A
 event1 -next- event2
 event2 -clicked- B
 event2 -next- event 3
 event3 -clicked- B
 event3 -next- event4
 event4 -clicked- C
 etc...

 Subsequent users would either increment counts along that path or create
 new branches when they diverge.

 Cheers,
 Andreas

 On Apr 26, 2011, at 12:57 PM, Rick Otten wrote:

 Where I've wanted self referencing nodes is when mapping a sequence of
 user actions:

 user clicks button A - [then clicks] - button B - [then clicks] -
 button B (again) - [then clicks] - button C - [then ...

 Run this over a few 10's of thousands of users (incrementing counts),
 and
 a few dozen buttons, and you can start to find things like:

 This sequence of button presses is the most common path for users
 through
 our prouduct.

 If a user is on button B, it is pretty likely they'll click it again.

 The group of users who are based in California tend to click buttons on
 the left side of the screen, while the ones in Massachusetts tend to
 click
 buttons on the right side of the screen.

 There may have been other ways to do this modeling, but the way I
 implemented it really needed self referencing relationships to count all
 the [then clicks] relationships, not just the ones that move to new
 buttons.



 Hi Shaunak,

 As you've noticed, self-referencing nodes have been considered before,
 and
 I remember being perplexed by the lack when I first became a Neo4j
 user.
 Changing the support is simple enough, but there was obviously a
 conscious
 design decision. Why?

 Anecdotally (and wiser, longer memoried minds should correct me),
 self-referencing nodes lead to more trouble than they're worth. So
 they're
 considered an error because there is more value in being alerted that
 you
 just related a node to itself, then there is value in the few cases
 where
 you absolutely must have them. Being a database, the decision has been
 to
 err on the side of avoiding problems, even at the cost of some
 convenience.

 An approach that could allow for intentional self-referencing, while
 still
 protecting against accidental self-references, would be implement an
 explicit Node.relateToSelfAs(RelationshipType type).

 What does you model look like, that you expect to require
 self-referencing?

 Best,
 Andreas

 On Apr 26, 2011, at 11:15 AM, Shaunak Kashyap wrote:

 I know this topic has been discussed before[1] and that a trac issue
 was
 also created[2]. I see that a patch was submitted as part of the issue
 but from browsing the source code[3] it appears that self-referencing
 relationships are still a no-go in Neo4J.

 Are there any plans to apply the patch submitted by tobias OR, in
 general, to provide for self-referencing relationships in Neo4J?

 We are evaluating Neo4J against OrientDB for an internal tool at
 Yahoo.
 While Neo4J looks like a far more mature product overall, the lack of
 self-referencing relationships might become a sticking point (yes, I
 understand they can be worked around with a middle node but that
 requires the application to handle special cases which we would like
 to
 avoid).

 References:
 [1] http://www.mail-archive.com/user

Re: [Neo4j] REST results pagination

2011-04-22 Thread Rick Otten
 Client side sorting makes sense if you know the domain well enough to
 know, for example, you will receive a small enough result set to 'fit'
 in the client, and want to give the user multiple interactive sort
 options without hitting the database again. But I agree that in general
it makes sense to get the database to do the sort.


I'll concede this point.  In general it should be better to do the sorts
on the database server, which is typically by design a hefty backend
system that is optimized for that sort of processing.

In my experience with regular SQL databases, unfortunately they typically
only scale vertically, and are usually running on expensive
enterprise-grade hardware.  Most of the ones I've worked either run on
minimally sized hardware or have quickly outgrown their hardware.

So they are always either:
  1) Currently suffering from a capacity problem.
  2) Just recovering from a capacity problem.
  3) Heading rapidly towards a new capacity problem.

The next problem I run into is a political, rather than technical one. 
The database administration team is often a different group of people from
the appserver/front end development team.   The guys writing the queries
are usually closer to the appserver than the database.  In other words, it
is easier for them to manage a problem in the appserver, than it is to
manage a problem in the database.

So, instead of having a deep well of data processing power to draw on, and
then using a wide layer of thin commodity hardware presentation layer
servers, we end up transferring data processing power out of the data
server and into the presentation layer.

As we evolve into building data processing systems which can scale
horizontally on commodity hardware, the perpetual capacity problems the
legacy vertical databases suffer from may wane, finally freeing the other
layers from having to pick up some of the slack.


-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] REST results pagination

2011-04-21 Thread Rick Otten
Half-baked thoughts from a neo4j newbie hacker type on this topic:

1)  I think it is very important, even with modern infrastructures, for
the client to be able to optionally throttle the result set it generates
with a query as it sees fit, and not just because of client memory and
bandwidth limitations.

With regular old SQL databases if you send a careless large query, you
can chew up significant system resources, for significant amounts of
time while it is being processed.  At a minimum, a rowcount/pagination
option allows you to build something into your client which can
minimize accidental denial of service queries.   I'm not sure if it is
possible to construct a query against a large Neo4j database that
would temporarily cripple it, but it wouldn't surprise me if you
could.


2) Sometimes with regular old SQL databases I'll run a sanity check
count() function with the query to just return the size of the expected
result set before I try to pull it back into my data structure.  Many
times count() is all I needed anyhow.   Does Neo4j have a result set
size function?  Perhaps a client that really could only handle small
result sets could run a count(), and then filter the search somehow, if
necessary, until the count() was smaller?  (I guess it would depend on the
problem domain...)

   In other words it may be possible, when it is really important, to
implement pagination logic on the client side, if you don't mind
running multiple queries for each set of data you get back.


3)  If the result set was broken into pages, you could organize the pages
in the server with a set of [temporary] graph nodes with relationships to
the results in the database -- one node for each page, and a parent node
for the result set.   If order of the pages is important, you could add
directed relationships between the page nodes.  If the order within the
pages is important you could either apply a sequence numbering to the
page-result relationship, or add directed temporary result set directed
relationships too.

Subsequent page retrievals would be new traversals based on the search
result set graph.  In a sense you would be building a temporary
graph-index I suppose.

And advantage to organizing search result sets this way is that you
could then union and intersect result sets (and do other set
operations) without a huge memory overhead.  (Which means you could
probably store millions of search results at one time, and you could
persist them through restarts.)



4) In some HA architectures you may have multiple database copies behind a
load balancer.  Would the search result pages be stored equally on all of
them?  Would the client require a sticky flag, to always go back to the
same specific server instance for more pages?

   Depending on how fast writes get propagated across the cluster
(compared to requests for the next page), if you were creating nodes as
described in (3) would that work?



5) As for sorting:

   In my experience, if I need a result set sorted from a regular SQL
database, I will usually sort it myself.  Most databases I've ever
worked with routinely have performance problems.  You can minimize
finger pointing and the risk of complicating those other performance
problems by just directing the database to get me what I need, I'll do
the rest of it back in the client.

   On the other hand, sometimes it is quicker and easier to let the
database do the work. (Usually when I can only handle the data in small
chunks on the client.)

   What I'm trying to say, is that I think sorting is going to be more
important to clients who want paginated results (ie, using resource
limited clients), than to clients who are grabbing large chunks of data
at a time (and will want to own any post-query processing steps
anyhow).


-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Graph visualization in the web admin tool

2011-04-04 Thread Rick Otten
Another javascript based tool, which is very new, is D3 (Data Driven
Documents).


D3 is built by the same guys who came up with Protovis a couple of years
ago.  [ http://vis.stanford.edu/protovis/ ]   Protovis was much more
limited in terms of flexible data inputs and scalability to large data
sets.

The only caveat, is that D3, like Protovis, generates SVG's.  This means
that you may have to jump through some tricky hoops to get it to work in
legacy Internet Explorer browsers. (IE9 is ok.)

Here is their forced layout:
http://mbostock.github.com/d3/ex/force.html

Since it is hot off the presses, the D3 documentation and example sets are
still evolving daily.  I think it is worth watching.  I've been
experimenting with D3 for a few weeks now and am really liking it.


 Thanks for the update. For my part, I think I'll give a try to Javascript
 Infovis Toolkit (http://thejit.org). I think you should take a look at it.
 The API seems very complete and the project is well documented (and
 activ).
 The objects are very customizable, edge should be oriented or not, you can
 add events on nodes or edges, change styles... and I like the RGrpah
 visualization ^^ (but ForceDirected is maybe more what you need).

 Kind regards

 2011/3/30 Jacob Hansson jacob.hans...@neotechnology.com

 We opted to change from graphdracula to arbor.js though (today,
 actually),
 because the dracula lib was buggy. My initial reaction to arbor.js is
 very
 positive, although it wasn't quite as straight-forward as dracula to
 use.

 I'd recommend downloading arbor.js and tweaking their example apps to
 get a
 feel for how the lib works. It's been fairly unpainful to work this into
 the
 webadmin app, together with neo4js you can rather quickly get up to
 speed
 visualizing data from a neo4j server on the web :)

 /Jacob


 On Mon, Mar 28, 2011 at 3:50 PM, Clement Honore
 honor...@gmail.comwrote:

 Thanks for your answer Peter.

 I will take a look at dracula.
 I've already check this link
 http://wiki.neo4j.org/content/Visualization_options_for_graphs# (this
 is
 the
 on this page on my first post but I forget the link... ^^) and there
 is
 so
 many solutions that I don't know which to choose...

 2011/3/28 Peter Neubauer peter.neuba...@neotechnology.com

  Clement,
  the current iteration is building on http://www.graphdracula.net/
  which is built on top of RaphaelJS I think. There are many others,
  look at
 http://wiki.neo4j.org/content/Visualization_options_for_graphs#
  and pick your choice.
 
  Let us know your experiences and feel free to contribute to the
 webadmin!
 
  Cheers,
 
  /peter neubauer
 
  GTalk:  neubauer.peter
  Skype   peter.neubauer
  Phone   +46 704 106975
  LinkedIn   http://www.linkedin.com/in/neubauer
  Twitter  http://twitter.com/peterneubauer
 
  http://www.neo4j.org   - Your high performance graph
 database.
  http://startupbootcamp.org/- Öresund - Innovation happens HERE.
  http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing
 party.
 
 
 
  On Mon, Mar 28, 2011 at 1:54 PM, Clement Honore honor...@gmail.com
  wrote:
   Hi!
  
   Since the 1.0 M5 release, it's possible to get a visual
 representation
 of
   the graph within the web administration tool.
   I've almost the same kind of representation to do in a web
 application
  and I
   wonder which library did you use. Is it something referenced on
 this
 page
  or
   something completely written by yourselves ?
  
   Thanks for the tips!
  
   Clément.
   ___
   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 mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




 --
 Jacob Hansson
 Phone: +46 (0) 763503395
 Twitter: @jakewins

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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Graph visualization in the web admin tool

2011-04-04 Thread Rick Otten
good point.

I've been using it to populate HTML tables.  (Mostly in conjunction with
user actions on a related chart.)  I'm hoping to post an example to the
d3-js list of what I've been doing later this week.



 +1 for D3, but also, it doesn't *have* to generate SVG.  That's the way it
 has been implemented thus far, but it could pretty easily be tweaked to
 conditionally generate VML for older IE browsers.

 -Original Message-
 From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org]
 On Behalf Of Rick Otten
 Sent: Monday, April 04, 2011 10:31 AM
 To: Neo4j user discussions
 Subject: Re: [Neo4j] Graph visualization in the web admin tool

 Another javascript based tool, which is very new, is D3 (Data Driven
 Documents).


 D3 is built by the same guys who came up with Protovis a couple of years
 ago.  [ http://vis.stanford.edu/protovis/ ]   Protovis was much more
 limited in terms of flexible data inputs and scalability to large data
 sets.

 The only caveat, is that D3, like Protovis, generates SVG's.  This means
 that you may have to jump through some tricky hoops to get it to work in
 legacy Internet Explorer browsers. (IE9 is ok.)

 Here is their forced layout:
 http://mbostock.github.com/d3/ex/force.html

 Since it is hot off the presses, the D3 documentation and example sets are
 still evolving daily.  I think it is worth watching.  I've been
 experimenting with D3 for a few weeks now and am really liking it.


 Thanks for the update. For my part, I think I'll give a try to
 Javascript
 Infovis Toolkit (http://thejit.org). I think you should take a look at
 it.
 The API seems very complete and the project is well documented (and
 activ).
 The objects are very customizable, edge should be oriented or not, you
 can
 add events on nodes or edges, change styles... and I like the RGrpah
 visualization ^^ (but ForceDirected is maybe more what you need).

 Kind regards

 2011/3/30 Jacob Hansson jacob.hans...@neotechnology.com

 We opted to change from graphdracula to arbor.js though (today,
 actually),
 because the dracula lib was buggy. My initial reaction to arbor.js is
 very
 positive, although it wasn't quite as straight-forward as dracula to
 use.

 I'd recommend downloading arbor.js and tweaking their example apps to
 get a
 feel for how the lib works. It's been fairly unpainful to work this
 into
 the
 webadmin app, together with neo4js you can rather quickly get up to
 speed
 visualizing data from a neo4j server on the web :)

 /Jacob


 On Mon, Mar 28, 2011 at 3:50 PM, Clement Honore
 honor...@gmail.comwrote:

 Thanks for your answer Peter.

 I will take a look at dracula.
 I've already check this link
 http://wiki.neo4j.org/content/Visualization_options_for_graphs# (this
 is
 the
 on this page on my first post but I forget the link... ^^) and there
 is
 so
 many solutions that I don't know which to choose...

 2011/3/28 Peter Neubauer peter.neuba...@neotechnology.com

  Clement,
  the current iteration is building on http://www.graphdracula.net/
  which is built on top of RaphaelJS I think. There are many others,
  look at
 http://wiki.neo4j.org/content/Visualization_options_for_graphs#
  and pick your choice.
 
  Let us know your experiences and feel free to contribute to the
 webadmin!
 
  Cheers,
 
  /peter neubauer
 
  GTalk:  neubauer.peter
  Skype   peter.neubauer
  Phone   +46 704 106975
  LinkedIn   http://www.linkedin.com/in/neubauer
  Twitter  http://twitter.com/peterneubauer
 
  http://www.neo4j.org   - Your high performance graph
 database.
  http://startupbootcamp.org/- Öresund - Innovation happens HERE.
  http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing
 party.
 
 
 
  On Mon, Mar 28, 2011 at 1:54 PM, Clement Honore honor...@gmail.com
  wrote:
   Hi!
  
   Since the 1.0 M5 release, it's possible to get a visual
 representation
 of
   the graph within the web administration tool.
   I've almost the same kind of representation to do in a web
 application
  and I
   wonder which library did you use. Is it something referenced on
 this
 page
  or
   something completely written by yourselves ?
  
   Thanks for the tips!
  
   Clément.
   ___
   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 mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




 --
 Jacob Hansson
 Phone: +46 (0) 763503395
 Twitter: @jakewins

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



 --
 Rick Otten
 rot...@windfish.net
 O=='=+


 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https

Re: [Neo4j] authentication on neo4j standalone server

2011-03-16 Thread Rick Otten
If I were architecting an authentication and authorization mechanism for
Neo4j REST I would probably look at building an OpenSAML based Service
Provider plugin for the Neo4j webserver.

( In the Identity Management world the Service Provider (SP) takes a look
at your identity, and then grants access to specific resources based on
it. )

Shibboleth is an example of an open source, OpenSAML SP that already has
plugins for Apache HTTPD and iPlanet.  http://shibboleth.internet2.edu/


I would not worry about implementing an IDP (Identity Provider) as part of
Neo4j at all, and instead make sure my SP had the capability to talk to
standard IDP's.

The Kantara Initiative [ http://www.kantarainitiative.org ] seems to be
the main organization developing the standards for configuring SP rule
management systems and communications to IDP's.

I would advocate against building custom authentication and authorization
infrastructure in Neo4j at this time.  As we move forward with horizontal
and cloud infrastructures we will all become increasing familiar with
configuring SP's and then wiring them to existing IDP's.  Anything that
has a custom solution will really stick out and be operationally
challenged.  I think we'll see this model for Identity Management get
plugged into practically everything within a few years.

My applications for Neo4j do not have requirements for resource control
yet, so I haven't explored it beyond merely thinking about it a little.


 right now either use a proxy in front
 or pull the server project and a simple, two line auth filter in front.

 perhaps we should add request-filters as an extension mechanism much like
 the unmanaged extensions to the server.

 M

 Sent from my iBrick4


 Am 16.03.2011 um 05:28 schrieb Scott Farrar sofar...@gmail.com:

 HI,

 I'm having a little trouble finding information on how authentication
 is handled using neo4j. From what I understand, a standalone
 implementation doesn't have this feature. With an embedded solution, I
 understand that you can use, for instance, authentication in Rails.

 Here's what I'd like to do:

 -set up a stand alone server for my graph db
 -use the REST api
 -connect to the server using various methods (Android, Rails, etc)

 My question concerns the best approach for this, assuming that I don't
 want to just anyone writing to the graph.

 thanks
 --Scott
 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] authentication on neo4j standalone server

2011-03-16 Thread Rick Otten
Good question.

I think what I was primarily advocating was implementing an authorization
plugin without implementing an authentication mechanism.

Although I've never worked with it, my read on it is that an OAuth
authorization mechanism would allow you to use OpenID authentication.


It looks like the OAuth folks are participating in the Kantara Initiative 
(or at least they are familiar with each other) so at least to some extent
the technologies appear to be converging.

Most of the SQL databases I'm familiar with each implement their own
authentication and authorization technology.  No two are alike, and it is
hard to jump from one brand of SQL database to another in a heterogeneous
environment with the same credentials.

I think that era is quickly coming to a close.


I've seen several discussions on this list about hybrid database solutions
of which Neo4j is just one piece.  What direction are the other databases
commonly paired with Neo4j moving?



 Hi Rick,

 You'd not advocate OAuth?

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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Forums ?

2011-02-28 Thread Rick Otten
An advantage of forums is that messages can be more easily organized by
general topic.

eg.  building and configuration, REST, Spatial, graph algorithms,
visualizations, etc...

You could create a separate mailing list for each general topic, but the
organization would not be as obvious nor as easy to navigate.

As much as some folks are interested in every aspect of neo4j, some of us
have strong interests in specific topics, and only a vague interest in the
others.

With a forum the more interesting topics could be more easily 'surfed
first' when time crunched.

--

A disadvantage of forums is that it is easier for my employer (via
'Websense') to block it.  Thus far they don't filter email, but the
certainly block more than half the web.  They especially like to block any
websites that support collaboration and interaction with people outside
the company.

--

WRT formatting text.  I've been subscribed to mailing lists since the late
'80's.  Only in the past year have I relented and started using HTML email
for many of my communications.

Surprisingly, for technical email, it is really nice to be able to easily
visually differentiate text and commentary and code and code-changes.

--

FWIW, he nicest forum software I've seen is whatever it is the 'hangout'
series of musical instrument forums uses (I think they wrote it
themselves):

http://www.banjohangout.org
http://www.fiddlehangout.org
etc...  (there are a bunch of them now)

--

I agree that putting all ones eggs in the Google basket makes me nervous
for any emerging business or technology.  They are, first and foremost, a
very large, for profit, company.  They can and should be expected to
always operate in their own best interest which may not align with anyone
else's.

I wouldn't expect to see any sort of Public Utility style regulation any
time in the forseeable future - at least in the current US political
climate.

-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Social Networks And Graph Databases

2011-02-21 Thread Rick Otten
Ok, I'm following this discussion, and now I'm confused.

My understanding was that the (potentially very large) database is
replicated across all instances.

If someone needed to traverse to something that wasn't cached, they'd take
a performance hit, but still be able to get to it.

I had understood the idea behind the load balancing is to minimize
traversals out of cache by grouping similar sets of users on a particular
server.  (That way you don't need a ton of RAM to stash everything in the
database, just the most frequently accessed nodes and relationships
associated with a subset of the users.)




 Hello JT,

 One thing, when you say route requests to specific instances .. does
 that
 imply that node relationships can't span instances ?

 Yes that's right. What I'm suggesting here is that each instance is a full
 replica that works on a subset of requests which are likely to keep the
 caches warm.

 So if you can split your requests (e.g all customers beginning with A go
 to instance 1 ... all customers beginning with Z go to instance 26),
 they will benefit from having warm caches for reading, while the HA
 infrastructure deals with updates across instances transactionally.

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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] 1.2 server

2011-01-06 Thread Rick Otten
FWIW, something I use frequently...

An easy way to capture everything you are sending is to use netcat.

In one window:

$ netcat -p 7474 -l

  Tells netcat to listen on port 7474.

In another window, run your tool which is sending the data.

In your first window you'll see everything you sent.

You can use netcat in other, fancier ways too, but for a quick inspection
of what you are sending to a server somewhere, IMHO, it beats tcpdump any
day.


[ You can do something similar using openssl to see the decrypted traffic
for an https connection, but that is trickier to set up.  If that is a
requirement and seems to hard to figure out on your own ping me offline
and I'll send you some tips for getting it to work. ]

I hope this helps!


 I had a hard time trying to catch the network traffic :)
 This is the TCP content of the package sent to the server:

 GET / HTTP/1.1
 Content-type: application/json
 Accept: application/json
 User-Agent: Java/1.6.0_22
 Host: 192.168.57.110:7474
 Connection: keep-alive

 And in hex format:

    08 00 27 15 e0 4e 00 1f d0 55 8f 99 08 00 45 00  ..'..N...UE.
 0010   00 c2 38 70 40 00 80 06 cd 66 c0 a8 39 a0 c0 a8  @f..9...
 0020   39 6e d7 bb 1d 32 cf 3c c5 0f 2a 2e 49 91 50 18  9n...2...*.I.P.
 0030   40 29 07 ad 00 00 47 45 54 20 2f 20 48 54 54 50  @)GET / HTTP
 0040   2f 31 2e 31 0d 0a 43 6f 6e 74 65 6e 74 2d 74 79  /1.1..Content-ty
 0050   70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f  pe: application/
 0060   6a 73 6f 6e 0d 0a 41 63 63 65 70 74 3a 20 61 70  json..Accept: ap
 0070   70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 0d 0a  plication/json..
 0080   55 73 65 72 2d 41 67 65 6e 74 3a 20 4a 61 76 61  User-Agent: Java
 0090   2f 31 2e 36 2e 30 5f 32 32 0d 0a 48 6f 73 74 3a  /1.6.0_22..Host:
 00a0   20 31 39 32 2e 31 36 38 2e 35 37 2e 31 31 30 3a   192.168.57.110:
 00b0   37 34 37 34 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e  7474..Connection
 00c0   3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 0d 0a  : keep-alive

 Does this help?

 Thanks,
 Miklós Kiss

 2011.01.06. 14:54 keltezéssel, Jim Webber írta:
 Hi again Miklós,

 Oops, I misread your email. You say that you are setting the Accept
 header to the correct media type.

 Can you create a TCP dump for me to take a look at?

 Many thanks,

 Jim
 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Neo4j Spatial question

2011-01-05 Thread Rick Otten
 to
 say
 thanks again.

 Axel



 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] neo4j 1.2 python

2011-01-05 Thread Rick Otten
Thanks Tobias.

Copying the jars into 'dependencies' didn't help.  I still get the same
exception when I try to run --help (or any other setup.py command).

I'm pretty happy with the REST interface.  It is much simpler for me to
manipulate the graph (using python) that way.

Neo4j 1.2 and the REST interface seem to be much faster than neo4j-python 
(1.1) was.  Also they work on an NFS disk.  (The older neo4j-python
configuration I was using would not work over NFS -- too slow.  And
since I didn't have local disk at my disposal I was using /tmp, with
periodic tar/bzip backups to my NFS disk.  It was a less than optimal, and
never destined to be a production solution.  The new architecture has
significantly more promise.)

I think I'll stick with the REST interface for the near future.


 The Python drivers for Neo4j are in dire need of some attention. They will
 get that long overdue attention starting end of January. Until then, if
 all
 you want to do is use Neo4j 1.2 with the python drivers I believe if you
 create a directory called dependencies (next to the setup.py file) and
 put
 the neo4j jar-files there (the ones from the lib directory of the Neo4j
 download) it should work after applying the attached patch (it omits
 downloading dependencies).

 Cheers,
 Tobias

 On Tue, Jan 4, 2011 at 9:32 PM, Rick Otten rot...@windfish.net wrote:

 My older 1.1 neo4j python install got wiped out, unfortunately.

 So I thought I'd take advantage of the opportunity to set up the latest
 neo4j python for 1.2.

 I don't recall how I did it last time, but I had to jump through a lot
 of
 hoops this time around to find a system with an svn client attached to
 the
 Internet, or rather to a system where I had enough authority to be able
 to
 install an svn client...

 (And then once I got the distribution downloaded, there were more hoops
 and hops to get it back to where I could work with it.)

 Is there any way in the future this package could be bundled up made
 available via oldie-fashioned http?


 Anyway, now that I have it, I can't get it to install.  I think it is
 blowing up when it tries to connect to the Internet to download the
 jars.
 I have the neo4j jars already downloaded.  How do I tell it to use my
 local copy instead of some remote set?   Should I edit lines 95-99 in
 the
 setup.py to put a file: url in the pom.xml?

 I tried putting them in my CLASSPATH, but that didn't seem to change
 anything.


 Do I have to put them under an internal webserver to be able to get at
 them?

 It would be nice if at least --help worked without the apparent
 download
 requirement.


 $  python ./setup.py --help
 Traceback (most recent call last):
  File ./setup.py, line 146, in module
main()
  File ./setup.py, line 134, in main
args[attr] = pom[attr]
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 58, in
 __getitem__
element)
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 57, in
 lambda
return self.pattern.sub(lambda match:self[match.groupdict()['var']],
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 54, in
 __getitem__
element = self.parent[path]
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 91, in
 __getitem__
return replacement.get(path, lambda s,x:x)(self, self.__pom[path])
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 56, in
 __getitem__
raise KeyError(path)
 KeyError: 'project.artifactId'



 I'll probably give up on the more integrated neo4j-python approach for
 now
 and try REST client calls from (plain old) Python instead.   Eventually
 I'd like to be able to leverage my old scripts though, so any tips you
 can
 give me for getting this latest version to install would be most
 appreciated.  Thanks!


 --
 Rick Otten
 rot...@windfish.net
 O=='=+


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




 --
 Tobias Ivarsson tobias.ivars...@neotechnology.com
 Hacker, Neo Technology
 www.neotechnology.com
 Cellphone: +46 706 534857
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


[Neo4j] neo4j 1.2 python

2011-01-04 Thread Rick Otten
My older 1.1 neo4j python install got wiped out, unfortunately.

So I thought I'd take advantage of the opportunity to set up the latest
neo4j python for 1.2.

I don't recall how I did it last time, but I had to jump through a lot of
hoops this time around to find a system with an svn client attached to the
Internet, or rather to a system where I had enough authority to be able to
install an svn client...

(And then once I got the distribution downloaded, there were more hoops
and hops to get it back to where I could work with it.)

Is there any way in the future this package could be bundled up made
available via oldie-fashioned http?


Anyway, now that I have it, I can't get it to install.  I think it is
blowing up when it tries to connect to the Internet to download the jars. 
I have the neo4j jars already downloaded.  How do I tell it to use my
local copy instead of some remote set?   Should I edit lines 95-99 in the
setup.py to put a file: url in the pom.xml?

I tried putting them in my CLASSPATH, but that didn't seem to change
anything.


Do I have to put them under an internal webserver to be able to get at them?

It would be nice if at least --help worked without the apparent download
requirement.


$  python ./setup.py --help
Traceback (most recent call last):
  File ./setup.py, line 146, in module
main()
  File ./setup.py, line 134, in main
args[attr] = pom[attr]
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 58, in
__getitem__
element)
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 57, in lambda
return self.pattern.sub(lambda match:self[match.groupdict()['var']],
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 54, in
__getitem__
element = self.parent[path]
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 91, in
__getitem__
return replacement.get(path, lambda s,x:x)(self, self.__pom[path])
  File /projects/n145/src/solaris/neo4j-python/pom.py, line 56, in
__getitem__
raise KeyError(path)
KeyError: 'project.artifactId'



I'll probably give up on the more integrated neo4j-python approach for now
and try REST client calls from (plain old) Python instead.   Eventually
I'd like to be able to leverage my old scripts though, so any tips you can
give me for getting this latest version to install would be most
appreciated.  Thanks!


-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Reference node pains.

2010-12-14 Thread Rick Otten
I vote for it being optional.

 Hi Marko,

 On Fri, Dec 10, 2010 at 7:35 PM, Marko Rodriguez okramma...@gmail.com
 wrote:
 Hello.

 I have one question and a comment:

 QUESTION: Is the reference node always id 0 on a newly created graph?

 Yes.


 COMMENT: By chance, will you guys remove the concept of a reference node
 into the future. I've noticed this to be a pain in the side for people
 moving between various graph systems. Going from Neo4j to iGraph to
 TinkerPop to etc. The reference node, if the user is not conscious,
 begins to build as data is migrated into and from Neo4j graphs. And what
 ensues is a data bug. Perhaps a GraphDatabaseServer = new
 GraphDatabaseService(String directory, boolean createReferenceNode).
 ...?

 The reference node is very helpful in certain use-cases. The current
 implementation could however be improved.

 Would having the option to create a graph without the reference node
 solve the problems you are experiencing?

 -Johan


 Thanks,
 Marko.

 http://markorodriguez.com
 http://tinkerpop.com

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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Status of visualization options

2010-11-22 Thread Rick Otten
I've had pretty good luck loading my neo4j graphs into Gephi using the new
neo4j plugin.

Gephi is a rapidly evolving tool (like neo4j).   It keeps getting better
and more stable all the time.


 Hello all,

 I have successfully imported a large part of my data set into neo4j and
 have done some basic traversals.  I want to start visualizing a portion of
 the graph or of a traversal and was overwhelmed by the amount of options
 listed at http://wiki.neo4j.org/content/Visualization_options_for_graphs

 It is unclear to me which products have actually been successfully
 integrated with neo4j or which was still have ongoing development.   My
 preference is for simplicity over flexibility and to work at the code
 level
 via a library for the generation portion.  The actual viewer can be a
 separate standalone application.  The visualizations themselves will be
 very simple.

 I am not an Eclipse user so I have not looked into Neoclipse.  I have
 worked with Graphviz files before, so to generate a basic .dot file seems
 ideal.  There was some discussion about JUNG lately, so perhaps that is a
 better alternative.  Unfortunately I do not have the time to explore all
 of
 the options.

 Cheers,

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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Good Linux/Windows/OS X install procedure?

2010-10-28 Thread Rick Otten
Since I don't have Administrator privileges on my PC at work, if I wanted
to try the Windows version of this package I would have to have a way to
install and configure it without those privileges.


 On Ubunto I would love to see an apt-get install procedure. I am almost
 ready to decide on our DB and this would makie it easy to get up and
 running
 and trial the technology rather than learn how it fits together.

 Cheers

 Rich

 On Thu, Oct 28, 2010 at 11:27 PM, Peter Neubauer 
 peter.neuba...@neotechnology.com wrote:

 Hi folks,
 while thinking about getting a first Neo4j server package out, is
 there anyone who has good experience with installers? Basically, the
 question is if we should just zip together the distribution, so you
 can run the startup scripts etc yourself, or do an installer that will
 let you choose where to put the files, maybe install a few daemon
 scripts etc.

 Any hints and opinions on what tools to use and how this should look
 like? Have you seen any other project that you think has a great
 installing experience?

 Cheers,

 /peter neubauer

 GTalk:  neubauer.peter
 Skype   peter.neubauer
 Phone   +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter  http://twitter.com/peterneubauer

 http://www.neo4j.org   - Your high performance graph
 database.
 http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.
 ___
 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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Good Linux/Windows/OS X install procedure?

2010-10-28 Thread Rick Otten
://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Graph visualization

2010-10-12 Thread Rick Otten
The first thing that comes to mind as a possibly useful 3D graph
visualization is to lay the graph on a (non-planar) surface, rather than
just in free space.  Ie, over some sort of topography.

The topography could represent a geographical landscape of mountains,
hills, canyons, and valleys... perhaps most relevant when the graph
represents some sort of geographical data set where terrain is
significant.

Or it could represent some other sort of underlying multivariate data. 
(Temperature?)

The force algorithm might be adapted to include a Z dimension gravity,
pulling nodes downhill into valleys.

This sort of 3D graph might remain intuitive, and add value to the data.

I agree though, simply scattering nodes hither and thither in free space
seems like it would be disorienting to those of us who evolved on a
surface.


 Kei, you mean the answer (...point, ...insight) is mostly 'no'?

 I hope that it depends on the type of data you want to show. Although
 it is an issue to create layouts in a 3D space that adds some visual
 value (we are only used to use 2D presentations). Maybe the
 possibility to rotate, fly through and live highlight (by changing
 colors etc.) of nodes and assocs can bring this value.

 Christopher

 On Tuesday, October 12, 2010, Keiichiro Ono kei...@gmail.com wrote:
 Hi.
 Except small and sparse graph, 3D force-directed/spring model
 automatic layouts creates big hairball and it is very hard to browse.
 I've tried igraph and it creates nice 3D visualizations, but in many
 cases, our users (mostly scientists) say, it's cool...but what's the
 point?  Does it give us new insights by extra dimension?

 Are there any people working on this fundamental problem?

 Thanks,
 Kei

 2010/10/12 Alex Averbuch alex.averb...@gmail.com:
 Hey,
 igraph already supports 3D layouts and makes the vertex coordinates
 programmatically accessible. Maybe Jung or something similar (and Java
 based) would offer the same functionality?

 igraph is written in Python so not the idea solution, but for a proof
 of
 concept you could hardcode the coodinates that igraph gives you. Then
 once
 the actual visualizations are working, work on your own (or integrate
 with
 another library) layout algorithms.

 On Tue, Oct 12, 2010 at 11:34 AM, Christopher Schmidt 
 fakod...@googlemail.com wrote:

 I think that the most tricky thing will be the algorithm, that places
 the
 nodes and associations in a 3D space.

 Christopher

 Am 2010 10 12 11:08 schrieb Andreas Kollegger 
 andreas.kolleg...@neotechnology.com:
 That would be super cool. 3D could be beautiful, and possibly allow
 more
 interesting visualizations of a graph. In addition to an overview of
 the
 scene, it would be fun to play with 1st person and 3rd person views
 of
 the
 current node.

 What would be an easy proof-of-concept?

 /Andreas


 On Oct 12, 2010, at 1:19 AM, Andrew Andkjar wrote:

  I have not seen one in my Internet travels, h...
 ___
 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


 --
 Christopher
 twitter: @fakod
 blog: http://blog.fakod.eu
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] Versioning :)

2010-10-06 Thread Rick Otten
Or, you could build a graph database.
:-)

Each of the nodes would be a specific component version.

Dependencies could be mapped with relationships.

If you want to use some particular component version, traverse the graph
to find everything else you need to go with it.

You can test to see if components are disconnected too.

You could use a force algorithm to visualize components that are closely
related and dependent on each other, and components that are leaf nodes.

You could also identify central, core components in a graph model.

Rather than naming the entire graph with a particular version number, you
could include all dependencies and components going back to Neo4j 0.0.0.


 Well, you could let the component versions diverge if you put some
 soft rules behind it like:
 Format A.B.C (major, minor, micro). You could then baseline them on
 minor version level.
 Micro releases are independent. - to make it convenient for the
 module maintainer. He can release that on his own.
 Everything above are streamlined releases that also have (lets say) a
 packaged assembly with all of them together. - to make it simple for
 the enduser.

 Just an idea.
 About (2): definitely let maven versions be in-sync. (why make a
 difference? Aren't they just maven built assemblies too?)

 Toni

 On Wed, Oct 6, 2010 at 3:45 PM, Mattias Persson
 matt...@neotechnology.com wrote:
 (2) I'd definately go with synced version for maven/non-maven stuff.
 (1) is a bit harder since component doesn't mature in the same rate as
 others, but maybe that doesn't matter... having synced versions for the
 components is rather good.

 2010/10/6 Andreas Kollegger andreas.kolleg...@neotechnology.com

 Hello fellow graphytes,

 Today I offer for your consideration one of the classic unsolved
 problems
 of computer science: proper versioning.

 Neo4j is a available as individual library components and also
 pre-packaged
 collections of components. The obvious challenge is to maintain a
 coherent
 set of tested, known-good and compatible components. As we move towards
 regular milestone releases, what's the best way to control and inform
 about
 the various versions that are included?

 Use cases include:

 1. I'm a maven developer, and want coherent dependencies
 2. I develop offline, and want to know what combination of libs to
 download
 3. I deploy neo4j as a server, and want to upgrade a component without
 breaking things

 Assuming that zip files (or similar) will always use the corresponding
 release version, the versioning of the included components could vary.
 For a
 milestone release with an overall group version of 1.2-M1, permutations
 of
 an individual component (the fictional neo4j-foo) version could be:

 Opt. | mvn version   | download version
 ---
 1    | foo-0.7        | foo-0.7
 2    | foo-0.7        | foo-1.2-M1
 3    | foo-1.2-M1     | foo-1.2-M1
 4    | foo-0.7-1.2-M1 | foo-0.7-1.2-M1
 5    | foo-0.7        | foo-0.7-1.2-M1

 Questions include:
 1. Should individual components keep their own versions, or defer to
 the
 grouped release version?
 2. Should the maven version keep in sync with the non-maven version?

 Opinions?

 Cheers,
 Andreas

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




 --
 Mattias Persson, [matt...@neotechnology.com]
 Hacker, Neo Technology
 www.neotechnology.com
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




 --
 Toni Menzel || http://okidokiteam.com
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] How to check if a relation already exists in neo4j

2010-09-29 Thread Rick Otten
 Kassis
  francois_kas...@hotmail.comwrote:
 
 
  Hi all,
  I am using the python version of neo4j.
  if i have n1, n2 as two nodes and KNOWS a relation between n1 and n2
 in
 a
  graph.
  n2.KNOWS(n1): How to check if there is a relation KNOWS between n1
 and
  n2?n2.MAILED(n1, on=123456789) and n2.MAILED(n1, on=987654321): How
 to
  check
  that MAILED already inserted between n1 and n2 with a proprety
  on=987654321?
 
  THX in advance.
  ___
  Neo4j mailing list
  User@lists.neo4j.org
  https://lists.neo4j.org/mailman/listinfo/user
 
 
 
 
  --
  And when the night is cloudy,
  There is still a light that shines on me,
  Shine on until tomorrow, let it be.
 
 
  --
 
  Message: 4
  Date: Wed, 29 Sep 2010 12:35:11 +0300
  From: Francois Kassis francois_kas...@hotmail.com
  Subject: Re: [Neo4j] How to check if a relation already exists in
  neo4j
  To: user@lists.neo4j.org
  Message-ID: snt117-ds69a90bd037fc62559b1bc8d...@phx.gbl
  Content-Type: text/plain; format=flowed; charset=iso-8859-1;
  reply-type=original
 
  Hi again,
  Just to clear my request.
  Please I would like to know how to check if a relationship already
 exists
  using the python version of neo4j.
  EX: n2.CALLED(n1, on=123456789)
n2.CALLED(n1, on=987654321)
  How to check that n2 already CALLED n1 on=123456789.
  THX in advence.
 
 
  Message: 3
  Date: Tue, 28 Sep 2010 11:53:00 +0300
  From: Francois Kassis francois_kas...@hotmail.com
  Subject: [Neo4j] How to check if a relation already exists in neo4j
  graph
  To: user@lists.neo4j.org user@lists.neo4j.org
  Message-ID: snt117-w4930c216010495edd5bf4f8d...@phx.gbl
  Content-Type: text/plain; charset=iso-8859-1
 
 
  Hi all,
  I am using the python version of neo4j.
  if i have n1, n2 as two nodes and KNOWS a relation between n1 and n2
 in
 a
  graph.
  n2.KNOWS(n1): How to check if there is a relation KNOWS between n1
 and
  n2?n2.MAILED(n1, on=123456789) and n2.MAILED(n1, on=987654321): How
 to
  check that MAILED already inserted between n1 and n2 with a proprety
  on=987654321?
 
  THX in advance.
 
  --
 
 
 
 
  --
 
  ___
  User mailing list
  User@lists.neo4j.org
  https://lists.neo4j.org/mailman/listinfo/user
 
 
  End of User Digest, Vol 42, Issue 56
  
 
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user




 --
 Mattias Persson, [matt...@neotechnology.com]
 Hacker, Neo Technology
 www.neotechnology.com
 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] neo4j.py relationship exists

2010-09-08 Thread Rick Otten
Thanks Peter,

  I'm still too much of a Neo4j Newbie to suggest an implementation,
sorry.  As a database user, I imagine a boolean method like this:

  edgeExists(startNode, EndNode, relationshipType , property=value,
property=value)


 Mmh Rick,
 have no immediate input here beside that the problem och deciding if a
 relationship exists between two nodes is a reoccurring one. Would love
 to hear suggestions on how to fix that. Maybe have indexes on
 interesting relationships in certain useful cases? It is not exposed
 to python yet but the new indexing framework might help there,
 https://svn.neo4j.org/laboratory/components/lucene-index/trunk/ if you
 care to check it out?

 Cheers,

 /peter neubauer

 COO and Sales, Neo Technology

 GTalk:      neubauer.peter
 Skype       peter.neubauer
 Phone       +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter      http://twitter.com/peterneubauer

 http://www.neo4j.org               - Your high performance graph database.
 http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.




-- 
Rick Otten
rot...@windfish.net
O=='=+


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


Re: [Neo4j] neo4j.py relationship exists

2010-08-27 Thread Rick Otten
Changing this bit of code from my earlier example at least increments the
'count' property on the relationships.  I keep a list of all the ones I've
created and check them each time I'm requested to create a new one.

It is probably not the most memory or processor efficient way to do it. 
I'd love to hear other ideas for doing this in the neo4j python.


###
RelationshipList = []

## Either create a relationship or increment the count on an existing one:
def create_activity_relationship(previousNode, currentNode):

NodeList = []

for Node in isFollowedBy(previousNode):

NodeList.append(Node)

# If we don't already have a relationship, create one:
if currentNode not in NodeList:

RelationshipList.append(previousNode.FollowedBy(currentNode,
count=1))

# Otherwise, increment the count on the relationship:
else:
for relationship in RelationshipList:
if (relationship.start == previousNode) and (relationship.end
== currentNode):
relationship['count'] = relationship['count'].intValue() + 1


###
 Hello,

   I've been exploring the capabilities and possibilities of neo4j.py
 recently.  It is pretty cool!  Thanks!

   One thing I'm trying to avoid when building my new graph is duplicate
 relationships.  Instead of creating the same relationship twice, I'd
 like to increment a 'count' property on the existing one.

   While it was pretty straightforward to to this for nodes by using an
 Index, I'm struggling to figure out how to do it efficiently for a
 relationship.

   I can tell if a relationship between the nodes exists by using a
 depth(1) traversal.  Unfortunately this approach seems to be really slow
 when I'm adding even just a few thousand nodes and relationships.

   Because the traversal I'm using returns the nodes, I haven't been able
 to figure out how to get the existing relationship in a way that lets me
 increment the count property.

   Here is what I tried to do:

 ###
 neo4j_db = neo4j.GraphDatabase( options.neo4jDB,
classpath=[myClassPath],
jvm=myJVM,
heap_size=128)

 myNodeIndex = neo4j_db.index(mynodes, create=True)

 ## Either create a new node, or increment the count on the existing node:
 def create_my_node(nodeName):

 my_node = myNodeIndex[nodeName]

 if not my_node:
 my_node = neo4j_db.node(name=nodeName, count=0)
 myNodeIndex[nodeName] = my_node

 my_node['count'] = my_node['count'].intValue() + 1

 return my_node

 ## Traversal class used to check if a relationship already exists:
 class isFollowedBy(neo4j.Traversal):

 types = [ neo4j.Outgoing.FollowedBy ]
 order = neo4j.DEPTH_FIRST
 stop = neo4j.StopAtDepth(1)

 def isReturnable(self, position):
 return (not position.is_start
 and position.last_relationship.type == 'FollowedBy')

 ## Either create a new relationship, or increment the count on the
 existing one:
 # ** (This is really slow, and the increment doesn't work.)**
 def create_my_relationship(previousNode, currentNode):

 NodeList = []

 for Node in isFollowedBy(previousNode):

 NodeList.append(Node)

 # If we don't already have a relationship, create one:
 if currentNode not in NodeList:

 previousNode.FollowedBy(currentNode, count=1)

 # Otherwise, increment the count on the relationship:
 else:
 for relationship in previousNode.relationships('OUTGOING'):
 if relationship.getOtherNode(previousNode) == currentNode:
 relationship['count'] = relationship['count'].intValue() +
 1




 --
 Rick Otten
 rot...@windfish.net
 O=='=+


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



-- 
Rick Otten
rot...@windfish.net
O=='=+


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


[Neo4j] neo4j.py relationship exists

2010-08-26 Thread Rick Otten
Hello,

  I've been exploring the capabilities and possibilities of neo4j.py
recently.  It is pretty cool!  Thanks!

  One thing I'm trying to avoid when building my new graph is duplicate
relationships.  Instead of creating the same relationship twice, I'd
like to increment a 'count' property on the existing one.

  While it was pretty straightforward to to this for nodes by using an
Index, I'm struggling to figure out how to do it efficiently for a
relationship.

  I can tell if a relationship between the nodes exists by using a
depth(1) traversal.  Unfortunately this approach seems to be really slow
when I'm adding even just a few thousand nodes and relationships.

  Because the traversal I'm using returns the nodes, I haven't been able
to figure out how to get the existing relationship in a way that lets me
increment the count property.

  Here is what I tried to do:

###
neo4j_db = neo4j.GraphDatabase( options.neo4jDB,
   classpath=[myClassPath],
   jvm=myJVM,
   heap_size=128)

myNodeIndex = neo4j_db.index(mynodes, create=True)

## Either create a new node, or increment the count on the existing node:
def create_my_node(nodeName):

my_node = myNodeIndex[nodeName]

if not my_node:
my_node = neo4j_db.node(name=nodeName, count=0)
myNodeIndex[nodeName] = my_node

my_node['count'] = my_node['count'].intValue() + 1

return my_node

## Traversal class used to check if a relationship already exists:
class isFollowedBy(neo4j.Traversal):

types = [ neo4j.Outgoing.FollowedBy ]
order = neo4j.DEPTH_FIRST
stop = neo4j.StopAtDepth(1)

def isReturnable(self, position):
return (not position.is_start
and position.last_relationship.type == 'FollowedBy')

## Either create a new relationship, or increment the count on the
existing one:
# ** (This is really slow, and the increment doesn't work.)**
def create_my_relationship(previousNode, currentNode):

NodeList = []

for Node in isFollowedBy(previousNode):

NodeList.append(Node)

# If we don't already have a relationship, create one:
if currentNode not in NodeList:

previousNode.FollowedBy(currentNode, count=1)

# Otherwise, increment the count on the relationship:
else:
for relationship in previousNode.relationships('OUTGOING'):
if relationship.getOtherNode(previousNode) == currentNode:
relationship['count'] = relationship['count'].intValue() + 1




-- 
Rick Otten
rot...@windfish.net
O=='=+


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