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

Reply via email to