Integrated IndexedRelationships functionality into the Enhanced API, so 
relationships of a certain type are maintained in a Btree, while they can be 
manipulated through the API just like any other relationship.
Still need to test this one.
As mentioned earlier today, HyperRelationships and Enhanced API now have a set 
of tests which they pass.

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