Hi Tom, In terms of conceptual model, I prefer to "loosely type" my nodes by the properties they contain. So "Pam Ward" is a person by dint of the firstname and lastname properties on that node.
For tags, I would probably just have several "tagged" relationship from "Conservation of Historic Buildings" to various nodes that are tags (that is, they have a "tag_name" property). The stuff you're doing with doc_node, person_node, etc could perhaps be done with indexing instead to make the core graph less busy. To help a bit with your points on traversals. It's quite do-able to find paths in a graph, that's a very common use case. The traverser API (both the stable one and the experimental one) can help with that. I also have a simple Social Network example (in Java) that covers some of that stuff. Ping me off list if you want a .zip of it. For more intricate use cases where you want someone who matched most attributes, I think you'll end up at the core API making your own traversal algorithm using Node.getRelationships(...), Node.getProperty(...), and Relationship.getEndNode() and friends. Jim _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user