Nigel, is it possible to also do index-lookups in geoff? and use those as nodes or rels or even as hooks for later on?
I'm also toying with two other ideas: #1 using indexes as the third primitive besides nodes and rels in geoff just with a different delimeter (e.g. | as you already have) #2 giving indexes a similar semantics as relationships to category nodes (which is the same for in-graph indexes, where the index-name is the category-type and indexed key-values are properties on the relationship or relationships) I'm not really satisfied with the syntaxes I came up with and would like to brainstorm that. |index| -{"foo":"bar"} ->(bert) some ideas for alternative index syntaxes #add |index:{"foo":"bar"}|+={foo} # replace |index:{"foo":"bar"}|={foo} # remove |index:{"foo":"bar"}|-={foo} #query |index:{"foo":"bar"}| -[:KNOWS]->(bert) |index:"querystring"| -[:KNOWS]->(bert) Am 01.12.2011 um 01:32 schrieb Nigel Small: > Peter: I am happy with the current state of the neo4j-geoff code so feel it > should be stable enough to adopt when you wish to do so. I have also made a > couple of recent updates to the documentation, most notably the GEOFF.md > file. > > Cheers > > Nige > > *Nigel Small* > Phone: +44 7814 638 246 > Blog: http://nigelsmall.name/ > GTalk: ni...@nigelsmall.name > MSN: nasm...@live.co.uk > Skype: technige > Twitter: @technige <https://twitter.com/#%21/technige> > LinkedIn: http://uk.linkedin.com/in/nigelsmall > > > > On 29 November 2011 23:33, Michael Hunger > <michael.hun...@neotechnology.com>wrote: > >> #1 Thanks >> #2 You're probably right >> >> #3 You can do the index lookup outside and pass in the IndexHits<Node> as >> being and Iterator >> #3 I rather thought of {name} for |people| -> {name: {hook}} as a shortcut >> for that >> >> Michael >> >> But #2 and #3 are probably overkill anyway. >> >> Cheers >> >> Michael >> >> Am 29.11.2011 um 23:59 schrieb Nigel Small: >> >>> Hi Michael >>> >>>> Probably better to just return the full map and let the client code deal >>> with it ? (If it isn't interested it would either just ignore the return >>> result or discard it quickly). >>> Done. Now works as: >>> >>> Map<String,PropertyContainer> entities = >> GEOFFLoader.loadIntoNeo4j(reader, >>> db, hooks); >>> Node nodeFoo = (Node) entities.get("(foo)"); >>> Node nodeBar = (Node) entities.get("(bar)"); >>> >>>> Intention behind longs, is when I get them from an external source then >>> they can be used to be look up nodes during import. >>> This can be done but not sure it's the right place... I'm cautious about >>> using IDs directly as they aren't very portable. Also, it's not intuitive >>> whether an ID is for a node or relationship. Would like to get a few >> votes >>> on this - I'm happy to be outvoted if the consensus is to do it! >>> >>>> Also can hooks be used for index lookups? (Just asking) >>> Are you thinking of something like "{People:name=bert}"? If so, this is >>> quite a distance from where we are currently since every token can only >>> refer to a single entity, whereas an index lookup could return multiple >>> results. >>> >>> Nige >>> >>> *Nigel Small* >>> Phone: +44 7814 638 246 >>> Blog: http://nigelsmall.name/ >>> GTalk: ni...@nigelsmall.name >>> MSN: nasm...@live.co.uk >>> Skype: technige >>> Twitter: @technige <https://twitter.com/#%21/technige> >>> LinkedIn: http://uk.linkedin.com/in/nigelsmall >>> >>> >>> >>> On 29 November 2011 22:09, Michael Hunger >>> <michael.hun...@neotechnology.com>wrote: >>> >>>> Hmm good question, that means the namespace keeps everything around >> until >>>> it is gc'ed ? >>>> >>>> Probably better to just return the full map and let the client code deal >>>> with it ? (If it isn't interested it would either just ignore the return >>>> result or discard it quickly). >>>> >>>> Intention behind longs, is when I get them from an external source then >>>> they can be used to be look up nodes during import. >>>> >>>> Also can hooks be used for index lookups? (Just asking) >>>> >>>> Thanks a lot >>>> >>>> Michael >>>> >>>> Am 29.11.2011 um 22:58 schrieb Nigel Small: >>>> >>>>> Hi Michael >>>>> >>>>> Doesn't handle iterables (yet) but should be quite easy to add in. What >>>>> purpose did you have behind longs? >>>>> >>>>> I've just committed a few new methods allowing the Neo4jNamespace >>>> returned >>>>> from a loadIntoNeo4j call to be used to retrieve new entities by name >>>> (or a >>>>> map of such). The new methods are: >>>>> >>>>> public Node getPreexistingNode(String name) >>>>> public Map<String, Node> getPreexistingNodes(String... names) >>>>> public Node getNewlyCreatedNode(String name) >>>>> public Map<String, Node> getNewlyCreatedNodes(String... names) >>>>> public Relationship getPreexistingRelationship(String name) >>>>> public Map<String, Relationship> getPreexistingRelationships(String... >>>>> names) >>>>> public Relationship getNewlyCreatedRelationship(String name) >>>>> public Map<String, Relationship> getNewlyCreatedRelationships(String... >>>>> names) >>>>> >>>>> One of the tests in GraphDescriptionTest illustrates simple usage, >> thus: >>>>> >>>>> Neo4jNamespace ns = GEOFFLoader.loadIntoNeo4j(reader, db, hooks); >>>>> Node nodeFoo = ns.getNewlyCreatedNode("foo"); >>>>> Node nodeBar = ns.getNewlyCreatedNode("bar"); >>>>> >>>>> Hope this helps - I'll have a play with iterables next. >>>>> >>>>> Cheers >>>>> >>>>> Nige >>>>> >>>>> *Nigel Small* >>>>> Phone: +44 7814 638 246 >>>>> Blog: http://nigelsmall.name/ >>>>> GTalk: ni...@nigelsmall.name >>>>> MSN: nasm...@live.co.uk >>>>> Skype: technige >>>>> Twitter: @technige <https://twitter.com/#%21/technige> >>>>> LinkedIn: http://uk.linkedin.com/in/nigelsmall >>>>> >>>>> >>>>> >>>>> On 29 November 2011 15:58, Michael Hunger >>>>> <michael.hun...@neotechnology.com>wrote: >>>>> >>>>>> does it also handle iterables of nodes/rels (and probably Longs?) >>>>>> >>>>>> while thinking about it >>>>>> it would be great if the loader could also return a map of variables >> of >>>>>> the things generated to be used further in processing >>>>>> >>>>>> that could also interesting for cascading geoff and/or cypher >>>>>> >>>>>> cool stuff big thanks >>>>>> >>>>>> michael >>>>>> >>>>>> mobile mail please excuse brevity and typos >>>>>> >>>>>> Am 29.11.2011 um 16:18 schrieb Peter Neubauer < >>>>>> peter.neuba...@neotechnology.com>: >>>>>> >>>>>>> That sounds great! Let me know when you are stable, and I will see if >>>>>>> I can do some more on the server plugin side, so we can shoot in >>>>>>> things there! >>>>>>> >>>>>>> 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 - NOSQL for the Enterprise. >>>>>>> http://startupbootcamp.org/ - Ă–resund - Innovation happens HERE. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Nov 28, 2011 at 9:52 PM, Nigel Small <ni...@nigelsmall.name> >>>>>> wrote: >>>>>>>> Hi Peter >>>>>>>> >>>>>>>> Bulk of the work is now done on the Java version of the GEOFF >>>>>> enhancements. >>>>>>>> There have been some significant changes to the classes and a number >>>> of >>>>>>>> extra tests inserted. The signature of the load method has now been >>>>>>>> extended to: >>>>>>>> >>>>>>>> public static Neo4jNamespace loadIntoNeo4j(Reader reader, >>>>>>>> GraphDatabaseService graphDB, Map<String, ? extends >> PropertyContainer> >>>>>>>> hooks) >>>>>>>> >>>>>>>> ...where the final parameter expects a Map full of names >>>>>>>> Nodes/Relationships which may then be referenced from within the >> GEOFF >>>>>>>> source. >>>>>>>> >>>>>>>> Let me know how you get on and give me a shout if I've forgotten >>>>>> anything >>>>>>>> :-) >>>>>>>> >>>>>>>> Cheers >>>>>>>> >>>>>>>> Nige >>>>>>>> >>>>>>>> *Nigel Small* >>>>>>>> Phone: +44 7814 638 246 >>>>>>>> Blog: http://nigelsmall.name/ >>>>>>>> GTalk: ni...@nigelsmall.name >>>>>>>> MSN: nasm...@live.co.uk >>>>>>>> Skype: technige >>>>>>>> Twitter: @technige <https://twitter.com/#%21/technige> >>>>>>>> LinkedIn: http://uk.linkedin.com/in/nigelsmall >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 23 November 2011 10:12, Peter Neubauer <pe...@neubauer.se> >> wrote: >>>>>>>> >>>>>>>>> Looks great to me Nigel! I think this is a very good first step on >>>>>>>>> parameters. Let me know when you are done with the Java code, would >>>>>>>>> like to bring this into the @Graph annotations after our next >>>>>>>>> milestone release, 1.6.M01. >>>>>>>>> >>>>>>>>> /peter >>>>>>>>> >>>>>>>>> On Tue, Nov 22, 2011 at 10:14 PM, Nigel Small < >> ni...@nigelsmall.name >>>>> >>>>>>>>> wrote: >>>>>>>>>> Hi all >>>>>>>>>> >>>>>>>>>> I have just completed a set of GEOFF enhancements within py2neo >> (as >>>>>> yet >>>>>>>>>> only available from GitHub). Named parameters (hooks) and >> composite >>>>>>>>>> descriptors are now supported, please see the following sample >> file >>>>>> for >>>>>>>>> an >>>>>>>>>> illustration of the new capabilites: >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>> >>>> >> https://github.com/nigelsmall/py2neo/blob/master/src/py2neo-examples/geoff/node-hooks.geoff >>>>>>>>>> >>>>>>>>>> In addition, a change has been made for index entries to use |foo| >>>>>> syntax >>>>>>>>>> instead of {foo} syntax as previously (although the old syntax >> will >>>>>> still >>>>>>>>>> work for now). >>>>>>>>>> >>>>>>>>>> Finally, there is a new wiki page detailing the current format in >>>>>> full: >>>>>>>>>> >>>>>>>>>> https://github.com/nigelsmall/py2neo/wiki/GEOFF >>>>>>>>>> >>>>>>>>>> I will now start planning the set of work required for the >>>> neo4j-geoff >>>>>>>>>> project to bring that up to the same level. >>>>>>>>>> >>>>>>>>>> Cheers >>>>>>>>>> >>>>>>>>>> Nige >>>>>>>>>> >>>>>>>>>> *Nigel Small* >>>>>>>>>> Phone: +44 7814 638 246 >>>>>>>>>> Blog: http://nigelsmall.name/ >>>>>>>>>> GTalk: ni...@nigelsmall.name >>>>>>>>>> MSN: nasm...@live.co.uk >>>>>>>>>> Skype: technige >>>>>>>>>> Twitter: @technige <https://twitter.com/#!/technige> >>>>>>>>>> LinkedIn: http://uk.linkedin.com/in/nigelsmall >>>>>>>>>> _______________________________________________ >>>>>>>>>> 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 >>>>>> >>>>> _______________________________________________ >>>>> 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 _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user