That's an interesting observation David, about single nodes or not. It seems 
appealing to allow for a completely flexible mapping from any field to 
locations in a supported data store.  That could be a later elaboration to 
fully embrace the idea of classes as projections. Initially, one node per 
projected class is probably confusing enough.

For me, thinking about the class as a projections creates a consistent mental 
model that never feels like cheating. The "underlying node" is no longer 
looking underneath the covers, instead it's just another projection with 
graph-like semantics. Versioning, polymorphism, data-hiding, pivoting to an 
unrelated domain. As you say, David, it's all an interpretation.

Though, I can certainly imagine use cases and business settings where such a 
perspective is abhorrent. 

-Andreas

On Jan 19, 2011, at 7:50 PM, David Montag wrote:

> Hi,
> 
> I think that's a good idea. It makes good use of the schema-free nature of
> the graph database, and also decouples the data from the interpretation of
> the data. I'm not sure it has to be two different modes. Maybe you just use
> one "projection" of the data if that's all you need. Or you use multiple.
> 
> Does this still imply one node per class (projection)? Are you aiming to
> change that too?
> 
> David
> 
> On Wed, Jan 19, 2011 at 3:40 AM, Michael Hunger <
> michael.hun...@neotechnology.com> wrote:
> 
>> Today Andreas Kollegger and I had an interesting discussion about the
>> prevalence of class based mapping of entities to a graph store.
>> 
>> One of the strengths of a graph store is that you don't need a strict
>> schema for your data and you can use lots of different projections to work
>> with it.
>> 
>> Spring Data Graph currently focuses on a single projection of a node to an
>> entity instance (1:1) that traditional ORMs focused on.
>> 
>> But we could do more. We can project the node to many different classes, as
>> long as the properties that are part of the class are there, we can sensibly
>> work with the node.
>> Even if the projection class is not part of the type hierarchy that was
>> originally used to create and populate the node it can be used to access it.
>> 
>> That makes room for some interesting things like:
>> * new domain concepts can be used on top of existing data
>> * get rid of inheritance hierarchies
>> * traverse over a lot of nodes that support some basic properties that form
>> a concept (e.g. Person) using that simple concept during the traversal and
>> from there project those nodes to more concrete concepts as needed (e.g.
>> Employee, Customer)
>> * data/schema evolution / versioning
>> 
>> We can run DATAGRAPH in a strict mode (not default) where it checks that
>> the node requested always fit to the domain class specified (according to
>> the type hierarchy stored in the graph). But we can (and should promote)
>> running it in a more loosely
>> coupled way where this free projection is possible.
>> 
>> I would like to introduce a <T> T NodeBacked.projectTo(Class<T>) method to
>> the aspect so that this projection is easily available.
>> 
>> Looking for feedback on that.
>> 
>> Cheers
>> 
>> Michael
>> _______________________________________________
>> Neo4j mailing list
>> User@lists.neo4j.org
>> https://lists.neo4j.org/mailman/listinfo/user
>> 
> 
> 
> 
> -- 
> David Montag
> Neo Technology, www.neotechnology.com
> Cell: 650.556.4411
> david.mon...@neotechnology.com
> _______________________________________________
> 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