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: [email protected]
> To: [email protected]
> 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: [email protected]
> > To: [email protected]
> > 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: [email protected]
> > > To: [email protected]
> > > 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
> > > [email protected]
> > > https://lists.neo4j.org/mailman/listinfo/user
> >                                       
> > _______________________________________________
> > Neo4j mailing list
> > [email protected]
> > https://lists.neo4j.org/mailman/listinfo/user
>                                         
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
                                          
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to