Re:Introducing OpenCypher, the open graph query language pro...
by okram on Friday October 23, 2015 @06:32PM
(#10441603)
Huh. That is a good point. In Gremlin you can chain steps together (e.g. out("knows").out("mother").out("worksFor")) and you can match patterns. So, to be clearer, I should have represented the chain as a one-liner or as a two liner with an indent.
out("knows").aggregate("friends").out("knows").where(not(within("friends")))
OR out("knows").aggregate("friends").
out("knows").where(not(within("friends")))
Note the "." concatenation that ties the two lines together into a chain. When nesting parallel traversals (e.g. match()), the traversal patterns are delineated by ",". . = AND
, = OR
Ha. Thats a generally neat way to think of "." and "," in computing. mult and + ...the algebra.
Re:Introducing OpenCypher, the open graph query language pro...
by jerven on Friday October 23, 2015 @04:47AM
(#10437501)
FYI in SPARQL
SELECT ?foaf
WHERE
{
?me a <USER> .
?me <KNOWS> ?friend . ?friend <KNOWS> ?foaf .
MINUS {:me <KNOWS> ?foaf }
}
OR SELECT ?foaf
WHERE
{
?me a <USER> .
?me <KNOWS>/<KNOWS> ?foaf .
MINUS {:me <KNOWS> ?foaf }
}
I also don't easily see where something should be a method and where it should be a function. Why not `order(by(valueDecr))`? Why not `select("name", count("friends"))`? Why not `where(not().within("friends"))`?