Hi there, I think prototyping a parameter approach to start with would be great! Nigel, you up for it?
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 Sat, Nov 12, 2011 at 12:30 PM, Nigel Small <[email protected]> wrote: > ...noticed my last example didn't render properly, Should have been: > > (dad) {"name":"Nigel"} > (son1) {"name":"Joshua"} > (son2) {"name":"Stephen"} > (dad)-[:FATHER_OF]->(son*) > (son*) {"lastname","Small") > > Hope that works this time! > * > * > *Nigel Small* > Phone: +44 7814 638 246 > Blog: http://nigelsmall.name/ > GTalk: [email protected] > MSN: [email protected] > Skype: technige > Twitter: @technige <https://twitter.com/#!/technige> > LinkedIn: http://uk.linkedin.com/in/nigelsmall > > > > On 12 November 2011 11:26, Nigel Small <[email protected]> wrote: > >> Hi Michael >> >> Completely agree on named parameters - I'd like to support both named and >> positional - both have advantages. >> >> I also like the idea of the {foo} syntax as consistency with Cypher is >> what I have tried to provide all along here. I actually don't believe that >> it will be confusing with JSON (even with the composite descriptor syntax) >> but this notation is unfortunately already used by the index entry syntax: >> >> {my_index}->(my_node) >> >> Having said that, this clash doesn't have to give us a major problem. We >> could deprecate the existing index entry syntax (possibly maintaining >> backward compatibility for a while with a bit of regex jiggery-pokery) and >> replace it with something new, such as: >> >> <my_index>->(my_node) >> >> or >> >> |my_index|->(my_node) >> >> Back to parameters. There's an amazing amount of strength in the concept >> of multiple entities specified by a single token so agree that we should >> look further into that. Behind the scenes, it should be simple enough to >> add multiple entries when one of these is encountered, by iterating through >> the items. Even more Interesting with something like: >> >> {parents}-[:PARENT_OF]->{children} >> >> which could break down to: >> >> (father)-[:PARENT_OF]->(child1) >> (father)-[:PARENT_OF]->(child2) >> (mother)-[:PARENT_OF]->(child1) >> (mother)-[:PARENT_OF]->(child2) >> >> The comma syntax, again, looks very useful. Would this lead to us wanting >> some form of pattern matching as well? >> >> *(dad) {"name":"Nigel"}**(son1) {"name":"Joshua"}**(son2) >> {"name":"Stephen"}**(dad)-[:FATHER_OF]->(son*)**(son*) {"lastname","Small")* >> >> * >> * >> >> *Cheers* >> >> *Nigel Small* >> Phone: +44 7814 638 246 >> Blog: http://nigelsmall.name/ >> GTalk: [email protected] >> MSN: [email protected] >> Skype: technige >> Twitter: @technige <https://twitter.com/#!/technige> >> LinkedIn: http://uk.linkedin.com/in/nigelsmall >> >> >> >> On 12 November 2011 05:44, Michael Hunger < >> [email protected]> wrote: >> >>> Nigel, >>> >>> Sounds good, although I'd rather have named parameters as well, otherwise >>> parameter indexes will easily get unwieldy. >>> >>> I would like to propose to use the same syntax cypher uses for parameters >>> (that's also the syntax used by the batch-inserter) >>> >>> aka. {0} and {name} >>> >>> > (dad)-[:FATHER_OF]->(son2) >>> > {1}-[:FAMILY]->(dad) >>> >>> Might be a bit confusing wrt the json, But I want consistency :) >>> >>> Interesting part would also be when those parameters not only refer to a >>> single node or relationship but an collections of those. >>> >>> So one could take the output of a traversal or cypher query (with aliases >>> or position) and pass them into the geoff reader which then connects or >>> updates all of them appropriately. >>> >>> Allowing us to do mass-updates or structural connections in one go. >>> >>> (dad)-[:FATHER_OF]->{children} >>> {children} {"lastname" : "Small"} >>> >>> Btw. that reminds me of a version of the geoff syntax that might compact >>> many files: >>> > (dad) {"name":"Nigel"} >>> > (son1) {"name":"Joshua"} >>> > (son2) {"name":"Stephen"} >>> > (dad)-[:FATHER_OF]->(son1,son2) >>> > (son1,son2) {"lastname","Small") >>> >>> Michael >>> >>> Am 12.11.2011 um 00:07 schrieb Nigel Small: >>> >>> > Hi Peter >>> > >>> > Imagine we are trying to inject a simple graph, such as the following: >>> > >>> > (dad) {"name":"Nigel"} >>> > (son1) {"name":"Joshua"} >>> > (son2) {"name":"Stephen"} >>> > (dad)-[:FATHER_OF]->(son1) >>> > (dad)-[:FATHER_OF]->(son2) >>> > >>> > Currently, this would be loaded into graphspace without any attachment >>> to >>> > existing structures; a join would have to be made *after* the load. >>> > >>> > If we instead consider parameterising the load, e.g. >>> loadIntoNeo4j(reader, >>> > graphDB, someNode, otherNode, ...), we can reference the supplied nodes >>> > from within the GEOFF data. I think that ($n) notation would be quite >>> > useful here as it is already familiar from bash etc. This might >>> therefore >>> > turn the above subgraph into: >>> > * >>> > >>> > (dad) {"name":"Nigel"} >>> > (son1) {"name":"Joshua"} >>> > (son2) {"name":"Stephen"} >>> > (dad)-[:FATHER_OF]->(son1) >>> > (dad)-[:FATHER_OF]->(son2) >>> > ($1)-[:FAMILY]->(dad) >>> > >>> > ...such that ($1) refers to the first supplied parameter, ($2) would be >>> the >>> > second and so on. ($0) could possibly refer to the reference node of the >>> > destination graph, by definition. >>> > >>> > Hope this makes sense! What do you reckon? >>> > >>> > * >>> > *Nigel Small* >>> > Phone: +44 7814 638 246 >>> > Blog: http://nigelsmall.name/ >>> > GTalk: [email protected] >>> > MSN: [email protected] >>> > Skype: technige >>> > Twitter: @technige <https://twitter.com/#!/technige> >>> > LinkedIn: http://uk.linkedin.com/in/nigelsmall >>> > >>> > >>> > >>> > On 11 November 2011 22:10, Peter Neubauer >>> > <[email protected]>wrote: >>> > >>> >> Nigel, >>> >> On Thu, Nov 10, 2011 at 11:01 PM, Nigel Small <[email protected]> >>> >> wrote: >>> >>> We could possibly create some form of syntax which would designate a >>> >> "this" >>> >>> node, e.g. (@). This could allow a file to reference it's external >>> >> context, >>> >>> in this case the node to which we are submitting the subgraph. >>> >> What would this look like? >>> >> >>> >> /peter >>> >> _______________________________________________ >>> >> Neo4j mailing list >>> >> [email protected] >>> >> https://lists.neo4j.org/mailman/listinfo/user >>> >> >>> > _______________________________________________ >>> > Neo4j mailing list >>> > [email protected] >>> > https://lists.neo4j.org/mailman/listinfo/user >>> >>> _______________________________________________ >>> Neo4j mailing list >>> [email protected] >>> https://lists.neo4j.org/mailman/listinfo/user >>> >> >> > _______________________________________________ > Neo4j mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user > _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

