That is cool Niels, I am looking forward to you testing it out, maybe some else people? Also, I would love to see how to query such a structure at the API level. Could you post some nice creation code and the resulting graph so we can see how it looks?
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 Tue, Jul 26, 2011 at 2:44 PM, Niels Hoogeveen <pd_aficion...@hotmail.com> wrote: > > I just ported my own application 12kloc of Scala code to use the Enhance API > and got it working. Of course more thorough testing needs to be done, but it > proves that at least in the case of my own application the Enhanced API can > work as a drop-in replacement. > Niels > >> From: pd_aficion...@hotmail.com >> To: user@lists.neo4j.org >> Date: Tue, 26 Jul 2011 22:13:59 +0200 >> Subject: Re: [Neo4j] Enhanced API and HyperRelationships >> >> >> A first stab at implementing the Enhanced API and HyperRelationships is >> finished. It still needs thorough testing, so this is PRE-ALPHA quality.It >> also still lacks proper documentation (java docs).The source code can be >> found >> at:https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/graphdbA >> description can be found >> at:https://github.com/peterneubauer/graph-collections/wiki/Enhanced-APINiels >> > From: pd_aficion...@hotmail.com >> > To: user@lists.neo4j.org >> > Date: Tue, 26 Jul 2011 01:02:20 +0200 >> > Subject: Re: [Neo4j] Enhanced API and HyperRelationships >> > >> > >> > The implementation of HyperRelationships needs another day of work, though >> > the hard parts are finished now. >> > >> > Time to explain the inner workings of HyperRelationships. >> > >> > HyperRelationships are a generalization of the binary relationships found >> > in Neo4j. >> > >> > Instead of creating a relationship from a node to another node, >> > we define a HyperRelationship as a set of Nodes each having a >> > RelationshipRole within the HyperRelationship. >> > >> > For the binary case the RelationshipRoles are StartNode and EndNode. >> > For HyperRelationships with an arity higher than 2, the Roles need to be >> > defined for each HyperRelationshipType. >> > >> > A HyperRelationship is layed-out in the database as a regular relationship >> > in the binary case. >> > >> > For HyperRelationship with an arity higher than 2, a Node is created >> > subsuming the role of Relationship. >> > From this Node, binary relationships (regular Neo4J relationships) are >> > created for each Element of the relationship. >> > >> > The RelationshipTypes of these binary relationships are a concatenation of >> > the name of the HyperRelationshipType used >> > and the RelationshipRole of the attached Element. >> > >> > Example: >> > >> > Suppose we want to store the fact that Flo and Eddie give Tom, Dick and >> > Harry a Book. >> > >> > This is a ternary relationship, with the following RelationshipRoles: >> > >> > Giver: Flo and Eddie >> > Recipient: Tom, Dick and Harry >> > Gift: Book >> > >> > The GIVE relationship is first created with a Set of Roles (Giver, >> > Recipient and Gift). >> > When the example relation is created the following binary relationships >> > will be create: >> > >> > HyperRelationshipNode --GIVE/#/Giver--> Flo >> > HyperRelationshipNode --GIVE/#/Giver--> Eddie >> > HyperRelationshipNode --GIVE/#/Recipient--> Tom >> > HyperRelationshipNode --GIVE/#/Recipient--> Dick >> > HyperRelationshipNode --GIVE/#/Recipient--> Harry >> > HyperRelationshipNode --GIVE/#/Gift--> Book >> > >> > We can now retrieve all Relationships where Flo is the Giver in a GIVE >> > relationship, >> > simply by concatenating GiVE and Giver into GIVE/#/Giver, >> > and then ask all incoming Relationships with that RelationshipType. >> > >> > This fetches the HyperRelationship nodes and the other attached Elements >> > of the HyperRelationship can be loaded. >> > >> > I added an extra interface FunctionalRelationshipRole, which restricts the >> > number of Elements attached to a RelationshipRole within a >> > HyperRelationship to one. >> > >> > The use of this amounts to something similar to having a >> > getSingleRelationship method, >> > which cannot throw an Exception, because multiple entries with the same >> > RelationshipType cannot be created by design. >> > >> > Niels >> > > From: pd_aficion...@hotmail.com >> > > To: user@lists.neo4j.org >> > > Date: Mon, 25 Jul 2011 02:03:54 +0200 >> > > Subject: [Neo4j] Enhanced API and HyperRelationships >> > > >> > > >> > > Today I wrote a piece about the Enhanced API and about >> > > HyperRelationships, I have been working on over the last couple of days. >> > > >> > > See: https://github.com/peterneubauer/graph-collections/wiki/Enhanced-API >> > > >> > > The API as presented in the graph-collections repo on Git is not feature >> > > complete yet with respect to HyperRelationships. >> > > The interfaces are there, but the implementation only works for binary >> > > relationships at present. Need one more day for the implementation. >> > > >> > > I posted the Wiki page and the source code to open the discussion about >> > > these new features. >> > > >> > > Niels >> > > _______________________________________________ >> > > 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 mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user