Beispiel #1
0
 def pull(self):
     query = CypherQuery(self.graph, "START a=node({a}) RETURN a")
     results = query.execute(a=self._id)
     node, = results[0].values
     super(Node, self).properties.clear()
     super(Node, self).properties.update(node.properties)
     self._Node__stale.clear()
def get_movie(title):
    query = CypherQuery(graph, "MATCH (movie:Movie {title:{title}}) "
                               "OPTIONAL MATCH (movie)<-[r]-(person:Person) "
                               "RETURN movie.title as title,"
                               "collect([person.name, head(split(lower(type(r)),'_')), r.roles]) as cast "
                               "LIMIT 1")
    results = query.execute(title=title)
    row = results.data[0]
    return {"title": row["title"], "cast": [dict(zip(("name", "job", "role"), member)) for member in row["cast"]]}
def get_movie(title):
    query = CypherQuery(graph, "MATCH (movie:Movie {title:{title}}) "
                               "OPTIONAL MATCH (movie)<-[r]-(person:Person) "
                               "RETURN movie.title as title,"
                               "collect([person.name, head(split(lower(type(r)),'_')), r.roles]) as cast "
                               "LIMIT 1")
    results = query.execute(title=title)
    row = results.data[0]
    return {"title": row["title"],
            "cast": [dict(zip(("name", "job", "role"), member)) for member in row["cast"]]}
def get_search():
    try:
        q = request.query["q"]
    except KeyError:
        return []
    else:
        query = CypherQuery(graph, "MATCH (movie:Movie) "
                                   "WHERE movie.title =~ {title} "
                                   "RETURN movie")
        results = query.execute(title="(?i).*" + q + ".*")
        response.content_type = "application/json"
        return json.dumps([{"movie": row["movie"].get_cached_properties()} for row in results.data])
Beispiel #5
0
def execute(graph, query, params=None, row_handler=None,
            metadata_handler=None, error_handler=None):
    query = CypherQuery(graph, query)
    data, metadata = [], None
    try:
        results = query.execute(**params or {})
    except CypherError as err:
        if error_handler:
            error_handler(err.message, err.exception, err.stack_trace)
        else:
            raise
    else:
        metadata = Metadata(results.columns)
        if metadata_handler:
            metadata_handler(metadata)
        if row_handler:
            for record in results:
                row_handler(list(record))
            return data, metadata
        else:
            return [list(record) for record in results], metadata
def get_graph():
    query = CypherQuery(graph, "MATCH (m:Movie)<-[:ACTED_IN]-(a:Person) "
                               "RETURN m.title as movie, collect(a.name) as cast "
                               "LIMIT {limit}")
    results = query.execute(limit=request.query.get("limit", 100))
    nodes = []
    rels = []
    i = 0
    for movie, cast in results.data:
        nodes.append({"title": movie, "label": "movie"})
        target = i
        i += 1
        for name in cast:
            actor = {"title": name, "label": "actor"}
            try:
                source = nodes.index(actor)
            except ValueError:
                nodes.append(actor)
                source = i
                i += 1
            rels.append({"source": source, "target": target})
    return {"nodes": nodes, "links": rels}
Beispiel #7
0
import json
from py2neo.neo4j import CypherQuery, GraphDatabaseService, WriteBatch
from py2neo import neo4j

db = neo4j.GraphDatabaseService()

business_index_query = CypherQuery(db, "CREATE INDEX ON :Business(id)")
business_index_query.execute()

category_index_query = CypherQuery(db, "CREATE INDEX ON :Category(name)")
category_index_query.execute()

create_business_query = '''
// MERGE ON categories
CREATE (b:Business {id: {business_id}, name: {name}, lat:{latitude}, lon:{longitude},
	stars: {stars}, review_count: {review_count}})
'''

merge_category_query = '''
MATCH (b:Business {id: {business_id}})
MERGE (c:Category {name: {category}})
CREATE UNIQUE (c)<-[:IS_IN]-(b)
'''

print "Beginning business batch"
with open('data/yelp_academic_dataset_business.json', 'r') as f:
	business_batch = WriteBatch(db)
	count = 0
	for b in (json.loads(l) for l in f):
		business_batch.append_cypher(create_business_query, b)
		count += 1
Beispiel #8
0
import json
from py2neo.neo4j import CypherQuery, GraphDatabaseService, WriteBatch
from py2neo import neo4j

db = neo4j.GraphDatabaseService()

business_index_query = CypherQuery(db, "CREATE INDEX ON :Business(id)")
business_index_query.execute()

category_index_query = CypherQuery(db, "CREATE INDEX ON :Category(name)")
category_index_query.execute()

create_business_query = '''
// MERGE ON categories
CREATE (b:Business {id: {business_id}, name: {name}, lat:{latitude}, lon:{longitude},
	stars: {stars}, review_count: {review_count}})
'''

merge_category_query = '''
MATCH (b:Business {id: {business_id}})
MERGE (c:Category {name: {category}})
CREATE UNIQUE (c)<-[:IS_IN]-(b)
'''

print "Beginning business batch"
with open('data/yelp_academic_dataset_business.json', 'r') as f:
    business_batch = WriteBatch(db)
    count = 0
    for b in (json.loads(l) for l in f):
        business_batch.append_cypher(create_business_query, b)
        count += 1