Btw, I added this to the FAQ, http://wiki.neo4j.org/content/FAQ#What_ways_of_encoding.2Fholding_metadata_and_type_of_nodes_and_properties_are_there.3F and will put in there any more suggestions, so please come forth, hackers and coders!
Cheers, /peter neubauer COO and Sales, Neo Technology 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 - Relationships count. http://gremlin.tinkerpop.com - PageRank in 2 lines of code. On Tue, Dec 8, 2009 at 9:24 PM, Peter Neubauer <[email protected]> wrote: > Hi Rick, > there are a number of interesting approaches to this, involving both > ways to retain the metadata: > > 1. RDF and OWL > - basically, every node will maintain a relationship to its type node > (your shadow node), something like x?--RDF:TYPE-->type_node which > contains info on what the type is, what properties etc. > > 2. Neo4j Meta package (http://components.neo4j.org/neo-meta/) > - this is the concept of describing the type of things in code (Java > in this case) and thus in code enforce the restrictions and type > conversions on properties through the code. This does not capture any > meta info in the graph but is easy to do. > > 3. Annotate the nodes with type info > - in this approach, there is a "type" or "classname" property on any > node that is used to derive the type to deserialize/serialize the > object into, the rest of the meta info is contained in the upper code > layers. Andreas Ronges JRuby bindings are using this approach. > > 4. Encode everything into a String property > - this approach means shuffling everything into a string property, > basically treating properties as BLOBs. Works in some cases, but > certainly locks down your data in these properties. > > What is best depends on your domain, and there might be more > approaches out there. I sense that you are asking even for an > extensible type system especially on properties. That is not in scope > of the core graph engine, but I am not sure if in theory it would be > possible to extend the property type system, we would need to discuss > that separately. > > Cheers, > > /peter neubauer > > COO and Sales, Neo Technology > > 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 - Relationships count. > http://gremlin.tinkerpop.com - PageRank in 2 lines of code. > > > > On Tue, Dec 8, 2009 at 8:43 PM, Rick Bullotta > <[email protected]> wrote: >> I can see how relationships could be used to map "is a duck." typing, but >> I'm struggling with how to infer type from properties. In particular, while >> anything could be stuffed into a String, it loses important semantics when >> you do so. I'm not referring to *storage* as a String, which makes plenty >> of sense - it's that the type identity of the source property is lost if you >> do so. I could maintain a "shadow node" of the type metadata that could be >> related to each instance with a property name/property type array, but that >> seems like something that would be useful within the node model itself. >> >> >> >> Types like DateTime, hyperlinks, and so on, while quite easily storable in >> Neo4J, lose useful semantics on the way in. I'd welcome your thoughts on >> how others have managed this type of scenario and other techniques for "meta >> tagging" nodes and properties with type or other semantic info. >> >> >> >> Thanks, >> >> >> >> Rick >> >> _______________________________________________ >> Neo mailing list >> [email protected] >> https://lists.neo4j.org/mailman/listinfo/user >> > _______________________________________________ Neo mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

