NAME
REST::Neo4p::Query - Execute Neo4j Cypher queries
SYNOPSIS
REST::Neo4p->connect('http:/127.0.0.1:7474');
$query = REST::Neo4p::Query->new('START n=node(0) RETURN n');
$query->execute;
$node = $query->fetch->[0];
$node->relate_to($other_node, 'link');
DESCRIPTION
REST::Neo4p::Query encapsulates Neo4j Cypher language queries, executing them via REST::Neo4p::Agent and returning an iterator over the rows, in the spirit of DBI.
Streaming
execute()
captures the Neo4j query response in a temp file. fetch()
iterates over the JSON in the response using JSON::Streaming::Reader. So go ahead and make those 100 meg queries. The tempfile is unlinked after the iterator runs out of rows, or upon object destruction, which ever comes first.
Paths
If your query returns a path, fetch()
returns a REST::Neo4p::Path object from which you can obtain the Nodes and Relationships.
METHODS
- new()
-
$stmt = 'START n=node({node_id}) RETURN n'; $query = REST::Neo4p::Query->new($stmt,{node_id => 1});
Create a new query object. First argument is the Cypher query (required). Second argument is a hashref of parameters (optional).
- execute()
-
$numrows = $query->execute;
Execute the query on the server. Not supported in batch mode.
- fetch()
- fetchrow_arrayref()
-
$query = REST::Neo4p::Query->new('START n=node(0) RETURN n, n.name'); $query->execute; while ($row = $query->fetch) { print 'It works!' if ($row->[0]->get_property('name') == $row->[1]); }
Fetch the next row of returned data (as an arrayref). Nodes are returned as REST::Neo4p::Node objects, relationships are returned as REST::Neo4p::Relationship objects, scalars are returned as-is.
- err(), errstr()
-
$query->execute; if ($query->err) { printf "status code: %d\n", $query->err; printf "error message: %s\n", $query->errstr; }
Returns the HTTP error code and Neo4j server error message if an error was encountered on execution. Set
$query->{RaiseError}
to die immediately (e.g., to catch the exception in aneval
block).
SEE ALSO
REST::Neo4p, REST::Neo4p::Path,REST::Neo4p::Agent.
AUTHOR
Mark A. Jensen
CPAN ID: MAJENSEN
majensen -at- cpan -dot- org
LICENSE
Copyright (c) 2012 Mark A. Jensen. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.