Comments (4)
Have you given any thought how match should look? I'm thinking something along the lines of:
(q/query
...
(q/match :a
:a (-> (q/out :created) (q/as :b))
:b (q/has :name "lop")
:b (-> (q/in :created) (q/as :c))
:c (q/has :age 29))
(q/select :a :c)
...)
(ie. modeled after core/cond->)
from ogre.
That's pretty. Watching this issue in TP3 for resolution might be good:
https://github.com/tinkerpop/tinkerpop3/issues/463
Discussion around the java/groovy representation of match
from ogre.
That thread looks like tacit endorsement for having a language with macros.
It did however emphasize the importance of as, so this might be better:
(q/query
...
(q/match :a
:a [(q/out :created) :as b]
:b (q/has :name "lop")
:b [(q/in :created) :as :c]
:c (q/has :age 29))
(q/select :a :c)
...)
This one is nice for short match statements, but I still prefer my original suggestion, as I feel it's closer to idiomatic Clojure, while the latter is more of a DSL (I still tried to follow look and feel of ns macro).
from ogre.
Ultimately I implemented this pretty directly as:
clojurewerkz.ogre.core=> (traverse g V (match
#_=> (__ (as :a) (out :created) (as :b))
#_=> (__ (as :b) (has :name "lop"))
#_=> (__ (as :b) (in :created) (as :c))
#_=> (__ (as :c) (has :age 29)))
#_=> (select :a :c) (by :name)
#_=> (into-seq!))
({"a" "marko", "c" "marko"} {"a" "josh", "c" "marko"} {"a" "peter", "c" "marko"})
If there can be improvements, let's open a fresh issue.
from ogre.
Related Issues (20)
- Improve inject() HOT 1
- Deploy 3.3.2.0 to maven HOT 8
- Improve use of Pick
- Support g.io() HOT 3
- value-map and __value-map doesn't work with true as first argument HOT 3
- The documentation would benefit from an example of connecting to AWS Neptune HOT 11
- When I attempt to do require ogre core in my project namespace I get classnotfound issue HOT 5
- What is the best way to pass a collection of relations? HOT 6
- Upgrade to TinkerPop 3.6.1 HOT 4
- Improve use of Column HOT 1
- Consider API improvements around Graph elements HOT 1
- Java sources compilation fails in master HOT 8
- Clean up slf4j logging errors during test runs
- Release 3.0.0.0-beta1 HOT 1
- TinkerGraph not found error HOT 7
- Version 3...-beta2 not in clojars HOT 4
- Vertex ids must be integers HOT 4
- Please update Doc and Guides HOT 11
- Incompatible with Clojure 1.9 / spec HOT 1
- 3.3.0 release HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ogre.