I should further say after looking more at Spring Data Neo4j ... that it allows an easy Type system layer on top of Neo4j. Is that correct ? The same kind of Type system that Freebase.com has had always.
In fact, Micheal, I would say even say that with Spring Data Neo4j installed, you could almost point users to the Freebase Data modeling style guide as a good reference : http://wiki.freebase.com/wiki/Data_modeling_style_guide On Fri, Oct 14, 2011 at 11:26 AM, Thad Guidry <[email protected]> wrote: > From your quick example, it looks like Spring Data Neo4j is what most folks > really expect out of the box with Neo4j. I know I certainly did when I > installed Neo4j for the first time, last year. Spring Data seems to meet > with my expectation (based on my bottom-up Schema-evolving work on > Freebase.com) > > > On Fri, Oct 14, 2011 at 11:15 AM, Michael Hunger < > [email protected]> wrote: > >> With spring data neo4j you are able to use any domain entity with any >> node, so it is for instance >> possible to project an entity to another when used in a different context. >> >> Otherwise the Spring Data Neo4j config less invasive and more concise than >> the existing model >> but uses the same approach behind the scenes (fields are mapped to >> properties and relationships - 1:1 or 1:n are mapped to relationships). >> >> @NodeEntity >> class Movie { >> String title; >> Set<Actor> actors; >> } >> >> a more elaborate example. >> @NodeEntity >> class Movie { >> @GraphId Long id; >> @Indexed(fulltext=true, indexName="movies") String title; >> @RelatedToVia(type="ACTS_IN", direction=Direction.INCOMING) >> Iterable<Role> roles; >> Person director; >> } >> >> @RelationshipEntity >> class Role { >> @Indexed String title; >> @StartNode Actor actor; >> @EndNode Movie movie; >> } >> >> @NodeEntity >> class Actor { >> String name; >> Gender gender; >> Date birthday; >> public Role actsIn(Movie movie, String role) { >> return relateTo(movie,"ACTS_IN",Role.class).withTitle(role); >> } >> @RelatedTo(type="ACTS_IN") >> Set<Movie> movies; >> } >> >> >> Am 14.10.2011 um 16:14 schrieb Thad Guidry: >> >> > I would suggest breaking down his statement further and fill in the >> blanks >> > to gain even better insight into his conjecture. >> > >> > "it‘s basically a bunch of nodes where you just blob your attributes.‘ >> > Worse than that, to wrap objects around it, you have to have them >> explicitly >> > incorporate their node class, which is ugly, smelly, violates every law >> of >> > separation of concerns and logical vs. physical models." >> > >> > >> > "it's" - Neo4j >> > >> > "to wrap objects around IT" - what is the IT that he is referring to ? >> > >> > "you have to have THEM explicitly incorporate THEIR node class" - what >> is >> > THEM / THEIR really mean for Neo4j here ? >> > >> > "law of separation of concerns" - what and where are we JOINING that >> should >> > be SEPARATING , is it only the Domain objects ? >> > >> > >> > From outside looking in, I have seen others not complete their Domain >> Model >> > as needed with Neo4j, and also make it entirely TOO SIMPLE. Why ? >> Because >> > they might be new to graph databases, or their Domain Model really IS >> NOT >> > complete yet and they need help from others to assist with putting >> together >> > an elegant Domain Model to begin with. Being able to easily wire up a >> > Domain Model is the primary reason they were attracted to graph >> databases in >> > the first place !... to build it out without resorting to defining a >> rigid >> > schema (a SQL table mantra). But many need help in contorting their >> Domain >> > Model over time. To me, Neo4j is already wide open enough to handle >> that >> > contortion and the beauty of Neo4j & graph databases in general. >> > >> > Folks just need better much more detailed Domain Model examples than >> what is >> > available, that would help incredibly so, since many folks have a >> complex >> > Domain Model to begin with (they just do not realize it yet) and they >> are >> > hoping Neo4j will help them quickly wire it up, stretch it out when >> needed, >> > and analyze the hell out of it when the time comes, and stretch it out >> even >> > more as they continue to fill it up and expand their Domain Model. A >> bottom >> > up approach (and I mean really BOTTOM) is the best practice, but it does >> > take thought and research in finding where that generic bottom is at. A >> > "Friend" - what is a Friend, what attributes does a Friend have ? Which >> ones >> > do I care about now and can worry about later ? A "Stock Issuing >> Company", >> > do I need to think of my relationships first for those, or should I >> start >> > with attributes ? Will those attributes be shared with others ? Do I >> care >> > about it now at this early beginning of my Domain Model, or can I wait >> on >> > this ? Should I start with attributes (properties) always, and leave >> > relationships alone until the very end, when I build a Domain Model ? >> (the >> > answer to that last question is YES, because Neo4j actually DOES allow >> you >> > to) >> > >> >> He attacks our pattern of building domain models with Neo4j, calling it >> >>> "ugly", "smelly" and "in violation of every law of separation of >> concerns >> >>> and logical vs. physical models". Is he right? My feeling is that he >> is >> >>> brain washed with too many so called "best practices", but Neo4j has >> been >> >> my >> >>> main model for a long time now, my perspective is likely skewed. I'd >> like >> >> to >> >>> hear your thoughts. >> >> >> > >> > Your main model IS NOT Neo4j. That is your main database that "holds" >> your >> > Domain Model. And if Neo4j is not really doing this from top to bottom, >> > then I would agree with Richard that the Neo4j infrastructure is not in >> the >> > best place right now and might need more work. >> > >> > -- >> > -Thad >> > http://www.freebase.com/view/en/thad_guidry >> > _______________________________________________ >> > Neo4j mailing list >> > [email protected] >> > https://lists.neo4j.org/mailman/listinfo/user >> >> _______________________________________________ >> Neo4j mailing list >> [email protected] >> https://lists.neo4j.org/mailman/listinfo/user >> > > > > -- > -Thad > http://www.freebase.com/view/en/thad_guidry > -- -Thad http://www.freebase.com/view/en/thad_guidry _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

