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

