# Create a graph
from cog.torque import Graph
g = Graph("people")
g.put("alice","follows","bob")
g.put("bob","follows","fred")
g.put("bob","status","cool_person")
g.put("charlie","follows","bob")
g.put("charlie","follows","dani")
g.put("dani","follows","bob")
g.put("dani","follows","greg")
g.put("dani","status","cool_person")
g.put("emily","follows","fred")
g.put("fred","follows","greg")
g.put("greg","status","cool_person")
g.put("bob","score","5")
g.put("greg","score","10")
g.put("alice","score","7")
g.put("dani","score","100")
# Scan edges
g.scan(3, 'e')
{'result': [{'id': 'status'}, {'id': 'follows'}]}
# Starting from a vertex, follow all outgoing edges and list all vertices
g.v("bob").out().all()
{'result': [{'id': '5'}, {'id': 'fred'}, {'id': 'cool_person'}]}
# Everyone with status 'cool_person'
g.v().has("status", 'cool_person').all()
{'result': [{'id': 'bob'}, {'id': 'dani'}, {'id': 'greg'}]}
# Include edges in the results
g.v().has("follows", "fred").inc().all('e')
{'result': [{'id': 'dani', 'edges': ['follows']}, {'id': 'charlie', 'edges': ['follows']}, {'id': 'alice', 'edges': ['follows']}]}
# starting from a vertex, follow all outgoing edges and count vertices
g.v("bob").out().count()
'3'
# Using filter to chose vertices while traversing the graph.
g.v().filter(func=lambda x: x.startswith("d")).all()
{'result': [{'id': 'dani'}]}
g.v().out("score").filter(func=lambda x: int(x) > 5).inc().all()
{'result': [{'id': 'alice'}, {'id': 'dani'}, {'id': 'greg'}]}
g.v("emily").out("follows").filter(func=lambda x: x.startswith("f")).all()
{'result': [{'id': 'fred'}]}
g.v().tag("from").out("follows").tag("to").view("follows").render()
TIP
render()
is supported only in IPython environment like Jupyter notebook otherwise use view(..).url
# Try this example online in the Playground
CogDB instance in the Playground is loaded with a sample dataset.