Hi Stef, The Neo4j Cypher queries express a subgraph/path that you want to match in the big graph (nodes and edges with attributes). No fragmentation due to normalization etc., so no joins, it’s more like a regex matcher:
MATCH p=(x:PERSON)-[:KNOWS*]->(:PERSON) WHERE x.name = 'John' RETURN p; Will give you the graph of all persons John knows and all the persons they know (transitive closure). You can also combine multiple queries that one processes the result of the other (pipes and filters). See https://neo4j.com/developer/cypher-query-language/ OutOfMemory only happens if your query selects more data (at any point) than you have memory, as the query execution happens entirely in memory, there seems to be no flush do disk. But there are ways to work around this (albeit resulting in uglier partitioned queries). You can see it in action for my KOWALSKI tool, collecting API clients and extracting call graphs: https://youtu.be/zdx28GnoSRQ <https://youtu.be/zdx28GnoSRQ> Cheers, Manuel > On 31 Dec 2017, at 11:19, Stephane Ducasse <stepharo.s...@gmail.com> wrote: > > Hi manuel > > what kind of queries can we express? > Can be get select node? > Now out of memory is a read falg for me (for moose because we do that > all the time). > > Stef > > > On Tue, Dec 26, 2017 at 10:03 PM, Manuel Leuenberger > <leuenber...@inf.unibe.ch> wrote: >> I’ve always liked Neo4j to persist object graphs. Also has a nice query >> language. The database is not fool-proof (isolation issues, out of memory on >> expensive queries), but works fine for analytics. >> >>> On 25 Dec 2017, at 10:43, Ian Ian <icjohns...@gmail.com> wrote: >>> >>> Hi All, >>> >>> Thoughts of a purely OO nature? >>> >>> :) >> >> >