Kaj potrebujemo (SUPB):
dbms.security.auth_enabled=false
)Kaj potrebujemo (Python, pip install ...
)
ipython-cypher
ponuja direktivi %%cypher
in %cypher
za uporabo povpreševalnega jezika Cypher v delovnih zvezkih.
%cypher
je namenjen za enovrstične, %%cypher
pa za večvrstične poizvedbe. Uporabljamo lahko izključno v delovnih zvezkih!
%load_ext cypher
%%cypher
MATCH (n) RETURN labels(n), ID(n), n
Graph
¶from py2neo import Graph
graph = Graph() # Ob nastavitvi dbms.security.auth_enabled=false, sicer je potrebna avtentikacija
# v obliko povezovalnega niza
graph.delete_all()
Kreiranje vozlišč z uporabo razreda Node
. Prvi argument je oznaka (labela, tip) vozlišča. Ostali argumenti so poljubne lastnosti (properties) vozlišča v obliki parov ključ = vrednost
.
from py2neo import Node
# Kreiranje vozlišč
nicole = Node("Person", name="Nicole", age=24)
drew = Node("Person", name="Drew", age=20)
mtdew = Node("Drink", name="Mountain Dew", calories=9000)
cokezero = Node("Drink", name="Coke Zero", calories=0)
coke = Node("Manufacturer", name="Coca Cola")
pepsi = Node("Manufacturer", name="Pepsi")
# Kreiranje grafa
graph.create(nicole | drew | mtdew | cokezero | coke | pepsi)
pepsi
Kreiranje povezav med vozlišči z uporabo razreda Relationship
.
from py2neo import Relationship
graph.create(Relationship(nicole, "LIKES", cokezero))
graph.create(Relationship(nicole, "LIKES", mtdew))
graph.create(Relationship(drew, "LIKES", mtdew))
graph.create(Relationship(coke, "MAKES", cokezero))
graph.create(Relationship(pepsi, "MAKES", mtdew))
%%cypher
MATCH (person:Person)-[:LIKES]->(drink:Drink)
RETURN person.name, drink.name, drink.calories
Izvajanje Cypher poizvedb z uporabo metode Graph.cypher.execute
.
query = """
MATCH (person:Person)-[:LIKES]->(drink:Drink)
RETURN person.name AS name, drink.name AS drink
"""
data = graph.run(query)
for d in data:
print(d)
Ob klicu metode Graph.cypher.execute
lahko podamo parametre v parov ključ=vrednost. Parametri v Cypher poizvedbi so poimenovani znotraj zavitih oklepajev.
query = """
MATCH (p:Person)-[:LIKES]->(drink:Drink)
WHERE p.name = {name}
RETURN p.name AS name, AVG(drink.calories) AS avg_calories
"""
data = graph.run(query, name="Nicole") # Parameter {name} dobi vrednost "Nicole"
for d in data:
print(d)
Modul za delo z grafi (omrežji). Omogoča enostaven izris.
import networkx as nx
%matplotlib inline
import matplotlib.pyplot as plt
results = %cypher MATCH p = (:Person)-[:LIKES]->(:Drink) RETURN p
g = results.get_graph()
nx.draw_networkx(g, arrows=True); _=plt.axis('off')
g.nodes(data=True)
nx.degree(g)